본문 바로가기
DB

SQL 정리

by suhsein 2024. 8. 25.
728x90

프로그래머스 고득점 키트 돌리면서 익혔던 문법들 정리

is null과 is not null

다른 비교의 경우 =를 사용하여 비교하지만,
null과 비교할 때는 is를 사용해 비교한다.

alias

칼럼명 as c1
으로 alias를 줄 수 있다. as는 생략이 가능하다. 또한 select에서 alias를 사용하면 출력에서 alias로 칼럼명이 나온다.

Date

Date 타입의 경우 여러 가지 관련 함수가 존재한다.
format을 지정해주지 않으면 기본적으로 다음과 같은 형식으로 출력된다.
2024-03-19 01:29:56 (yyyy-MM-dd hh:mm:ss)

Date 함수

함수명 역할
year() 년도만 반환함
month() 월만 반환함
day() 일만 반환함

month와 day에서 첫글자 0이면 떼고 반환함

SQL date_format 기호

기호 역할 기호 역할
%Y 4자리 년도 %y 2자리 년도
%M 영문 긴 월 %b 영문 짧은 월
%m 숫자 월(두자리) %c 숫자 월(한자리 달 한자리)
%d 숫자 일(두자리) %e 숫자 일(한자리 일 한자리)
%W 영문 긴 요일명 %a 영문 짧은 요일명
%l 시(12h) %H 시(24h)
%i %S
%T hh:mm:ss(24h) %r hh:mm:ss AM/PM(12h)

date_format 함수

date_format(date, '%Y-%m-%d')
1번째 매개변수에는 날짜를, 두번째에는 위 기호를 사용한 형식을 string으로 지정해준다. 그러면 해당 형식에 맞게 출력된다.

order by

order by c1
특정 칼럼에 대한 정렬


asc는 오름차 desc는 내림차(asc는 default이므로 생략 가능)
여러 조건에 대해서 정렬을 하고 싶으면 콤마로 칼럼을 구분하면 된다.

 

대신 우선순위가 높은 정렬부터 왼쪽에 기재한다.
order by c1, c2, ...

group by

group by c
특정 조건을 가진 행들을 하나의 그룹으로 묶는다.

having

group by c having cnt(c) > 2;

group by에 대한 조건을 달 때 사용한다.(반드시 group by와 함께 사용됨. 단독 사용은 안됨)
조건 예시 - 집계함수, like문

Aggregation Function

집계함수는 조건에 맞는 여러 행에 대해서 하나의 출력을 만들어낸다.

함수명 역할
count() 지정된 열에서 같은 열 값을 가지는 행들의 갯수합
min() 지정된 열에서 같은 열 값을 가지는 행들의 최소 value
max() 지정된 열에서 같은 열 값을 가지는 행들의 최대 value
avg() 지정된 열에서 같은 열 값을 가지는 행들의 평균값
sum() 지정된 열에서 같은 열 값을 가지는 행들의 value합

avg, sum의 경우 null인 행은 default 0으로 바꿔서 계산한다.

round, ceiling, floor

반올림, 올림, 내림 함수이다.

limit

limit n
갯수 제한을 할 때 사용한다.
order by와 함께 사용하여 상위 n개, 하위 n개와 같은 행을 뽑아낼 수 있다.

전처리 값 지정

select문에서 특정 칼럼에 대한 값을 일괄적으로 지정할 수 있음

 

select NULL c
칼럼 c의 모든 값이 null로 들어감

 

select IFNULL(c, 'NONE')
칼럼 c에서 어떤 행이 NULL이면 그 행은 NONE으로 값 지정해줌.

728x90