SQL 코테 준비

문재경·2025년 11월 5일

이코테

목록 보기
8/9

기본 구조

SELECT
	'컬럼1', '컬럼2', ...
FROM '테이블명'
WHERE '조건문'
GROUP BY 
HAVING
ORDER BY '컬럼1',  '컬럼2' DESC
LIMIT N

FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY 순으로 실행됨.

DATE_FORMAT

  • 연월일

    • %Y-%m-%d: 2025-07-08
    • %y-%c-%e: 25-7-8
  • 시간 표현

    • %T: hh:mm:SS
    • %I: 12시
    • %H: 24시
    • %i: 분
    • %s: 초
    • %r: hh:mm:ss AM/PM
  • 달, 요일 표현

    • %M: 문자 긴 월; July
    • %b: 문자 짧은 월; Jul
    • %W: 요일 길게; Monday
    • %a: 요일 짧게; Mon
  • YEAR, MONTH, DAY 함수: DATE_FORMAT 자료형에서 연, 월, 일만 추출 가능

JOIN & UNION

  • JOIN

    • 두 개의 테이블을 옆으로 붙임
    • 특정 컬럼을 공유하는 두 개의 데이터를 연결할 때 사용
    • INNER JOIN, LEFT JOIN, RIGHT JOIN
  • UNION

    • 두 개의 테이블을 위아래로 붙임
    • 컬럼 리스트가 동일한 두 개의 데이터를 연결할 때 사용
    • UNION(중복 X), UNION ALL(중복 O)

기타 문법

  • BETWEEN A AND B: A와 B 사이; 주로 특정 기간 사이를 조회할 때 사용
  • IFNULL('컬럼1', 'TEXT'): 컬럼1의 데이터가 NULL이면 'TEXT'로 대체
  • IF('조건', '참일 때', '거짓일 때')
  • LIKE: 문자열 비교 연산자, % 사용해서 와일드카드 적용 가능
  • A & B: A를 이진수로 치환하여 B가 있는지 확인
    • 9 & 3 = 0101 & 0011 = 0001 = 1 -> True
    • 3 & 3 = 0011 & 0011 = 0011 = 3 -> True
    • 6 & 3 = 0110 & 0011 = 0010 = 3 -> True
    • 8 & 3 = 0100 & 0011 = 0000 = 0 -> False
  • CASE
    CASE
    	WHEN ... THEN ...
        WHEN ... THEN ...
        ...
        ELSE
    END
  • NTILE(n) OVER (ORDER BY '컬럼1' ASC/DESC): 컬럼1의 하위 또는 상위 n분위 수
  • WITH: 메모리 상에서 가상의 테이블을 저장
    WITH 테이블명 AS (
    	SELECT ...
        FROM ...
    ) 
  • WITH RECURSIVE: WITH 문으로 만든 가상의 테이블에 대해, 재귀적으로 값을 추가
    WITH RECURSIVE 테이블명 AS (
    	SELECT 1 AS N # 초기값
        UNION ALL
        SELECT N + 1
        FROM 테이블명
        WHERE N < 10 # 종료 조건
    )
    • 1부터 9개의 행으로 구성된 가상의 테이블 생성
profile
안녕하세요...

0개의 댓글