SQL

기억 하나도 안나 으아으아 주말 안에 다 정리해두자!

1. SQL 전체 구조 (이거부터 이해)

SELECT 컬럼
FROM 테이블
WHERE 조건
GROUP BY 컬럼
HAVING 조건
ORDER BY 컬럼;

👉 실행 순서 (시험 핵심)

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. 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(문자열, 시작, 뽑을 문자 갯수)

results matching ""

    No results matching ""