mysql

Database/MySQL

[MySQL] 칼럼 값 null, 공백 체크

컬럼 값 null, 공백 체크 NULLIF IS NOT NULL을 사용하여 NULL 값을 체크했으나 아무런 값이 존재하지 않는 칼럼이 그대로 출력되는 경우가 있다. 아마 칼럼 자료형이 문자열일 것이고, 이 경우는 값에 공백이 들어있기 때문이다.. NULLIF() 함수를 사용하여 공백을 먼저 제거한 뒤 NULL 체크를 할 수 있다. NULLIF(A, B) 일 때 A == B이면 True를 NULL을 반환하고, 아니면 A를 반환한다. SELECT * FROM [table] WHERE NULLIF([column], '') IS NOT NULL; ''로 공백을 비교할 수 있으니 해당 칼럼에 저장된 값이 공백인 경우 NULL을 반환한다. TRIM() 함수를 사용해서 공백을 제거하여 확인하는 방법도 있겠지만 그럼 ..

Database

동일한 테이블을 두 번 조인해야 할 때 (join, subquery)

동일한 테이블을 두 번 참조해야 할 때 예를 들어, 다음과 같은 두 개의 테이블이 있다고 가정한다. create table board ( -- 게시글 정보 저장 uid int not null auto_increment comment 'pk', -- uid b_cate_th1_cd varchar(10) not null comment '공통코드 1차', -- 카테고리 1 b_cate_th2_cd varchar(10) not null comment '공통코드 2차', -- 카테고리 2 title varchar(100) not null comment '제목', content text comment '내용', regdt date default (current_date) comment '등록일자' writer va..

Database/MySQL

MySQL Server 연결 시 localhost와 127.0.0.1 차이

MySQL Server 연결 시 localhost와 127.0.0.1 차이 리눅스에서 MySQL 서버 연결 시 host 속성으로 localhost와 127.0.0.1은 차이가 존재한다. > mysql -uroot -p --host=localhost --socket=/tmp/mysql.sock MySQL 소켓 파일을 이용해 접속한다. 이때 호스트를 localhost로 지정하면 Unix domain socket을 이용하여 유닉스의 프로세스 간 통신(IPC, Inter Process Communication)을 하는 것이다. > mysql -uroot -p --host=127.0.0.1 --port=3306 TCP/IP를 통해 127.0.0.1(로컬 호스트)에 접속한다. 이도 자기 서버를 가리키는 루프백 IP..

Setting

Window MySQL 8.0 설치하기

윈도우 MySQL 8.0 가볍게 설치하기 MySQL은 엔터프라이즈와 커뮤니티 버전이 있는데, 엔터프라이즈 버전은 유료이고 커뮤니티 버전은 무료이다. MySQL의 상용화 방식은 오픈 코어 모델(Open Core Model)로, 두 버전의 핵심 기능은 거의 차이가 없으므로 대부분 커뮤니티 버전을 사용한다. 따라서 여기서도 커뮤니티 버전을 설치한다. 공부용으로 설치하는 것이기 때문에 최대한 가볍게 설치한다. MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat..

Database/MySQL

[MySQL] 이번 달 데이터만 가져오기

이번 달 데이터 가져오기 데이터 출력 시 단순 한 달 전 기준이 아닌, 이번 달에 생성된 데이터만 가져와야 하는 경우가 있다. 이전 달 마지막 날짜를 구하여 계산해도 되고, 이번 달의 첫째 날짜를 구하여 계산해도 된다. MySQL에서는 last_day() 함수는 존재하지만 first_day() 함수는 존재하지 않는다. 대체 왜... 이번 달 첫째 날짜 구하기 해당 방법은 날짜 포맷이 정해져 있는 경우에 사용한다. 신나서 쿼리를 작성했으나 그리 좋은 방법은 아니라고 생각된다. 이전 달 마지막 날짜를 구하여 이번 달 데이터만 출력하는 것이 좋아 보인다. select date_format(now(), '%Y-%m-01') from dual; 데이터 포맷 형식이 % Y-%m-%d라고 가정하였을 때의 쿼리이다. ..

Web/게시판 만들기

[Spring Boot] 게시판 만들기 00 - 환경 설정

환경 설정 프로젝트 생성 Spring은 설치되어 있다고 가정합니다. (이클립스에서 Spring 설치하기) 스프링 프로젝트 생성을 먼저 하겠습니다. Spring Starter Project로 생성합니다. 프로젝트 이름을 작성하고, Package는 com.example.coupon으로 해주었습니다. Next를 클릭하여 필요한 Dependcy 설정을 해줍니다. Spring Boot DevTools : 코드 변경 시 서버 재시작을 자동으로 해줍니다. Lombok : Getter, Setter, 생성자 생성을 도와주는 라이브러리인데 필수적이진 않으나 편리합니다. Validation : 유효성 검증을 위한 것입니다. 이 외의 것들은 Web, 데이터베이스 관련입니다. 데이터베이스는 MySQL을 사용할 것이고, MyB..

Web/게시판 만들기

[JSP] 게시판 만들기 07 - 글 삭제 구현

글 삭제 구현 지금까지 만든 게시판은 보안 요소가 전혀 없는 게시판이었습니다. 그래서 글 삭제 부분도 보안 요소는 없습니다(?) 글 삭제는 DELETE 쿼리만 실행하면 되기 때문에 엄청나게 간단합니다. Controller case "/deleteOk.do": command = new DeleteCommand(); command.execute(request, response); viewPage = "deleteOk.jsp"; break; } 삭제 기능은 write나 update 같은 입력 폼이 필요하지 않으므로 deleteOk.do 만 사용합니다. DeleteCommand package com.command; import java.sql.SQLException; import javax.servlet.htt..

Web/게시판 만들기

[JSP] 게시판 만들기 06 - 글 수정 구현

글 수정 구현 하나둘씩 기능을 만들어갈수록 새로 구현하는 기능들이 처음부터 끝까지 다 다른 내용이 아니라, 기존에 구현한 내용들과 어느 정도 유사성을 가진다는 것을 알 수 있습니다. 어떻게 보면 수정 시 필요한 jsp 파일들은 view.jsp와 write.jsp, writeOk.jsp를 섞어놓은 것이라고 볼 수 있습니다. BookController case "/update.do": command = new SelectCommand(); command.execute(request, response); viewPage = "update.jsp"; break; case "/updateOk.do": command = new UpdateCommand(); command.execute(request, respons..

Web/게시판 만들기

[JSP] 게시판 만들기 05 - 글 읽기와 조회수 증가 구현

글 읽기와 조회수 증가 구현 list.do에 있는 목록 중 하나를 클릭 시 해당 글을 상세 보기 하는 기능을 만듭니다. 이때 글을 클릭해서 볼 때마다 조회수도 1 증가시킵니다. 조회수 증가라함은 거창하게 보일 수도 있지만 사실 UPDATE문 하나만 사용하면 됩니다. 😏 view를 위한 SELECT문과 조회수 증가를 위한 UPDATE 문 각각 한 개씩 필요하게 됩니다. Controller case "/view.do": command = new ViewCommand(); command.execute(request, response); viewPage = "view.jsp"; break; ViewCommand package com.command; import java.sql.SQLException; impor..

Programing Language/Java

PreparedStatement - Connection.prepareStatement()

공식 문서 참조 https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html PreparedStatement (Java Platform SE 7 ) Sets the designated parameter to SQL NULL. This version of the method setNull should be used for user-defined types and REF type parameters. Examples of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and named array types. Note: To be portable, docs.oracle.com 데이..

Web/게시판 만들기

[JSP] 게시판 만들기 04 - 글쓰기 구현

전체 글 목록보기 기능에 이어 글 작성 기능을 구현할 것입니다. 글 작성 기능은 글 수정 기능과 매우 유사하기 때문에 작성 기능만 완료하면 수정 기능도 금방 만들 수 있습니다. 글 작성 구현 Controller case "/write.do": viewPage = "write.jsp"; break; case "/writeOk.do": command = new WriteCommand(); command.execute(request, response); viewPage = "writeOk.jsp"; break; Controller 부분의 write.do와 writeOk.do 부분에는 위와 같이 작성합니다. write.do에서는 form 부분만 작성하고, form에서 입력받은 데이터를 데이터베이스에 저장하는 것..

Web/게시판 만들기

[JSP] 게시판 만들기 03 - 전체 글 목록 구현

Controller 작성 Controller 작성은 게시판의 기능을 모두 만들어야 하므로 할 일이 많은 부분입니다. 우선 만들어볼 게시판 기본 기능은 아래와 같습니다. 1. 전체 도서 목록 보기 (== 전체 글 목록 보기) 2. 선택한 글 한 개 읽기 (글 상세 보기) 3. 글 작성 4. 글 수정 5. 글 삭제 전체 도서 목록은 list.do로 요청받을 것이고, 글 한 개 읽기는 view.do로 요청받습니다. 글 작성은 write.do로 요청받는데, 글을 작성하는 페이지와 작성한 글을 데이터베이스에 저장하기 위해 넘어가는 페이지가 필요하므로 writeOk.do도 생성합니다. 글 수정 update도 write와 유사합니다. 글 삭제는 글 작성, 글 수정과는 달리 따로 데이터를 입력하는 폼이 필요하지 않으므..

밈아
'mysql' 태그의 글 목록