코딩테스트를 보면 대부분 SQL 한 문제씩은 출제된다.
대부분 간단한 SELECT 문을 출제하거나 GROUP BY, JOIN, INNER를 사용하는 정도의 수준인 것 같다.
코딩테스트를 볼 때마다 프로그래머스에서 SQL 문제를 풀곤 하는데 SQLD를 취득했음에도 좀 지나면 다 까먹어서 정리해 두어야겠다.
SQL을 배워본 사람이 한 번 읽고 정리하기에 도움이 될 만한 내용이다.
내용은 점차 추가할 예정이다(는 암튼 할꺼다 =3).
> DML, DDL, DCL, TCL 이란?
DML (Data Manipulation Language : 데이터 조작어) - SELECT, INSERT, UPDATE, DELETE
데이터베이스의 데이터를 조회, 검색하거나 테이블에 들어있는 데이터에 변형(삽입, 수정, 삭제)하는 명령어
DDL (Data Definition Language : 데이터 정의어) - CREATE, ALTER, DROP, RENAME, TRUNCATE
테이블과 같은 데이터 구조를 정의(생성, 변경, 삭제, 이름 변경)하는데 사용되는 명령어
DCL (Data Control Language : 데이터 제어어) - GRANT, REVOKE
데이터베이스에 접근하고 사용할 수 있도록 권한을 주거나 회수하는 명령어
TCL (Transaction Control Language : 트랜잭션 제어어) - COMMIT, ROLLBACK, SAVEPOINT
트랜잭션을 제어하는 명령어
> SELECT 문
SELECT : 조회할 데이터 선택
FROM : 테이블 선택
ORDER BY : 정렬
기본 오름차순(ASC) 내림차순(DESC를 붙임)
WHERE : 조건
= : 일치하는 데이터
!=, <> : 일치하지 않는 데이터
>, <, >=, <= : 대소비교
AND, OR : 여러 개의 조건을 함께 사용해야 하는 경우에 사용
DISTINCT : 중복 제거
COUNT : 개수 세기
AS : 명명
LIMIT : 제한
GROUP BY : 테이블을 그룹 지음
HAVING : GROUP BY를 사용할 때 WHERE 대신 사용
BETWEEN A AND B : A와 B 사이(A 이상 B 이하)에 해당하는 데이터
IN() : 포함되는 것 찾기
LIKE : 포함 여부 찾기
_ : 어떤 값이든 상관없이 한 개의 문자 데이터
% : 길이와 상관없이(없는 경우도 포함) 모든 문자 데이터
> NULL
IS NULL : 널값인지 체크
IS NOT NULL : 널이 아닌지 체크
IFNULL(A, B) : A의 결과값이 NULL이면 B의 값을 출력
ISNULL(A, B) : A의 결과값이 NULL이면 B의 값을 출력
NULLIF(A, B) : A와 B가 같으면 NULL, 같지 않으면 A를 출력
> DATE
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND : 날짜 추출
SYSDATE() : 현재 시간 출력 (함수 호출 시점) //2023-01-25 06:53:22
NOW(): 현재 시간 출력 (쿼리 단위)
DATE() : 날짜 형식 // 'YYYY-MM-DD' 형식
TIME() : 시간 형식 // 'hh:mm:ss' 형식
DATE_FORMAT(,) : 원하는 날짜 출력 포맷 지정
> IF문
IF(A,B,C) : A가 참이면 B, 거짓이면 C 반환
IF 조건문 THEN
실행문
ELSEIF 조건문 THEN
실행문
...
ELSE
실행문
END IF
CASE
WHEN 조건문 THEN 실행문
WHEN 조건문 THEN 실행문
..,
ELSE 실행문
END CASE
> JOIN : 테이블 결합
> UNION, INTERSECT, EXCEPT
> 문자형
> 숫자형
댓글