진짜 클라이언트에서 배우는 SQL 온라인 강의
이 강의에서는 예제를 데이터베이스 클라이언트에서 직접 실행합니다. 23개 테이블과 약 5만 행으로 구성된 쇼핑몰 샘플을 사용하므로, 조인이나 GROUP BY의 결과도 실제 데이터로 확인할 수 있습니다.
대부분의 예제에는 Planche에서 실행 버튼이 있습니다. 버튼을 누르면 쿼리와 샘플 데이터베이스가 준비된 앱이 열립니다. 설치나 계정은 필요 없고, 데이터는 브라우저 안에서 처리됩니다.
기본 과정
- 데이터베이스는 어떻게 생겼나 테이블, 행, 컬럼, NULL, 기본 키, 쿼리 실행하기
- 행을 읽는 법: SELECT, WHERE, ORDER BY, LIMIT SELECT, 컬럼 고르기, WHERE, ORDER BY, LIMIT, 컬럼 별칭
- 행 걸러내기: WHERE 제대로 쓰기 AND / OR 우선순위, IN, BETWEEN, LIKE, IS NULL
- 테이블 합치기: JOIN INNER JOIN, 다중 테이블 조인, LEFT JOIN, ON과 WHERE, 셀프 조인
- 행 요약하기: GROUP BY COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING, COUNT DISTINCT
- 쿼리 안의 쿼리: 서브쿼리 스칼라 서브쿼리, IN, EXISTS, NOT EXISTS, 파생 테이블, 상관 서브쿼리
- 여러 단계로 나눈 쿼리와 행 사이의 계산: CTE와 윈도우 함수 WITH, 연쇄 CTE, ROW_NUMBER, RANK, DENSE_RANK, SUM OVER, LAG
- 데이터 바꾸기: INSERT, UPDATE, DELETE INSERT, UPDATE, DELETE, 기본 키 충돌, BEGIN / COMMIT / ROLLBACK
- 왜 느릴까: 인덱스와 EXPLAIN EXPLAIN QUERY PLAN, 테이블 스캔, 인덱스 검색, 인덱스를 쓸 수 있는 조건
방언별 비교
- 페이징: LIMIT, OFFSET … FETCH, TOP, ROWNUM LIMIT / OFFSET, OFFSET … FETCH, TOP, ROWNUM, 키셋 페이징
- UPSERT: 없으면 넣고, 있으면 갱신하기 ON CONFLICT DO UPDATE / DO NOTHING, ON DUPLICATE KEY UPDATE, MERGE, INSERT OR REPLACE
- 문자열과 날짜, 엔진별로 문자열 결합, 날짜 포맷, 날짜 차이, COALESCE / IFNULL / ISNULL / NVL
- 두 테이블에 걸친 UPDATE와 DELETE 서브쿼리와 EXISTS 형태, UPDATE … JOIN, UPDATE … FROM, DELETE … USING, 갱신 가능 조인 뷰