컴퓨터보안/웹서버
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 문
예상 결과:
작성 순서와 의미
- SELECT & DISTINCT
- 의미: 반환할 컬럼을 지정하고, 중복된 결과를 제거합니다.
- 예시: SELECT DISTINCT name, COUNT(order_id) AS order_count
- FROM
- 의미: 데이터를 조회할 테이블을 지정합니다.
- 예시: FROM customers
- JOIN
- 의미: 여러 테이블에서 데이터를 결합합니다.
- 예시: JOIN orders ON customers.customer_id = orders.customer_id
- WHERE
- 의미: 조건을 지정하여 필요한 데이터만 필터링합니다.
- 예시: WHERE orders.status = 'completed'
- GROUP BY
- 의미: 데이터를 그룹화하여 집계 함수와 함께 사용합니다.
- 예시: GROUP BY name
- HAVING
- 의미: 그룹화된 데이터에 조건을 지정하여 필터링합니다.
- 예시: HAVING COUNT(order_id) > 1
- ORDER BY
- 의미: 데이터를 정렬합니다.
- 예시: ORDER BY order_count DESC
- LIMIT
- 의미: 반환할 행의 수를 제한합니다.
- 예시: LIMIT 5
- UNION
- 의미: 두 개 이상의 SELECT 문의 결과를 결합합니다.
- 예시: UNION
실행 순서와 설명
- FROM & JOIN
- 설명: customers와 orders 테이블을 결합합니다.
- 실행: 결합된 테이블 생성.
- WHERE
- 설명: orders.status가 'completed'인 행을 필터링합니다.
- 실행: 조건에 맞는 데이터 필터링.
- GROUP BY
- 설명: name별로 데이터 그룹화.
- 실행: 각 name 그룹 생성.
- HAVING
- 설명: 그룹화된 결과에서 COUNT(order_id) > 1인 그룹을 필터링.
- 실행: 조건에 맞는 그룹 필터링.
- SELECT
- 설명: name과 order_count를 선택.
- 실행: 필요한 컬럼 선택.
- DISTINCT
- 설명: 중복된 결과 제거.
- 실행: 중복된 name 제거.
- ORDER BY
- 설명: order_count를 기준으로 내림차순 정렬.
- 실행: 결과 정렬.
- LIMIT
- 설명: 상위 5개의 행을 반환.
- 실행: 행 수 제한.
- UNION
- 설명: 두 SELECT 문의 결과를 결합합니다.
- 실행: 'completed' 상태와 'pending' 상태의 결과를 결합합니다.