본문 바로가기
알고리즘(코딩테스트)

코딩테스트 SQL 문법 정리

qbang 2021. 10. 9.

SELECT

모든 레코드 조회하기 - 오름차순
select * from 테이블명 order by 정렬기준컬럼 asc;

- 내림차순
select * from 테이블명 order by 정렬기준컬럼 desc;
조건없는 특정 컬럼 조회하기 select 컬럼명 from 테이블명;
조건있는 특정 컬럼 조회하기 - 값이 일치하는 행 가져오기
select 컬럼명 from 테이블명 where 컬럼명 = "값";

- 값이 일치하지 않는 행 가져오기
select 컬럼명 from 테이블명 where 컬럼명 != "값";
여러 기준으로 정렬하기 select * from 테이블명 order by 컬럼명1 asc, 컬럼명2 desc;
상위 N개 조회하기 select * from 테이블명 order by 컬럼명 limit N;

 

MAX / MIN / COUNT / SUM / AVG

특정 컬럼 행들에서의 최대값 구하기 select max(컬럼명) from 테이블명;
특정 컬럼 행들에서의 최소값 구하기 select min(컬럼명) from 테이블명;
컬럼 수 구하기 select count(*) from 테이블명;
특정 컬럼 행들의 합 구하기 select sum(컬럼명) from 테이블명;
특정 컬럼 행들의 평균 구하기 select avg(컬럼명) from 테이블명;

 

DISTINCT

특정 컬럼에서 중복 제거한 행의 개수 세기 select count(distinct(컬럼명)) from 테이블명;

 

NULL

특정 컬럼 값이 null인 행 조회하기 select * from 테이블명 where 컬럼명 is null;
특정 컬럼 값이 null이 아닌 행 조회하기 select * from 테이블명 where 컬럼명 is not null;
null 값을 대체하여 조회하기 select 컬럼명, ifnull(기준컬럼명, "대체할텍스트") as 새로운컬럼명
from 테이블명;

 

GROUP BY

묶은 그룹에 해당하는 행 수 세기 select 컬럼명, count(컬럼명) as 컬럼의새로운이름 from 테이블명 group by 기준컬럼명;
N번 이상 나온 컬럼과 행 수 세기 select 컬럼명, count(컬럼명) as 컬럼의새로운이름 from 테이블명 group by 기준컬럼명 having count(컬럼) >= N;

- 예시
select NAME, count(NAME) as 'CNT' from ANIMAL_INS GROUP BY NAME HAVING count(NAME) >= 1 order by NAME;
N시 이상인 시간대별 행 수 세기 select hour(컬럼명) as 컬럼의새로운이름, count(hour(컬럼명)) as 컬럼의새로운이름 from 테이블명 where hour(컬럼명) >= N group by hour(컬럼명) order by hour(컬럼명);

- 예시(주차시간이 N시 이상 M시 이하인 행 찾기)
select hour(DATETIME) as 'HOUR', count(hour(DATETIME)) as 'CNT' from PARK_OUTS WHERE hour(DATETIME) >= 9 and hour(DATETIME) <= 19 group by hour(DATETIME) order by hour(DATETIME);
count(*)은 null 값을 갖는 행을 포함하여 센다

 

JOIN

left join - 예시(주차장에서 나간 기록은 있지만 들어온 기록은 없는 차 데이터 조회)
select OUTS.CAR_ID from OUTS left outer join INS on OUTS.CAR_ID = INS.CAR_ID where INS.CAR_ID is null;
right join  - 예시(주차장에 들어온 시각이 나간 시각보다 나중인 차 데이터 조회)
select INS.CAR_ID from INS left join OUTS on INS.CAR_ID = OUTS.CAR_ID where INS.DATETIME > OUTS.DATETIME;

 

STRING

string 값 여러 개 검색하기 select NAME from STUDENT where NAME in ('park', 'kim');

 

LIKE

이름에 el이 들어간 데이터 검색하기 select NAME from STUDENT where NAME like "%el%";

 

댓글