Database/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/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..

Database/MySQL

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

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

Database/MySQL

[MySQL] MySQL 8에서 DATE default 현재 날짜

MySQL 8 DATE default 오늘 날짜 MySQL 8버전에서 컬럼이 DATE 타입일 때 default로 현재 날짜를 지정하려고 했는데 now(), current 모두 안되어서 고생을 했던 경험이 있다 😨 DATETIME인 경우 2021-10-20 12:48:32 로 시분초까지 모두 출력하기 때문에 날짜 값만 필요한 경우 값을 한 번 더 처리해야한다는 단점이 존재한다. 그래서 2021-10-20 까지 즉, 날짜 값만 저장하는 DATE를 사용하게 되었다. 컬럼 타입이 DATE 라면 current_date 를 사용해야 현재 날짜를 default 값으로 지정할 수 있다. 컬럼 타입이 DATETIME 이라면 current_time과 current_timestamp, now() 모두 사용 가능하다. cur..

Database/MySQL

[MySQL] DDL 2 - Table

DDL 테이블 생성 CREATE TABLE [테이블명] ( [COLUMN NAME] INT PRIMARY KEY, [COLUMN NAME] VARCHAR(20) NOT NULL, [COLUMN NAME] INT AUTO_INCREMENT, [COLUMN NAME] DATETIME ) PRIMARY KEY : 고유한 키 값을 갖는 필드 AUTO_INCREMENT : 레코드가 생성될 때마다 자동으로 증가 NOT NULL : null 값 허용 안 함 create table items ( int not null auto_increment, content varchar(300), due_date date, `use` int(1) not null default 1, primary key(id) ) create ta..

Database/MySQL

[MySQL] DDL 1 - Database

MySQL이 설치되어있는 상태라면 커맨드 창에서 MySQL에 접속할 수 있다. mysql이 설치되어있는 폴더로 이동해서 > mysql -u [사용자아이디] -p [데이터베이스이름] 위 명령어를 입력하면 접속된다. [데이터베이스이름]은 생략할 수 있다. 아래mysql> 이 뜨는 걸 확인할 수 있다. quit 명령어를 통해 빠져나갈 수 있다. ❗ SQL 명령문은 대소문자를 가리지 않는다. DDL 데이터베이스 데이터베이스 생성 CREATE DATABASE [데이터베이스명]; CREATE DATABASE [데이터베이스명] DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 두 번째 CREATE 문을 이용해 유니코드를 사용하는 데이터베이스를 생성할 수 있다...

밈아
'Database/MySQL' 카테고리의 글 목록