SQL
기억 하나도 안나 으아으아 주말 안에 다 정리해두자!
1. SQL 전체 구조 (이거부터 이해)
SELECT 컬럼
FROM 테이블
WHERE 조건
GROUP BY 컬럼
HAVING 조건
ORDER BY 컬럼;
👉 실행 순서 (시험 핵심)
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
2. SELECT / WHERE (가장 기본)
SELECT name, age
FROM users
WHERE age >= 20;
👉 핵심
- WHERE = “행 필터링”
자주 나오는 조건
WHERE age >= 20
WHERE name = '홍길동'
WHERE age BETWEEN 20 AND 30
WHERE name LIKE '김%'
3. JOIN (이거 무조건 나옴)
INNER JOIN
👉 공통 데이터만
SELECT A.name, B.order_id
FROM user A
JOIN orders B ON A.id = B.user_id;
LEFT JOIN
👉 왼쪽 기준 + 없는건 NULL
SELECT A.name, B.order_id
FROM user A
LEFT JOIN orders B ON A.id = B.user_id;
차이 한 줄 정리
- INNER → 둘 다 있는 것만
- LEFT → 왼쪽은 다 살림
4. GROUP BY (집계 핵심)
SELECT category, COUNT(*)
FROM product
GROUP BY category;
👉 의미
- category별로 묶고 개수 세기
5. HAVING (시험 포인트)
SELECT category, COUNT(*)
FROM product
GROUP BY category
HAVING COUNT(*) >= 2;
👉 차이
| 구분 | 역할 |
|---|---|
| WHERE | 그룹 전 필터 |
| HAVING | 그룹 후 필터 |
👉 이거 진짜 많이 나옴
6. ORDER BY
ORDER BY price DESC;
- DESC → 내림차순
- ASC → 오름차순 (기본)
7. SQL 시험에서 자주 나오는 유형
유형 1: 조건 + 조회
SELECT name
FROM user
WHERE age >= 30;
유형 2: JOIN
SELECT A.name, B.amount
FROM user A
JOIN orders B ON A.id = B.user_id;
유형 3: 집계
SELECT user_id, COUNT(*)
FROM orders
GROUP BY user_id;
유형 4: 집계 + 조건 (핵심)
SELECT user_id, COUNT(*)
FROM orders
GROUP BY user_id
HAVING COUNT(*) >= 3;
여기까지가 기본! 및으로는 프로그래머스 풀면서 나온 함수들 정리!
- AVG
- ROUND
- DATE_FORMAT(DATE, %Y-%m-%d)
- IFNULL(인수1, 인수2)
- SUBSTR(문자열, 시작, 뽑을 문자 갯수)