1. SQL 명령어 종류
| 분류 |
명령어 |
설명 |
| DDL |
CREATE, ALTER, DROP |
데이터베이스 객체(테이블 등) 정의/수정/삭제 |
| DML |
INSERT, UPDATE, DELETE |
데이터 조작 |
| DQL |
SELECT |
데이터 조회 |
| DCL |
GRANT, REVOKE |
권한 제어 |
| TCL |
COMMIT, ROLLBACK, SAVEPOINT |
트랜잭션 제어 |
2. SELECT 구문의 구조 및 순서
SELECT 컬럼명
FROM 테이블명
[WHERE 조건]
[GROUP BY 그룹기준]
[HAVING 그룹조건]
[ORDER BY 정렬기준]
- 처리 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
3. 자료형
- 숫자형: INT, FLOAT, DECIMAL(전체,소수)
- 문자형: CHAR(n), VARCHAR(n)
- 날짜형: DATE, DATETIME, TIMESTAMP
4. 연산자 정리
| 종류 |
예시 |
| 산술연산자 |
+, -, *, /, % |
| 비교연산자 |
=, !=, >, <, >=, <= |
| 논리연산자 |
AND, OR, NOT |
| 관계연산자 |
BETWEEN, IN, LIKE, IS NULL |
5. 조건식 예제
WHERE salary BETWEEN 150000 AND 200000
WHERE title LIKE 'S____'
WHERE salary NOT IN (SELECT salary FROM ...)
6. 정렬
ORDER BY first_name DESC, last_name ASC
ORDER BY 1 DESC -- 1번째 컬럼 기준 정렬
7. 별칭
SELECT emp_no AS "사번", CONCAT(first_name, '-', last_name) AS 성명
FROM employees;
8. 함수
단일행 함수
| 종류 |
함수 |
| 형변환 |
CAST(), CONVERT() |
| 제어 |
IF(), IFNULL(), NULLIF(), CASE WHEN THEN END |
| 문자 |
CONCAT(), LENGTH(), SUBSTRING(), UPPER() |
| 숫자 |
ROUND(), FLOOR(), CEIL() |
| 날짜 |
NOW(), CURDATE(), DATEDIFF(), LAST_DAY() |
집계함수 (다중행)
- COUNT(), SUM(), AVG(), MIN(), MAX()
9. GROUP BY / HAVING
SELECT YEAR(hire_date), COUNT(*)
FROM employees
GROUP BY YEAR(hire_date)
HAVING COUNT(*) < 5000
ORDER BY 2 DESC;
10. WITH ROLLUP (집계 추가)
SELECT YEAR(hire_date), IFNULL(gender, '사원수'), COUNT(*)
FROM employees
GROUP BY YEAR(hire_date), gender
WITH ROLLUP;
11. 집합 연산
| 연산자 |
설명 |
| UNION |
중복 제거 합집합 |
| UNION ALL |
중복 허용 합집합 |
12. JOIN vs 집합
- JOIN: 열을 결합 (수평 확장)
- UNION: 행을 결합 (수직 확장)
13. 서브쿼리
| 종류 |
예시 |
| 스칼라 |
SELECT (SELECT MAX(salary) FROM salaries) |
| 인라인뷰 |
FROM (SELECT ...) sub |
| WHERE절 |
WHERE emp_no IN (SELECT ...) |
14. NULL 주의
WHERE col IS NULL
WHERE col IS NOT NULL
-- NOT IN 사용 시 NULL 포함되면 결과 없음 → IFNULL() 사용