Learning
레슨 8 / 8·15분

SQL 레퍼런스

SQL 명령어 분류

  • DDL (Data Definition Language) — CREATE, ALTER, DROP, TRUNCATE
  • DML (Data Manipulation Language) — SELECT, INSERT, UPDATE, DELETE
  • DCL (Data Control Language) — GRANT, REVOKE
  • TCL (Transaction Control Language) — COMMIT, ROLLBACK, SAVEPOINT

SELECT 절 실행 순서

sql
-- SQL 논리적 실행 순서 (작성 순서와 다름!)
-- 1. FROM     — 테이블 지정
-- 2. JOIN     — 테이블 결합
-- 3. WHERE    — 행 필터링
-- 4. GROUP BY — 그룹화
-- 5. HAVING   — 그룹 필터링
-- 6. SELECT   — 열 선택
-- 7. DISTINCT — 중복 제거
-- 8. ORDER BY — 정렬
-- 9. LIMIT    — 결과 개수 제한

-- 예시
SELECT department, AVG(salary) AS avg_sal  -- 6
FROM employees                              -- 1
WHERE hire_date >= '2023-01-01'            -- 3
GROUP BY department                         -- 4
HAVING AVG(salary) > 50000                  -- 5
ORDER BY avg_sal DESC                       -- 8
LIMIT 5;                                    -- 9

주요 데이터 타입

  • INT / BIGINT — 정수
  • DECIMAL(p, s) — 정확한 소수 (금액에 사용)
  • VARCHAR(n) — 가변 길이 문자열 (최대 n자)
  • TEXT — 긴 문자열 (최대 65,535 바이트)
  • DATE — 날짜 (YYYY-MM-DD)
  • TIMESTAMP — 날짜+시간 (타임존 포함)
  • BOOLEAN — 참/거짓 (MySQL에서는 TINYINT(1))
  • JSON — JSON 데이터 (MySQL 5.7+, PostgreSQL)

자주 사용되는 함수

sql
-- 문자열 함수
SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    UPPER(name) AS upper_name,
    LOWER(name) AS lower_name,
    LENGTH(name) AS name_length,
    SUBSTRING(name, 1, 3) AS short_name,
    TRIM(name) AS trimmed,
    REPLACE(phone, '-', '') AS clean_phone
FROM employees;

-- 날짜 함수
SELECT
    NOW() AS current_datetime,
    CURDATE() AS current_date_only,
    DATE_FORMAT(hire_date, '%Y년 %m월 %d일') AS formatted,
    DATEDIFF(NOW(), hire_date) AS days_worked,
    DATE_ADD(hire_date, INTERVAL 1 YEAR) AS anniversary
FROM employees;

-- 조건 함수
SELECT name,
    COALESCE(phone, '번호없음') AS phone,
    IFNULL(manager_id, 0) AS manager,
    CASE
        WHEN salary >= 70000 THEN '상'
        WHEN salary >= 50000 THEN '중'
        ELSE '하'
    END AS salary_grade
FROM employees;

JOIN 요약

  • INNER JOIN — 양쪽 모두 일치하는 행만
  • LEFT JOIN — 왼쪽 전체 + 오른쪽 일치 (없으면 NULL)
  • RIGHT JOIN — 오른쪽 전체 + 왼쪽 일치 (없으면 NULL)
  • FULL OUTER JOIN — 양쪽 전체 (MySQL 미지원, UNION으로 대체)
  • CROSS JOIN — 카르테시안 곱 (모든 조합)
  • SELF JOIN — 같은 테이블을 별칭으로 두 번 참조
💡

각 RDBMS마다 문법 차이가 있습니다. MySQL은 LIMIT, PostgreSQL은 LIMIT/OFFSET, SQL Server는 TOP, Oracle은 ROWNUM을 사용합니다. 표준 SQL(ANSI SQL)을 먼저 익히고, 사용하는 DB의 고유 문법을 추가로 학습하세요.