[DB] SQL 주요구문과 실행 순서

·2025년 1월 6일

데이터베이스

목록 보기
9/22
post-thumbnail

SQL 주요 구문

SELECT

  • 최종적으로 반환될 열 선택 및 계산된 열이나 집계 함수 사용
SELECT 고객.이름, SUM(주문.금액) AS 총매출

DISTINCT

  • 중복된 데이터를 제거하고 고유한 값만 반환
SELECT DISTINCT 고객.지역
FROM 고객

FROM

  • 데이터를 가져올 테이블 또는 뷰를 지정
SELECT 고객.ID
FROM 고객

JOIN ON

  • JOIN: 결합할 테이블이나 뷰를 지정하여 데이터를 통합
  • ON: 테이블 간의 결합 조건을 지정
  • INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 있음 (자세한건 조인(JOIN) 포스팅에서)
-- (INNER) JOIN 예제
SELECT 고객.이름, 주문.주문일자
FROM 고객
JOIN 주문 ON 고객.고객ID = 주문.고객ID

WHERE

  • 특정 조건을 만족하는 데이터만 필터링합니다.
SELECT 고객.ID
FROM 고객
WHERE 고객.이름 = '홍길동'

GROUP BY

  • 데이터를 특정 열을 기준으로 그룹화
  • 주로 집계 함수(COUNT, SUM, AVG 등)와 함께 사용
SELECT 고객.지역, COUNT(고객.ID) AS 고객수
FROM 고객
GROUP BY 고객.지역

HAVING

  • GROUP BY로 그룹화된 데이터에 조건을 적용
  • WHERE는 개별 행에 조건을 적용하고, HAVING은 그룹화된 데이터에 적용
SELECT 고객.지역, SUM(주문.금액) AS 총매출
FROM 고객
GROUP BY 고객.지역
HAVING SUM(주문.금액) > 500000

ORDER BY

  • 결과 집합을 특정 열 기준으로 정렬
  • 기본값은 오름차순(ASC), 내림차순은 DESC로 설정
SELECT 고객.이름, SUM(주문.금액) AS 총매출
FROM 고객
GROUP BY 고객.이름
ORDER BY 총매출 DESC

LIMIT / OFFSET

  • LIMIT: 반환할 행(row)의 최대 개수를 지정
  • OFFSET: 반환할 행의 시작 위치를 지정
SELECT 고객.이름, SUM(주문.금액) AS 총매출
FROM 고객
GROUP BY 고객.이름
ORDER BY 총매출 DESC
LIMIT 10 OFFSET 5

SQL 쿼리 실행 순서

SQL 쿼리를 작성할 때, 절들이 작성된 순서와 실제로 데이터베이스 엔진이 절들을 실행하는 순서는 다름

작성순서

SELECT(DISTINCT) -> FROM (JOIN) -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT / OFFSET

SELECT DISTINCT 고객.이름, SUM(주문.금액) AS 총매출
FROM 고객
JOIN 주문 ON 고객.고객ID = 주문.고객ID
WHERE 주문.주문일자 BETWEEN '2024-01-01' AND '2024-12-31'
GROUP BY 고객.이름
HAVING SUM(주문.금액) > 100000
ORDER BY 총매출 DESC
LIMIT 5;

실행순서

FROM (JOIN) -> WHERE -> GROUP BY -> HAVING -> SELECT(DISTINCT) -> ORDER BY -> LIMIT / OFFSET

0개의 댓글