컴퓨터보안/웹서버

SQL 문법 예시 및 정리

데이빗제이2 2024. 5. 15. 14:47

데이터베이스와 테이블 구조 예시

데이터베이스: shop_db

테이블: customers   테이블: orders
customer_id name city order_id customer_id order_date status
1 John Doe New York 101 1 2023-01-15 completed
2 Jane Smith Los Angeles 102 2 2023-02-20 pending
3 Alice Brown Chicago 103 1 2023-03-05 completed
4 Bob Johnson New York 104 3 2023-04-10 completed
5 Charlie Lee Chicago 105 4 2023-05-01 cancelled
      106 1 2023-06-12 completed
      107 3 2023-07-23 completed
      108 2 2023-08-30 completed
      109 1 2023-09-14 completed
      110 4 2023-10-19 completed

예시 SQL 문

 

예상 결과:

작성 순서와 의미

 

  1. SELECT & DISTINCT
    • 의미: 반환할 컬럼을 지정하고, 중복된 결과를 제거합니다.
    • 예시: SELECT DISTINCT name, COUNT(order_id) AS order_count
  2. FROM
    • 의미: 데이터를 조회할 테이블을 지정합니다.
    • 예시: FROM customers
  3. JOIN
    • 의미: 여러 테이블에서 데이터를 결합합니다.
    • 예시: JOIN orders ON customers.customer_id = orders.customer_id
  4. WHERE
    • 의미: 조건을 지정하여 필요한 데이터만 필터링합니다.
    • 예시: WHERE orders.status = 'completed'
  5. GROUP BY
    • 의미: 데이터를 그룹화하여 집계 함수와 함께 사용합니다.
    • 예시: GROUP BY name
  6. HAVING
    • 의미: 그룹화된 데이터에 조건을 지정하여 필터링합니다.
    • 예시: HAVING COUNT(order_id) > 1
  7. ORDER BY
    • 의미: 데이터를 정렬합니다.
    • 예시: ORDER BY order_count DESC
  8. LIMIT
    • 의미: 반환할 행의 수를 제한합니다.
    • 예시: LIMIT 5
  9. UNION
    • 의미: 두 개 이상의 SELECT 문의 결과를 결합합니다.
    • 예시: UNION

실행 순서와 설명

  1. FROM & JOIN
    • 설명: customers와 orders 테이블을 결합합니다.
    • 실행: 결합된 테이블 생성.
  2. WHERE
    • 설명: orders.status가 'completed'인 행을 필터링합니다.
    • 실행: 조건에 맞는 데이터 필터링.
  3. GROUP BY
    • 설명: name별로 데이터 그룹화.
    • 실행: 각 name 그룹 생성.
  4. HAVING
    • 설명: 그룹화된 결과에서 COUNT(order_id) > 1인 그룹을 필터링.
    • 실행: 조건에 맞는 그룹 필터링.
  5. SELECT
    • 설명: name과 order_count를 선택.
    • 실행: 필요한 컬럼 선택.
  6. DISTINCT
    • 설명: 중복된 결과 제거.
    • 실행: 중복된 name 제거.
  7. ORDER BY
    • 설명: order_count를 기준으로 내림차순 정렬.
    • 실행: 결과 정렬.
  8. LIMIT
    • 설명: 상위 5개의 행을 반환.
    • 실행: 행 수 제한.
  9. UNION
    • 설명: 두 SELECT 문의 결과를 결합합니다.
    • 실행: 'completed' 상태와 'pending' 상태의 결과를 결합합니다.