SELECT
0개 혹은 그 이상의 테이블에서 데이터 행을 검색합니다.
주의
MySQL 데이터 원본 information_schema의 비표준 테이블은 SELECT 구문으로 쿼리가 되지 않습니다. (TABLE NOT FOUND)
비표준 테이블에 대한 정보는 MySQL 공식문서를 참조해주세요.
개요
[ WITH with_query [, ...] ]
SELECT [ ALL | DISTINCT ] select_expression [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
[ HAVING condition]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] SELECT ]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]
[ OFFSET count [ ROW | ROWS ] ]
[ LIMIT { count | ALL } ]
파라미터
[ WITH with_query [, ...] ]
- WITH 절은 쿼리 내에서 서브 쿼리를 정의하고 사용할 수 있게 만들어줍니다. 중첩 쿼리를 제거하거나 간소화할 수 있습니다.
SELECT [ ALL | DISTINCT ] select_expression [, ...]
- SELECT 절에서 쿼리의 출력을 결정합니다. ALL을 사용하는 경우 모든 행이 포함되며, DISTINCT를 사용하면 고유한 행만 얻을 수 있습니다.
- 기본 동작은
ALL
입니다.
[ FROM from_item [, ...] ]
- FROM 절에서 데이터 행을 검색하기 위한 데이터 소스를 정의합니다.
from_item
으로는 다음과 같은 형태가 올 수 있습니다.
table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
from_item join_type from_item
[ ON join_condition | USING ( join_column [, ...] ) ]
-
join_type
은 다음과 같습니다.- [ INNER ] JOIN
- LEFT [ OUTER ] JOIN
- RIGHT [ OUTER ] JOIN
- FULL [ OUTER ] JOIN
- CROSS JOIN
[ WHERE condition ]
- condition으로 지정한 조건에 따라 출력할 데이터 행을 필터링 하고자 할 때 WHERE 절을 사용합니다.
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
-
GROUP BY 절은 결과를 특정 열의 값에 따라 그룹화하는 데 사용됩니다. 이 절을 사용하면 동일한 값을 가진 행들을 묶어 집계 함수를 적용할 수 있습니다.
-
grouping_element
은 다음과 같습니다.GROUPING SETS ( ( column [, ...] ) [, ...] )
CUBE ( column [, ...] )
ROLLUP ( column [, ...] )
- GROUPING SETS ( ( column [, ...] ) [, ...] ) : 여러 가지 방법으로 데이터를 그룹화할 수 있습니다. 한 번의 쿼리로 다양한 집계 결과를 쉽게 얻을 수 있습니다. 그룹화에 포함되지 않은 열은 NULL로 설정됩니다.
- CUBE ( column [, ...] ) : 다차원 집계를 수행할 수 있게 해주는 기능으로, 모든 조합의 그룹을 생성합니다. 각 조합의 값이 없을 경우, 해당 그룹에 대해 NULL로 표시됩니다.
- ROLLUP ( column [, ...] ) : ROLLUP 연산자는 주어진 열 집합에 대한 모든 가능한 소계(subtotal)를 생성합니다.
[ HAVING condition ]
- HAVING 절은 집계 함수의 결과에 조건을 적용하는 데 사용됩니다. 그룹화된 데이터에 대한 필터링을 수행할 수 있습니다.
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] SELECT ]
- 집합 연산은 SELECT 문의 결과를 결합하여 새로운 결과 집합을 생성합니다. 기본적으로 중복 행은 삭제됩니다.
- UNION: 두 개 이상의 SELECT 문의 결과를 결합하여 하나의 결과 집합으로 만듭니다.
- INTERSECT: 두 개 이상의 SELECT 문의 결과 중 공통된 행만 포함하는 새로운 결과 집합을 생성합니다.
- EXCEPT: 첫 번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과에 포함되지 않는 행만 포함하는 새로운 결과 집합을 생성합니다.
- 괄호를 사용하여 순서를 지정하지 않는 한 왼쪽에서 오른쪽으로 처리됩니다. 또한, INTERSECT는 EXCEPT 및 UNION보다 더 강하게 결합됩니다.
[ ORDER BY expression [ ASC | DESC ] [, ...] ]
- 쿼리 결과를 특정 열의 값에 따라 정렬하는 데 사용됩니다.
[ OFFSET count [ ROW | ROWS ] ]
- OFFSET 절은 결과에서 지정된 수의 선행 행을 제외합니다.
[ LIMIT { count | ALL } ]
- 쿼리에서 반환되는 결과 집합의 행 수를 제한합니다.