이전 섹션에 표시된 대로 명령의 테이블 표현식 은 테이블, 뷰를 결합하고, 행을 제거하고, 그룹화하는 등의 방법으로 중간 가상 테이블을 구성합니다. 이 테이블은 최종적으로 선택 목록SELECT 에 의해 처리되도록 전달됩니다 . 선택 목록 은 중간 테이블의 실제로 출력 되는 열 을 결정합니다.
7.3.1. 선택 목록 항목
가장 간단한 종류의 선택 목록은 *테이블 표현식이 생성하는 모든 열을 내보내는 것입니다. 그렇지 않으면 선택 목록은 쉼표로 구분된 값 표현식 목록입니다( 섹션 4.2 에 정의됨 ). 예를 들어 열 이름 목록이 될 수 있습니다.
선택 a, b, c에서 ...
열 이름 a, b및 c는 절에서 참조하는 테이블 열의 실제 이름 이거나 섹션 7.2.1.2FROM 에서 설명한 대로 테이블에 지정된 별칭 입니다. 선택 목록에서 사용 가능한 이름 공간은 그룹화를 사용하지 않는 한 절에서와 동일합니다 .WHEREHAVING
둘 이상의 테이블에 동일한 이름의 열이 있는 경우 다음과 같이 테이블 이름도 지정해야 합니다.
tbl1.a, tbl2.a, tbl1.b 선택 ...
여러 테이블로 작업할 때 특정 테이블의 모든 열을 요청하는 것도 유용할 수 있습니다.
선택 tbl1.*, tbl2.a FROM ...
표기법 에 대한 자세한 내용은 섹션 8.16.5 를 참조하십시오 .table_name.*
선택 목록에서 임의의 값 식이 사용되면 개념적으로 반환된 테이블에 새 가상 열을 추가합니다. 값 표현식은 각 결과 행에 대해 한 번 평가되며 행 값은 열 참조로 대체됩니다. 그러나 선택 목록의 표현식은 FROM절의 테이블 표현식에 있는 열을 참조할 필요가 없습니다. 예를 들어 상수 산술 표현식이 될 수 있습니다.
7.3.2. 열 레이블
선택 목록의 항목에는 ORDER BY절에서 사용하거나 클라이언트 응용 프로그램에서 표시하는 것과 같은 후속 처리를 위해 이름이 할당될 수 있습니다. 예를 들어:
SELECT a AS 값, b + c AS 합계 FROM ...
를 사용하여 출력 열 이름을 지정하지 않으면 AS시스템에서 기본 열 이름을 할당합니다. 단순 열 참조의 경우 참조된 열의 이름입니다. 함수 호출의 경우 이것은 함수의 이름입니다. 복잡한 표현식의 경우 시스템은 일반 이름을 생성합니다.
AS키워드는 일반적으로 선택 사항이지만 원하는 열 이름이 PostgreSQL 키워드와 일치하는 경우 모호성 을 피하기 AS위해 열 이름을 쓰거나 큰따옴표로 묶어야 합니다. ( 부록 CAS 는 열 레이블로 사용해야 하는 키워드를 보여줍니다 .) 예를 들어, FROM는 그러한 키워드 중 하나이므로 작동하지 않습니다.
SELECT a from, b + c AS sum FROM ...
그러나 이들 중 하나는 다음을 수행합니다.
SELECT a AS from, b + c AS sum FROM ...
SELECT a "from", b + c AS 합계 FROM ...
향후 키워드 추가 가능성에 대한 최대한의 안전을 위해 항상 AS출력 열 이름을 쓰거나 큰따옴표로 묶는 것이 좋습니다.
메모
여기에서 출력 열의 이름은 FROM절에서 수행한 것과 다릅니다( 섹션 7.2.1.2 참조 ). 동일한 열의 이름을 두 번 변경할 수 있지만 선택 목록에 지정된 이름이 전달됩니다.
7.3.3. DISTINCT
선택 목록이 처리된 후 결과 테이블은 선택적으로 중복 행을 제거할 수 있습니다. DISTINCT키워드는 다음을 지정하기 위해 바로 뒤에 작성 됩니다 SELECT.
구별 선택 select_list...
( DISTINCT키워드 대신 ALL모든 행을 유지하는 기본 동작을 지정하는 데 사용할 수 있습니다.)
분명히 두 행은 최소한 하나의 열 값이 다른 경우 구별되는 것으로 간주됩니다. 이 비교에서는 Null 값이 동일한 것으로 간주됩니다.
또는 임의의 식이 구별되는 것으로 간주되는 행을 결정할 수 있습니다.
SELECT DISTINCT ON( expression[ , expression... ]) select_list...
다음 expression은 모든 행에 대해 평가되는 임의의 값 표현식입니다. 모든 표현식이 동일한 행 세트는 중복으로 간주되며 세트의 첫 번째 행만 출력에 유지됩니다. 필터 에 도달하는 행의 고유한 순서를 보장하기에 충분한 열에 대해 쿼리가 정렬되지 않는 한 집합 의 " 첫 번째 행 " 은 예측할 수 없습니다 . DISTINCT( 정렬 DISTINCT ON후 처리가 발생 합니다.)ORDER BY
이 DISTINCT ON절은 SQL 표준의 일부가 아니며 결과의 잠재적으로 불확실한 특성 때문에 때때로 나쁜 스타일로 간주됩니다. GROUP BY에서 및 하위 쿼리를 적절하게 사용하면 FROM이 구성을 피할 수 있지만 가장 편리한 대안이 되는 경우가 많습니다.
'Postgresql_DB_가이드' 카테고리의 다른 글
테이블 표현식 (0) | 2022.08.06 |
---|---|
쿼리 개요 (0) | 2022.08.06 |
수정된 행에서 데이터 반환 (0) | 2022.08.06 |
데이터 업데이트 (0) | 2022.08.06 |
데이터 삽입 (0) | 2022.08.06 |