SELECT(Transact-SQL)

데이터베이스에서 행을 검색하고 SQL Server 2012에서 하나 이상의 테이블에서 하나 이상의 행 또는 열을 선택할 수 있도록 합니다. SELECT 문의 전체 구문은 복잡하지만 주요 절은 다음과 같이 요약할 수 있습니다.

[ WITH <common_table_expression>]

SELECT select_list [ INTO new_table ]

[ FROM table_source ] [ WHERE search_condition ]

[ GROUP BY group_by_expression ]

[ HAVING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

UNION, EXCEPT 및 INTERSECT 연산자는 쿼리 간에 결과를 비교하거나 하나의 결과 집합으로 결합하는 데 사용됩니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

<SELECT statement> ::=  
    [WITH <common_table_expression> [,...n]]
    <query_expression> 
    [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } 
  [ ,...n ] ] 
    [ <FOR Clause>] 
    [ OPTION ( <query_hint> [ ,...n ] ) ] 
<query_expression> ::= 
    { <query_specification> | ( <query_expression> ) } 
    [  { UNION [ ALL ] | EXCEPT | INTERSECT }
        <query_specification> | ( <query_expression> ) [...n ] ] 
<query_specification> ::= 
SELECT [ ALL | DISTINCT ] 
    [TOP ( expression ) [PERCENT] [ WITH TIES ] ] 
    < select_list > 
    [ INTO new_table ] 
    [ FROM { <table_source> } [ ,...n ] ] 
    [ WHERE <search_condition> ] 
    [ <GROUP BY> ] 
    [ HAVING < search_condition > ] 

주의

SELECT 문은 복잡하기 때문에 자세한 구문 요소와 인수가 다음과 같은 절로 표시됩니다.

WITH common_table_expression

HAVING

SELECT 절

UNION

INTO 절

EXCEPT 및 INTERSECT

FROM

ORDER BY

WHERE

FOR 절

GROUP BY

OPTION 절

SELECT 문에서 절의 순서는 매우 중요합니다. 선택 사항인 절은 생략할 수 있지만 이러한 절을 사용할 때는 적절한 순서로 표시해야 합니다.

사용자 정의 함수 내의 SELECT 문은 함수에서 로컬인 변수에 값을 할당하는 식이 문의 선택 목록에 포함된 경우에만 허용됩니다.

서버 이름 부분에 OPENDATASOURCE 함수를 사용하여 네 부분으로 구성한 이름은 SELECT 문에서 테이블 이름이 표시될 수 있는 곳이면 어디든 테이블 원본으로 사용할 수 있습니다.

SELECT 문에는 원격 테이블과 관련된 몇몇 구문 제한이 적용됩니다.

SELECT 문의 논리적 처리 순서

다음 단계에서는 SELECT 문의 논리적 처리 순서(바인딩 순서)를 보여 줍니다. 이 순서에 따라 특정 단계에서 정의한 개체를 후속 단계의 절에 사용할 수 있는 시기가 결정됩니다. 예를 들어 쿼리 프로세스가 FROM 절에 정의된 테이블 또는 뷰에 바인딩(액세스)할 수 있는 경우 이러한 개체 및 해당 열을 모든 후속 단계에서 사용할 수 있습니다. 반면, SELECT 절은 8단계이므로 해당 절에서 정의된 열 별칭 또는 파생 열을 이전 절에서 참조할 수는 없습니다. 그러나 ORDER BY 절 등의 후속 절에서는 이러한 항목을 참조할 수 있습니다. 문의 실제 실행은 쿼리 프로세서를 통해 결정되며 순서는 이 목록과 다를 수 있습니다.

  1. FROM

  2. ON

  3. JOIN

  4. WHERE

  5. GROUP BY

  6. WITH CUBE 또는 WITH ROLLUP

  7. HAVING

  8. SELECT

  9. DISTINCT

  10. ORDER BY

  11. TOP

사용 권한

데이터를 선택하려면 테이블이나 뷰에 대한 SELECT 권한이 있어야 합니다. 이 권한은 스키마에 대한 SELECT 권한이나 테이블에 대한 CONTROL 권한과 같은 상위 범위에서 상속할 수 있습니다. 또는 db_datareader 또는 db_owner 고정 데이터베이스 역할이나 sysadmin 고정 서버 역할의 멤버여야 합니다. SELECT INTO를 사용하여 새 테이블을 만들려면 CREATE TABLE 권한과 새 테이블을 소유하는 스키마에 대한 ALTER SCHEMA 권한이 둘 다 있어야 합니다.

참고 항목

참조

SELECT 예(Transact-SQL)