티스토리 뷰
SELECT 문의 구성 요소
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- LIMIT
`SELECT` 문은 다음과 같은 여러가지 절로 구성되어 있습니다. 각 절에 대해 간단히 알아보겠습니다.
SELECT
조회할 컬럼을 선택합니다.
SELECT name, age
FROM
데이터를 조회할 테이블을 지정합니다.
FROM employees
WHERE
조건에 맞는 레코드를 필터링합니다.
WHERE age > 30
GROUP BY
값이 같은 행들을 그룹으로 묶습니다.
GROUP BY department
HAVING
그룹화된 데이터에 조건을 적용하여 필터링합니다.
HAVING COUNT(*) > 5
ORDER BY
데이터들을 정렬합니다.
ORDER BY salary DESC
LIMIT
보여지는 행 수를 제한합니다.
LIMIT 10
처리순서
SQL은 우리가 `SELECT`문을 작성하는 순서와는 다른 순서로 명령을 처리합니다. 처리순서는 `FROM` -> `WHERE` -> `GROUP BY` -> `HAVING` -> `SELECT` -> `ORDER BY` -> `LIMIT` 순으로 처리됩니다.
- FROM: 데이터를 가져올 테이블을 정합니다.
- WHERE: FROM 절에서 가져온 데이터 중 조건에 맞는 행을 필터링합니다.
- GROUP BY: 필터링된 데이터를 지정된 컬럼으로 그룹화합니다.
- HAVING: 그룹화된 데이터에 조건을 적용하여 반환할 컬럼을 정합니다.
- SELECT: 필터링되고 그룹화된 데이터에서 반환할 컬럼을 선택합니다.
- ORDER BY: 최종 결과를 지정된 컬럼을 기준으로 정렬합니다.
- LIMIT: 정렬된 결과에서 반환할 행 수를 제한합니다.
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE age > 30
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY employee_count DESC
LIMIT 10;
- `FROM employees`: `employees` 테이블에서 데이터를 가져옵니다.
- `WHERE age > 30`: 나이가 30보다 큰 직원만 필터링합니다.
- `GROUP BY department`: `department` 컬럼을 기준으로 데이터를 그룹화합니다.
- `HAVING COUNT(*) > 5`: 각 부서에 직원이 5명 이상인 경우만 필터링 됩니다.
- `SELECT department, COUNT(*) AS employee_count`: 부서명과 직원 수를 선택합니다.
- `ORDER BY employee_count DESC`: 직원 수를 기준으로 내림차순으로 정렬합니다.
- `LIMIT 10`: 상위 10개의 결과만 반환합니다.
이 쿼리는 나이가 30세 이상인 직원들을 대상으로 각 부서별 직원 수를 계산하고, 직원 수가 5명 이상인 부서만을 선택하여 직원 수 기준으로 내림차순으로 정렬한 후 상위 10개의 부서를 반환합니다.
'데이터베이스' 카테고리의 다른 글
[데이터베이스] 랜덤 I/O와 순차 I/O 그리고 인덱스 (2) | 2024.11.13 |
---|---|
[SQL] 조인(JOIN)의 종류와 사용법 (0) | 2024.11.07 |
[SQL] VIEW의 개념 / 장단점 / 사용법 (0) | 2024.11.07 |
[데이터베이스] DDL, DML, DCL이 뭘까? (1) | 2024.11.07 |
[데이터베이스] 관계 데이터베이스 모델 (1) | 2024.10.31 |