레슨 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의 고유 문법을 추가로 학습하세요.