이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

select

이름

선택 - 테이블이나 뷰에서 행을 검색합니다.
[All | 뚜렷한 [on (표현[, ...])]표현[as이름] [, ...]
    [임시 | 온도] [표]new_table]
    [ 에서테이블[alias] [, ...]]
    [ 어디조건]
    [그룹 by[, ...]]
    [hade조건[, ...]]
    [Union [모두] | 교차 | 제외하고select]
    [주문[asc | desc | 사용운영자] [, ...]]
    [업데이트 [ofclass_name[, ...]]]
    한계count| all [오프셋 | ,시작]

입력

표현

테이블 열 또는 표현식의 이름.

이름

열이나 표현식의 다른 이름을 지정합니다 AS 절을 사용합니다. 이 이름은 주로 레이블을 지정하는 데 사용됩니다 디스플레이 열. 또한 참조하는 데 사용될 수 있습니다 절 순서대로 열의 값과 절에 의한 그룹. 하지만이름에서 사용할 수 없습니다 조항이있는 곳; 표현을 작성하십시오 대신에.

임시, 임시

임시 또는 온도가 지정되면 테이블이 생성됩니다. 이 세션에 고유하며 자동으로 떨어집니다 세션 종료.

new_table

테이블 조항이 지정되면 결과가 쿼리는 표시된 새 테이블에 저장됩니다. 이름. 대상 테이블 (new_table)가 생성됩니다 이 명령 전에 자동으로 존재하지 않아야합니다. 나타내다 에게선택더 많은 정보.

참고 :the테이블 작성 처럼Statement도 a에서 새 테이블을 생성합니다 쿼리 선택.

테이블

절.

alias

이전의 대체 이름테이블. 간결하게 사용됩니다 단일 테이블 내에서 조인에 대한 모호성을 제거합니다.

조건

참 또는 거짓의 결과를주는 부울 표현. where 절을 참조하십시오.

테이블 열의 이름.

select

주문을 제외한 모든 기능이있는 선택 문 그리고 조항을 제한합니다.

출력

쿼리로 인한 완전한 행 세트 사양.

count

쿼리에 의해 반환 된 행 카운트.

설명

select하나에서 행을 반환합니다 더 많은 테이블. 선택 후보자는 다음을 만족시키는 행입니다 조건; 생략 된 경우 모든 행은 후보입니다. (보다여기서 절.)

별도의중복 행을 제거합니다 토토 결과에서.all(기본값) 복제를 포함한 모든 후보 행을 반환합니다.

별개의일치하는 행을 제거합니다 지정된 모든 표현식에서 첫 번째 행만 유지 각 복제 세트. 표현에 대한 뚜렷한 것입니다 항목 별 순서와 동일한 규칙을 사용하여 해석; 보다 아래에. 각 세트의 "첫 번째 행"은 예측할 수 없습니다. 하지 않는 한주문원하는 행이 먼저 나타납니다. 예를 들어,

(위치) 위치, 시간, 보고서에서 별개의 선택을 선택하십시오
        WeatherRopports에서
        위치별로 주문, 시간 desc;
각 위치에 대한 최신 날씨 보고서를 검색합니다. 그러나 우리가 내림차순 시간 순서를 강요하기 위해 주문을 사용하지 않았다면 각 위치에 대한 값, 우리는 보고서를 받았을 것입니다. 각 위치에 대한 예측할 수없는 연령.

절에 의한 그룹을 통해 사용자는 테이블을 다음으로 나눌 수 있습니다. 하나 이상의 값에서 일치하는 행 그룹. (보다그룹 별 그룹.)

지정된 조건을 충족하는 행. (보다조항.)

순서 별 절로 반환 된 행이 지정된 순서. 주문이 제공되지 않으면 행이 반환됩니다. 어떤 순서로든 시스템은 생산하기에 가장 저렴하다고 생각합니다. (보다주문에 의해 절.)

Union Operator는 토토 결과를 수집 할 수 있습니다. 관련된 쿼리에 의해 반환되었습니다. (보다Union 조항.)

교차로 연산자는 공통적 인 행을 제공합니다. 두 쿼리. (보다교차 절.)

제외 연산자는 첫 번째 행에 반환 된 행을 제공합니다. 쿼리하지만 두 번째 쿼리는 아닙니다. (보다절을 제외하고.)

for 업데이트 절은 SELECT 문을 수행 할 수 있습니다. 선택된 행의 독점 잠금.

한계 절은 쿼리를 사용자에게 반환합니다. (보다한계 조항.)

값을 읽으려면 테이블에 선정 된 특권이 있어야합니다. (참조그랜트/Revoke진술).

어디서 절

12481_12533

여기서boolean_expr

boolean_expr부울 가치를 평가하는 모든 표현. 많은 경우에 이 표현은
     expr cond_op expr

또는
     log_op expr

여기서cond_op중 하나 일 수 있습니다. =, <, <=,, = 또는 <, 조건부 연산자 무엇이든, 어떤 것,, 좋아요, 또는 로컬로 정의 된 연산자 및log_op중 하나 일 수 있습니다. Select는 위치 조건이없는 모든 행을 무시합니다. 진실을 반환하십시오.

그룹 별 그룹

그룹 별 그룹에 의해 그룹화 된 테이블을 지정합니다 이 조항의 적용 :

그룹 by[, ...]

Group By BILL SELECTERED ROWS 단일 행으로 응축 그룹화 된 열에 대해 동일한 값을 공유합니다. 골재 함수는 각각을 구성하는 모든 행에서 계산됩니다. 그룹, 각 그룹에 대해 별도의 값을 생성합니다 (반대 그룹이 없으면 집계는 단일 값을 계산합니다. 선택한 모든 행에서). 그룹에 의해 그룹이있을 때, 그것은입니다 선택 출력 표현식에 유효하지 않습니다. 그 이후로 집계 기능을 제외하고 그룹화되지 않은 열 반환 할 수있는 값이 둘 이상있을 것입니다. 그룹화되지 않은 열.

그룹의 항목은 또한 이름 또는 서수 일 수 있습니다. 출력 열 (표현식 선택) 또는 입력-열 값으로부터 형성된 임의의 표현. 경우에 모호함의 이름으로 그룹은 출력 열 이름이 아닌 입력 콜럼 이름.

조항

옵션이있는 상태는 일반적인 형태를 갖습니다.

cond_expr

여기서cond_expr동일합니다 WHERE 절에 지정된대로.

제거에 의해 도출 된 그룹화 된 테이블을 지정했습니다 만족하지 않는 그룹 행cond_expr. 가지고있는 것은 다릅니다 장소 : 적용하기 전에 개별 행을 필터링합니다 그룹별로 작성된 필터 그룹 행이있는 동안 그룹 에 의해.

각 열에서 참조cond_expr명백히 참조해야합니다 참조가 AN 내에 나타나지 않는 한 그룹화 열 집계 기능.

주문별 주문

주문 by15528_15536[asc | desc] [, ...]

컬럼a 결과 열 이름 또는 서수 번호

서수 숫자는 서수를 나타냅니다 (왼쪽에서 오른쪽으로) 결과 열의 위치. 이 기능은 가능합니다 그렇지 않은 열을 기준으로 순서를 정의합니다. 적절한 이름이 있습니다. 이것은 절대적으로 필요하지 않습니다 항상 이름을 결과 열에 할당 할 수 있습니다. AS 절, 예 :

TITLE, DATE_PROD + 1은 Newlen의 Newlen As Newlen의 Newlen;

임의의 표현으로 주문할 수도 있습니다 ( SQL92로의 확장, 결과 목록을 선택하십시오. 따라서 다음 진술은 합법적입니다.

유통 업체에서 이름을 선택하여 코드별로 주문;
항목 별 주문이 일치하는 간단한 이름 인 경우 결과 열 이름과 입력 열 이름, will의 주문 결과 열 이름으로 해석하십시오. 이것은 반대입니다 그 그룹이 같은 상황에서 선택할 것입니다. 이것 불일치는 SQL92 표준에 의해 의무화됩니다.

선택적으로 키워드 DESC (하강) 또는 ASC를 추가 할 수 있습니다. (오름차순) 각 열이 순서대로 절의 이름을 따서 절하기. 만약에 지정되지 않으면 ASC는 기본적으로 가정됩니다. 또는 a 특정 주문 연산자 이름이 지정 될 수 있습니다. ASC입니다 '<'를 사용하는 것과 동일하며 desc는 사용과 동일합니다. ''.

Union 조항

table_queryUnion [All]table_query[주문 by[asc | desc] [, ...]
여기서table_query지정 주문 또는 제한 조항이없는 선택 표현식.

Union Operator는 결과를 수집 할 수 있습니다. 관련된 쿼리에 의해 반환되었습니다. 두 사람은 그것을 선택합니다 노조의 직접 필란드는 생산해야합니다. 동일한 수의 열 및 해당 열이 호환 데이터 유형.

기본적으로 노조의 결과에는 어떤 것도 포함되지 않습니다. 모든 조항이 지정되지 않는 한 중복 행.

동일한 선택 문의 여러 유니온 연산자입니다 왼쪽에서 오른쪽으로 평가했습니다. 모든 키워드는 아닙니다 본질적으로 전 세계적으로, 현재 쌍의 현재 쌍에만 적용됩니다. 테이블 결과.

교차 조항

table_queryIntersecttable_query[주문 by컬럼[asc | desc] [, ...]
여기서table_query지정 주문 또는 제한 조항이없는 선택 표현식.

교차로 연산자가 공통적 인 행을 제공합니다. 두 쿼리. 직접을 나타내는 두 가지 선택 교차의 오페라는 동일한 수의 생산해야합니다. 열 및 해당 열은 호환 가능한 데이터 여야합니다 유형.

동일한 선택 문의 다중 교차 연산자 괄호가 지시하지 않는 한 왼쪽에서 오른쪽으로 평가됩니다 그렇지 않으면.

절을 제외하고

table_query제외table_query[주문 by[ASC | desc] [, ...]
여기서table_query지정 주문 또는 제한 조항이없는 선택 표현식.

제외 연산자는 첫 번째로 반환 된 행을 제공합니다. 쿼리하지만 두 번째 쿼리는 아닙니다. 두 사람은 대표하는 것을 선택합니다 제외의 직접 피연산자는 동일한 숫자를 생산해야합니다. 열의 열 및 해당 열은 호환 가능해야합니다 데이터 유형.

동일한 선택 문의 연산자를 제외한 다중 괄호가 지시하지 않는 한 왼쪽에서 오른쪽으로 평가되었습니다 그렇지 않으면.

한계 조항

Limitcount| all [오프셋 | ,시작]
    오프셋시작

여기서count반환 할 최대 행 수 및시작시작하기 전에 건너 뛰는 행 수를 지정합니다 줄을 반환하려면

한계는 행의 일부만 검색 할 수 있습니다. 나머지 쿼리에 의해 생성됩니다. 한계 계수가있는 경우 주어지면, 그 많은 행이 반환 될 것입니다. 만약 오프셋이 주어지면 시작하기 전에 많은 행이 건너 뛸 것입니다. 줄을 반환하려면

한계를 사용하는 경우 주문을 사용하는 것이 좋습니다. 결과 행을 고유 한 순서로 제한하는 조항. 그렇지 않으면 쿼리의 예측할 수없는 하위 집합을 얻을 수 있습니다. 행 --- 당신은 10 번째 ~ 20 세를 요구할 수 있습니다. 줄, 그러나 10 ~ 20에서 어떤 순서에서? 당신은 그렇지 않습니다 주문을 지정하지 않는 한 주문을 알고 있습니다.

Postgres7.0, the Query Optimizer는 a를 생성 할 때 제한됩니다 쿼리 계획이므로 다른 계획을 세울 가능성이 높습니다. (다른 행 주문 생성) 당신이주는 것에 따라 제한 및 오프셋. 따라서 다른 한계/오프셋 값을 사용합니다 쿼리 결과의 다른 서브 세트 선택일관성없는 토토 결과를 제공합니다당신이 아니라면 주문으로 예측 가능한 결과 순서를 시행합니다. 이것은 버그가 아닙니다. SQL이라는 사실의 고유 한 결과입니다. 쿼리 결과를 전달할 것을 약속하지 않습니다. 주문에 의한 순서가 제한되지 않는 한 특정 순서 주문하다.

usage

테이블에 가입하려면영화테이블유통 업체:

F.Title, F.Did, D.Name, F.Date_Prod, F.Kind를 선택하십시오
    유통 업체 D, 필름 f
    여기서 f.did = d.did

           제목 | |   이름 | date_prod | 친절한
--------------------------+-----+----------------------------------------------------------------------------------
 세 번째 사람 | 101 | 영국 사자 | 1949-12-23 | 드라마
 아프리카 여왕 | 101 | 영국 사자 | 1951-08-11 | 로맨틱
 une femme est une femme | 102 | Jean Luc Godard | 1961-03-12 | 로맨틱
 Vertigo | 103 | 파라마운트 | 1958-11-14 | 행동
 베켓 | 103 | 파라마운트 | 1964-02-03 | 드라마
 48 시간 | 103 | 파라마운트 | 1982-10-22 | 행동
 전쟁과 평화 | 104 | Mosfilm | 1967-02-12 | 드라마
 웨스트 사이드 스토리 | 105 | 연합 예술가 | 1961-01-03 | 뮤지컬
 바나나 | 105 | 연합 예술가 | 1971-07-13 | 코메디
 Yojimbo | 106 | 도호 | 1961-06-16 | 드라마
 내 수프에 여자가있다 | 107 | 컬럼비아 | 1970-06-11 | 코메디
 택시 운전사 | 107 | 컬럼비아 | 1975-05-15 | 행동
 악의적 인 부재 | 107 | 컬럼비아 | 1981-11-15 | 행동
 Storia di una donna | 108 | 서쪽으로 | 1970-08-15 | 로맨틱
 왕과 나는 | 109 | 20 세기 폭스 | 1956-08-11 | 뮤지컬
 das boot | 110 | 바바리아 아틀리에 | 1981-11-11 | 드라마
 침대 손잡이와 빗자루 | 111 | 월트 디즈니 |            | 뮤지컬
(17 줄)

열을 합산하려면Len23411_23454Kind:

Kind의 Total from Films Group의 SOLE SONT, SUM (LEN);

   친절 | 총
----------+-------
 행동 | 07:34
 코미디 | 02:58
 드라마 | 14:28
 뮤지컬 | 06:42
 낭만적 인 | 04:38
(5 줄)

열을 합산하려면Len모든 영화의 결과를 그룹Kind5 시간 미만의 그룹 총액 :

Total으로 SONT, SUM (LEN)을 선택하십시오
    영화에서
    친절하게 그룹
    Sum (Len) <간격 '5 시간';

 친절 | 총
----------+-------
 코미디 | 02:58
 낭만적 인 | 04:38
(2 줄)

다음 두 가지 예는 동일하게 정렬하는 방법입니다. 두 번째 열의 내용에 따른 개별 결과 (이름) :

유통 업체에서 이름별로 선택 * 선택;
배급 자 주문 *을 선택하여 2;

 |       이름
-----+-------------------
 109 | 20 세기 폭스
 110 | 바이에른 아틀리에
 101 | 영국 사자
 107 | 콜롬비아
 102 | 장 루크 고다드
 113 | 루소 영화
 104 | MOSFILM
 103 | 최고의
 106 | 도호
 105 | 연합 예술가
 111 | 월트 디즈니
 112 | 워너 브라더스
 108 | 서부 제국
(13 줄)

이 예제는 테이블의 결합을 얻는 방법을 보여줍니다유통 업체배우, 결과를 그 결과로 제한합니다 각 테이블에서 문자 W로 시작하십시오. 독특한 행만 원합니다. 그래서 모든 키워드는 생략됩니다.

유통 업체 : 배우 :
 |     이름 ID |     이름
-----+-----------------+------------------
 108 | 서쪽으로 1 | 우디 앨런
 111 | 월트 디즈니 2 | 워렌 비티
 112 | 워너 브라더스 3 | 월터 마타 우
 ... ...

유통 업체를 선택하십시오
    유통 업체로부터
    장소는 'W%'와 같은 이름
노동 조합
actors.name을 선택하십시오
    배우로부터
    Actors.Name Like 'W%'

      이름
---------------
 월트 디즈니
 월터 마타 우
 워너 브라더스
 워렌 비티
 서부 제국
 우디 앨런

호환성

확장

Postgres생략 할 수 있습니다 그만큼From쿼리의 조항. 이것 원래 우편 쿼리에서 기능이 유지되었습니다 언어:

유통 업체 선택.* 여기서 이름 = 'Westwood';

 | 이름
-----+---------
 108 | 서부 제국

SQL92

조항 선택

inSQL92표준, 선택적 키워드 "AS"는 소음이므로 생략 할 수 있습니다. 의미에 영향을 미치지 않고. 그만큼Postgres파서에는이 키워드가 필요합니다 유형 확장 성 기능이기 때문에 열을 바꾸는 경우 이 맥락에서 모호성을 구문 분석합니다.

문구의 구별은의 일부가 아닙니다SQL92. 제한 및 오프셋도 아닙니다.

inSQL92결과 열 이름 또는 숫자 만 사용할 수 있으며 그룹은 조항은 입력 열 이름 만 사용할 수 있습니다.Postgres이 조항을 연장합니다 다른 선택도 허용하기 위해 (그러나 표준을 사용합니다. 모호성이있는 경우 해석).Postgres또한 두 절 모두를 허용합니다 임의 표현식을 지정하십시오. 이름이 나타나는 이름이 나타납니다 표현식은 항상 입력 콜럼 이름으로 간주됩니다. 결과-컬럼 이름.

Union 조항

theSQL92노조 구문 추가로 해당하는 조항을 허용합니다 :


table_queryUnion [모두]
    [해당 [컬럼[, ...])]table_query

조항에 의한 해당 조항은 뒷받침되지 않습니다Postgres.