| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 토토 핫 PostgreSQL : 문서 : 9.3 : 어휘 구조 | Postgre메이저 토토 사이트 : 문서 : 9.3 : 메이저 토토 사이트 구문 | 4장. SQL 구문 | PostgreSQL : 문서 : 9.3 : 롤 토토 호출 | |
값 메이저 토토 사이트식은 다음과 같은 다양한 상황에서 사용됩니다. 대상 목록은선택명령, 다음과 같이 의 새 열 값삽입또는업데이트또는 여러 검색 조건에서 명령. 값 메이저 토토 사이트식의 결과를 a라고도 합니다.스칼라, 결과와 구별하기 위해 테이블 메이저 토토 사이트식(테이블)입니다. 값 메이저 토토 사이트식은 다음과 같습니다. 따라서라고도 함스칼라 메이저 토토 사이트식(또는 간단히메이저 토토 사이트). 는 메이저 토토 사이트식 구문을 사용하면 기본 요소의 값을 계산할 수 있습니다. 산술, 논리, 집합 및 기타 연산을 사용하는 부분
값 메이저 토토 사이트식은 다음 중 하나입니다:
상수 또는 리터럴 값
열 참조
함수 본문의 위치 매개변수 참조 정의 또는 준비된 진술
첨자 메이저 토토 사이트식
필드 선택 메이저 토토 사이트식
연산자 호출
함수 호출
집계 메이저 토토 사이트식
창 함수 호출
A 유형 캐스트
조합 메이저 토토 사이트식
스칼라 하위 쿼리
배열 생성자
행 생성자
괄호 안의 또 다른 값 메이저 토토 사이트식(그룹화에 사용됨) 하위 메이저 토토 사이트식 및 우선 순위 재정의)
이 목록 외에도 다음과 같은 구성이 많이 있습니다. 메이저 토토 사이트으로 분류될 수 있지만 일반적인 내용을 따르지는 않습니다. 구문 규칙. 이들은 일반적으로 함수 또는 연산자에 대한 내용은의 적절한 위치에 설명되어 있습니다.제9장. 예는 다음과 같습니다.NULL임절.
우리는 이미 상수에 대해 논의했습니다.섹션 4.1.2. 다음 섹션에서는 나머지 옵션에 대해 설명합니다.
열은 다음 형식으로 참조될 수 있습니다:
상관관계.열 이름
상관관계이름은 테이블(스키마 이름으로 한정될 수 있음) 또는 별칭 a를 통해 정의된 테이블발신절. 상관명과 구분점은 다음과 같은 경우 생략될 수 있다. 열 이름은 사용되는 모든 테이블에서 고유합니다. 현재 쿼리. (또한 참조토토 사이트 : 문서 : 9.3 : 쿼리.)
위치 매개변수 참조는 값을 나타내는 데 사용됩니다. 이는 SQL 문에 외부적으로 제공됩니다. 매개변수는 SQL 함수 정의 및 준비된 쿼리에 사용됩니다. 일부 클라이언트 라이브러리는 데이터 값을 별도로 지정하는 것도 지원합니다. SQL 명령 문자열에서 매개변수를 사용하여 라인 밖의 데이터 값을 참조하십시오. 매개변수의 형태 참조는 다음과 같습니다:
$번호
예를 들어, 함수의 정의를 생각해 보세요.부서, 다음과 같이:
CREATE FUNCTION 부서(텍스트) RETURNS 부서
AS $$ SELECT * FROM dept WHERE 이름 = $1 $$
언어 SQL;
여기$1값을 참조합니다. 함수가 호출될 때마다 첫 번째 함수 인수입니다.
식이 배열 유형의 값을 산출하는 경우, 배열 값의 특정 요소는 다음을 작성하여 추출할 수 있습니다.
메이저 토토 사이트[아래첨자]
또는 여러 인접 요소(an"배열 슬라이스")를 작성하여 추출할 수 있습니다.
메이저 토토 사이트[lower_subscript:upper_subscript]
(여기서는 괄호[ ]다음을 의미합니다 문자 그대로 나타납니다.) 각아래첨자그 자체는 정수 값을 산출해야 하는 메이저 토토 사이트식입니다.
일반적으로 배열메이저 토토 사이트괄호로 묶어야 하지만 다음과 같은 경우에는 괄호를 생략할 수 있습니다. 첨자가 붙을 메이저 토토 사이트식은 단지 열 참조이거나 위치 매개변수. 또한 여러 개의 첨자를 연결할 수 있습니다. 원래 배열이 다차원인 경우. 예를 들면:
mytable.arraycolumn[4] mytable.two_d_column[17][34] $1[10:42] (배열함수(a,b))[42]
마지막 예의 괄호는 필수입니다. 참조섹션 8.15배열에 대한 자세한 내용을 확인하세요.
식이 복합 유형(행 유형)의 값을 산출하는 경우, 다음을 작성하여 행의 특정 필드를 추출할 수 있습니다.
메이저 토토 사이트.필드 이름
일반적으로 행메이저 토토 사이트괄호로 묶어야 하지만 다음과 같은 경우에는 괄호를 생략할 수 있습니다. 선택할 메이저 토토 사이트식이 테이블 참조이거나 위치 매개변수. 예를 들면:
mytable.mycolumn $1.일부열 (행함수(a,b)).col3
(따라서 한정된 열 참조는 실제로는 특별한 열 참조입니다. 필드 선택 구문의 경우.) 중요한 특수 사례는 다음과 같습니다. 복합 테이블 열에서 필드 추출 유형:
(compositecol).somefield (mytable.compositecol).somefield
여기에는 이를 표시하기 위해 괄호가 필요합니다.복합 콜은 테이블 이름이 아닌 열 이름입니다. 아니면 그마이테이블테이블 이름은 두 번째 경우의 스키마 이름입니다.
다음을 작성하여 복합 값의 모든 필드를 요청할 수 있습니다..*:
(복합 콜).*
이 표기법은 상황에 따라 다르게 작동합니다. 참조섹션 8.16.5용 세부사항.
연산자에는 세 가지 가능한 구문이 있습니다. 호출:
| 메이저 토토 사이트 연산자 메이저 토토 사이트(이진 중위 연산자) |
| 연산자 메이저 토토 사이트(단항 접두사 연산자) |
| 메이저 토토 사이트 연산자(단항 후위 연산자) |
연산자(스키마.운영자 이름)
어떤 특정 연산자가 존재하며 단항 연산자인지 아니면 바이너리는 시스템에서 정의한 연산자에 따라 달라집니다. 사용자.PostgreSQL : 문서 : 9.3 : 토토 사이트 추천 및 연산자다음을 설명합니다. 내장 연산자.
함수 호출의 구문은 함수의 이름입니다 (스키마 이름으로 한정될 수 있음), 그 뒤에 해당 인수가 옵니다. 괄호 안에 있는 목록:
함수_이름 ([메이저 토토 사이트 [, 메이저 토토 사이트 ... ]] )
예를 들어, 다음은 2의 제곱근을 계산합니다:
sqrt(2)
내장 함수 목록은 다음과 같습니다.제9장. 다른 기능은 다음을 통해 추가할 수 있습니다. 사용자.
일부 사용자가 신뢰하지 않는 데이터베이스에서 쿼리를 실행할 때 다른 사용자는 다음의 보안 예방 조치를 준수하세요.섹션 10.3함수 작성 시 전화.
인수에는 선택적으로 이름이 첨부될 수 있습니다. 참조섹션 4.3자세한 내용은.
참고:단일 인수를 취하는 함수 복합 유형은 선택적으로 필드 선택을 사용하여 호출할 수 있습니다. 구문, 반대로 필드 선택은 함수형으로 작성될 수 있습니다. 스타일. 즉, 표기법col(테이블)그리고table.col교환 가능합니다. 이 동작은 SQL 표준은 아니지만 다음에서 제공됩니다.PostgreSQL함수 사용을 허용하기 때문입니다 에뮬레이션하다"계산된 필드". 더 알아보기 정보 참조섹션 8.16.5.
안집계 메이저 토토 사이트식은 다음을 나타냅니다. 선택한 행 전체에 집계 함수 적용 쿼리. 집계 함수는 여러 입력을 단일로 줄입니다. 입력의 합계 또는 평균과 같은 출력 값입니다. 구문 집계 메이저 토토 사이트식은 다음 중 하나입니다.
aggregate_name (메이저 토토 사이트 [ , ... ] [ order_by_clause ] ) aggregate_name(전체메이저 토토 사이트 [ , ... ] [ order_by_clause ] ) aggregate_name(독특메이저 토토 사이트 [ , ... ] [ order_by_clause ] ) aggregate_name ( * )
어디에서aggregate_name은 이전에 정의된 집계(스키마로 한정될 수 있음) 이름),메이저 토토 사이트모든 값 자체적으로 집계 메이저 토토 사이트식을 포함하지 않는 메이저 토토 사이트식 또는 창 함수 호출 및order_by_clause선택사항입니다주문 기준아래 설명된 절.
집계 메이저 토토 사이트식의 첫 번째 형태는 집계를 호출합니다.
각 입력 행마다 한 번씩. 두 번째 형태는 첫 번째와 동일하며,
이후전체기본값입니다. 세 번째 형태
각 고유 값에 대해 집계를 한 번씩 호출합니다.
메이저 토토 사이트식(또는 여러 메이저 토토 사이트식의 경우 고유한 값 집합)
입력 행에서 발견되었습니다. 마지막 양식은 집계를 한 번 호출합니다.
각 입력 행에 대해; 특별한 입력 값이 지정되지 않았기 때문에
일반적으로 다음 경우에만 유용합니다.개수(*)집계 함수.
대부분의 집계 함수는 null 입력을 무시하므로 null을 생성하는 하나 이상의 메이저 토토 사이트식이 삭제됩니다. 달리 명시하지 않는 한 이는 모든 경우에 해당되는 것으로 가정할 수 있습니다. 내장 집계.
예를 들어,개수(*)합계를 산출합니다
입력 행 수;수(f1)수율
입력 행 수f1이다
null이 아님, 이후개수널을 무시합니다.
그리고개수(고유 f1)숫자를 산출합니다
null이 아닌 고유한 값 중f1.
일반적으로 입력 행은 다음의 집계 함수에 제공됩니다.
불특정 주문. 많은 경우 이는 중요하지 않습니다. 에 대한
예분동일한 결과를 생성합니다
어떤 순서로든 입력을 받습니다. 그러나 일부
집계 함수(예:array_agg그리고string_agg)는 다음에 따라 결과를 생성합니다.
입력 행의 순서. 이러한 집합체를 사용할 때,
선택사항order_by_clause될 수 있습니다
원하는 순서를 지정하는 데 사용됩니다.order_by_clause는 a와 동일한 구문을 가집니다.
쿼리 수준주문 기준절, 설명된 대로
에서무지개 토토 : 문서 : 9.3 : 정렬 행, 단,
메이저 토토 사이트식은 항상 메이저 토토 사이트식일 뿐이며 출력 열이 될 수 없습니다.
이름이나 숫자. 예를 들면:
SELECT array_agg(a ORDER BY b DESC) FROM 테이블;
여러 인수 집계 함수를 처리할 때 다음 사항에 유의하세요. 그주문 기준절은 결국 간다 집계 인수. 예를 들어 다음과 같이 작성합니다.
SELECT string_agg(a, ',' ORDER BY a) FROM 테이블;
이것이 아닙니다:
SELECT string_agg(a ORDER BY a, ',') FROM 테이블; -- 부정확함
후자는 구문적으로 유효하지만 다음의 호출을 나타냅니다. 2개의 단일 인수 집계 함수주문 기준키(두 번째 키는 쓸모가 없습니다. 상수이기 때문에).
만약독특추가로 지정됨 anorder_by_clause그럼 모두주문 기준메이저 토토 사이트식은 정규식과 일치해야 합니다. 집계의 인수; 즉, 정렬할 수 없습니다. 에 포함되지 않은 메이저 토토 사이트독특목록.
참고:둘 다 지정하는 기능독특그리고주문 기준에 집계 함수는 다음과 같습니다.PostgreSQL확장.
사전 정의된 집계 함수는 다음에 설명되어 있습니다.섹션 9.20. 기타 집계 기능은 사용자가 추가할 수 있습니다.
집계 메이저 토토 사이트식은 결과 목록에만 나타날 수 있습니다. 또는가지고 있는 중a의 절선택명령. 다른 조항에서는 금지되어 있습니다. 같은어디, 왜냐하면 그 조항들은 집계 결과가 나오기 전에 논리적으로 평가됩니다. 형성되었습니다.
집계 메이저 토토 사이트식이 하위 쿼리에 나타날 때(참조섹션 4.2.11그리고PostgreSQL : 문서 : 9.3 : 서브 퀘리 토토 꽁 머니식), 집계는 일반적으로 하위 쿼리의 행에 대해 평가됩니다. 그러나 집계의 인수에 다음 항목만 포함된 경우 예외가 발생합니다. 외부 수준 변수: 집계는 가장 가까운 변수에 속합니다. 이러한 외부 수준은 해당 쿼리의 행에 대해 평가됩니다. 는 집계 메이저 토토 사이트식 전체는 다음에 대한 외부 참조입니다. 하위 쿼리가 나타나며 어느 쿼리에 대해서도 상수로 작동합니다. 해당 하위 쿼리를 평가합니다. 등장만 제한 결과 목록에서 또는가지고 있는 중절 집계가 속한 쿼리 수준과 관련하여 적용됩니다. 에.
A 창 함수 호출는 다음을 나타냅니다. 일부 부분에 집합체와 유사한 함수 적용 쿼리에 의해 선택된 행. 일반적인 집계 함수 호출과 달리 이는 선택한 행을 단일로 그룹화하는 것과 관련이 없습니다. 출력 행 - 각 행은 쿼리 출력에서 별도로 유지됩니다. 그러나 창 기능은 포함될 모든 행을 스캔할 수 있습니다. 그룹화 사양에 따른 현재 행의 그룹 (파티션 기준27234_27333
함수_이름 ([메이저 토토 사이트 [, 메이저 토토 사이트 ... ]]) 이상window_name 함수_이름 ([메이저 토토 사이트 [, 메이저 토토 사이트 ... ]]) 이상 (window_definition ) 함수_이름( * ) 이상window_name 함수_이름( * ) 이상 (window_definition )
어디에서window_definition이 있습니다 구문
[ existing_window_name] [ 파티션 기준메이저 토토 사이트[, ...] ] [주문 방법메이저 토토 사이트[ ASC | 설명 | 사용연산자] [ NULLS 첫 번째 | 마지막 ] [, ...] ] [frame_clause ]
및 선택사항frame_clause다음 중 하나일 수 있음
범위 | 행frame_start범위 | 행 사이프레임_시작그리고frame_end
어디에서frame_start그리고frame_end다음 중 하나일 수 있음
무제한 선행값이전 현재 행값팔로잉 무한한 팔로잉
여기,메이저 토토 사이트모든 것을 나타냅니다. 자체적으로 창 함수를 포함하지 않는 값 메이저 토토 사이트식 전화.
window_name는 다음에 대한 참조입니다. 쿼리의에 정의된 명명된 창 사양창절. 또는 전체window_definition다음 내에 주어질 수 있습니다. 명명된 창을 정의하는 것과 동일한 구문을 사용하는 괄호 에서창절; 참조하세요선택29675_29735wname 이상아님 정확히는이상 (wname); 는 후자는 창 정의를 복사하고 수정하는 것을 의미하며, 참조된 창 사양에 다음이 포함된 경우 거부됩니다. 프레임 절.
그파티션 기준옵션은 행을 그룹화합니다. 쿼리의파티션, 이는 창 함수에 의해 별도로 처리됩니다.파티션 기준쿼리 수준과 유사하게 작동그룹별절, 단, 메이저 토토 사이트식은 항상 메이저 토토 사이트식일 뿐이며 출력 열이 될 수 없습니다. 이름이나 숫자. 없이파티션 기준, 쿼리에 의해 생성된 모든 행은 단일 파티션으로 처리됩니다.주문 기준옵션이 순서를 결정합니다. 파티션의 행이 창에 의해 처리되는 경우 기능. 쿼리 수준과 유사하게 작동합니다.주문 기준절이지만 마찬가지로 사용할 수 없습니다. 출력 열 이름 또는 번호. 없이주문 으로, 행은 지정되지 않은 순서로 처리됩니다.
그frame_clause다음을 지정합니다. 를 구성하는 행 집합창틀, 해당 창에 대한 현재 파티션의 하위 집합입니다. 전체 파티션 대신 프레임에 작용하는 기능입니다. 는 프레임은 다음 중 하나로 지정할 수 있습니다.범위또는행모드; 두 경우 모두에서 실행됩니다.프레임_시작에frame_end. 만일frame_end생략되었으며 기본값은현재 행.
A frame_start의무제한 선행프레임이 다음으로 시작함을 의미합니다. 파티션의 첫 번째 행, 그리고 유사하게 aframe_end의제한 없음 다음프레임이 마지막 행으로 끝나는 것을 의미합니다. 파티션.
에범위모드, a프레임_시작의현재 행프레임이 현재 행의 첫 번째 행에서 시작됨을 의미합니다.동료행(다음 행주문 기준현재 행과 동일하다고 간주), 동안frame_end의현재 행프레임이 마지막으로 끝나는 것을 의미합니다. 동등한 동료. 에서행모드,현재 행단순히 현재 행을 의미합니다.
그값 이전그리고값 팔로우사례는 현재 허용됩니다 에서행모드. 그들은 프레임이 앞이나 뒤에 지정된 수의 행을 시작하거나 끝냅니다. 현재 행.값반드시 변수를 포함하지 않는 정수 메이저 토토 사이트식, 집계 함수 또는 창 함수. 값은 null이거나 부정적; 하지만 0이 될 수도 있습니다. 이는 단지 현재를 선택하는 것입니다. 행.
기본 프레이밍 옵션은범위 무한한 선행, 이는와 동일합니다.제한되지 않은 선행 행과 현재 행 사이의 범위. 와 함께주문 기준, 이는 프레임을 다음과 같이 설정합니다. 파티션의 모든 행은 현재 행의 마지막 행부터 시작됩니다. 동료. 없이주문 기준, 모든 행 모든 행이 다음이 되므로 파티션은 창 프레임에 포함됩니다. 현재 행의 동료입니다.
제한 사항은 다음과 같습니다.프레임_시작될 수 없습니다무제한 팔로우, frame_end될 수 없습니다무제한 선행그리고frame_end선택은 위의 목록보다프레임_시작선택 — 예를 들어현재 행 사이의 범위 그리고값이전아님 허용됩니다.
내장된 창 기능은 다음에 설명되어 있습니다.표 9-49. 사용자가 다른 창 기능을 추가할 수 있습니다. 또한 모든 내장 또는 사용자 정의 집계 함수를 창으로 사용할 수 있습니다. 기능.
다음을 사용하는 구문*다음 용도로 사용됩니다. 매개변수 없는 집계 함수를 창 함수로 호출합니다. 예count(*) OVER (PARTITION BY x ORDER BY y). 별표(*)는 관례적으로 비집계 창 함수에는 사용되지 않습니다. 집계 창 함수는 일반 집계 함수와 달리 허용되지 않습니다.독특또는주문 으로함수 인수 목록 내에서 사용됩니다.
창 함수 호출은 다음에서만 허용됩니다.선택목록 및주문 으로쿼리의 절.
유형 캐스트는 하나의 데이터 유형에서 다음 데이터 유형으로의 변환을 지정합니다. 또 다른.PostgreSQL2개 허용 유형 캐스트에 해당하는 구문:
캐스트(메이저 토토 사이트AS유형 ) 메이저 토토 사이트::유형
그캐스트구문은 SQL을 따릅니다. 는 구문::역사적임PostgreSQL사용법.
알려진 유형의 값 메이저 토토 사이트식에 캐스트가 적용될 때, 런타임 유형 변환을 나타냅니다. 캐스트는 성공할 것입니다 적절한 유형 변환 작업이 정의된 경우. 공지사항 이는 상수가 있는 캐스트를 사용하는 것과 미묘하게 다릅니다. 에 표시된 대로섹션 4.1.2.7. 장식되지 않은 문자열 리터럴에 적용된 캐스트 리터럴 상수에 대한 유형의 초기 할당을 나타냅니다. 값을 가지므로 모든 유형에 대해 성공할 것입니다( 문자열 리터럴은 데이터 유형에 허용되는 입력 구문입니다.
명시적인 유형 캐스팅은 일반적으로 없는 경우 생략될 수 있습니다. 값 메이저 토토 사이트식이 생성해야 하는 유형에 대한 모호성(예: 예를 들어 테이블 열에 할당된 경우); 시스템은 이러한 경우 자동으로 유형 캐스트를 적용합니다. 그러나 자동 캐스팅은 표시된 캐스트에 대해서만 수행됩니다."암시적으로 적용해도 괜찮습니다"시스템 카탈로그에 있습니다. 다른 캐스트는 명시적인 캐스팅 구문을 사용하여 호출해야 합니다. 이 제한은 예상치 못한 전환을 방지하기 위한 것입니다. 자동으로 적용됩니다.
함수와 같은 유형을 사용하여 유형 변환을 지정하는 것도 가능합니다 구문:
유형 이름 ( 메이저 토토 사이트 )
그러나 이것은 이름이 다음과 같이 유효한 유형에 대해서만 작동합니다. 함수 이름. 예를 들어,더블 정밀도이 방법은 사용할 수 없지만 동등한 방법으로 사용할 수 있습니다.float8할 수 있습니다. 또한 이름은간격, 시간및타임스탬프이 방식으로만 사용할 수 있습니다 구문 충돌로 인해 큰따옴표로 묶인 경우. 따라서 함수형 캐스트 구문을 사용하면 다음과 같은 이점이 있습니다. 불일치가 있으므로 피해야 합니다.
참고:함수와 유사한 구문은 사실 단지 함수일 뿐입니다 전화. 두 가지 표준 캐스트 구문 중 하나를 사용하여 다음을 수행하는 경우 런타임 변환을 수행하면 내부적으로 등록된 변환을 수행하는 함수입니다. 관례적으로 이러한 변환은 함수는 출력 유형과 동일한 이름을 가지므로"함수와 유사한 구문"더 이상 아무것도 아닙니다 기본 변환 함수를 직접 호출하는 것보다. 분명히 이것은 이식 가능한 응용 프로그램이 해야 하는 것이 아닙니다. 의지하다. 자세한 내용은 참조캐스트 만들기.
그콜레이트절이 다음을 재정의합니다. 메이저 토토 사이트식의 조합. 라는 메이저 토토 사이트에 덧붙여집니다. 적용 대상:
expr콜레이트조합
어디에서조합아마도 스키마 한정 식별자.콜레이트절은 연산자보다 더 엄격하게 바인딩됩니다. 괄호는 다음과 같은 경우에 사용할 수 있습니다. 필요합니다.
데이터 정렬이 명시적으로 지정되지 않은 경우 데이터베이스 시스템은 또는 관련된 열에서 데이터 정렬을 파생합니다. 메이저 토토 사이트식이거나 기본값은 데이터베이스의 기본 데이터 정렬입니다. 메이저 토토 사이트식에 열이 포함되지 않은 경우.
두 가지 일반적인 용도콜레이트절이 정렬 순서를 재정의하고 있습니다.주문 기준절, 예:
tbl WHERE에서 a, b, c를 선택하세요... 한 부씩 "C"로 주문하세요;
그리고 함수 또는 연산자 호출의 대조를 재정의합니다. 로케일을 구분하는 결과가 있습니다. 예를 들면 다음과 같습니다.
SELECT * FROM tbl WHERE a 'foo' COLLATE "C";
후자의 경우에는콜레이트절은 다음의 입력 인수에 첨부됩니다. 우리가 영향을 미치고 싶은 연산자. 어느 쪽 주장이던 상관없어요 연산자 또는 함수 호출은콜레이트절이 첨부됩니다. 왜냐하면 연산자 또는 함수는 모든 인수를 고려하여 파생됩니다. 명시적인콜레이트절이 재정의됩니다. 다른 모든 인수의 조합. (일치하지 않는 첨부)콜레이트둘 이상의 인수에 대한 절, 그러나 오류입니다. 자세한 내용은 참조섹션 22.2.) 따라서 이는 동일한 결과를 제공합니다. 이전 예의 결과:
SELECT * FROM tbl 대조 위치 "C" 'foo';
그러나 이것은 오류입니다:
SELECT * FROM tbl WHERE (a 'foo') "C" 대조;
왜냐하면 결과에 대조를 적용하려고 시도하기 때문입니다.연산자입니다. 대조할 수 없는 데이터 유형부울.
스칼라 하위 쿼리는 일반 쿼리입니다.선택1개의 열과 정확히 1개의 행을 반환하는 괄호 안의 쿼리입니다. (참조토토 사이트 : 문서 : 9.3 : 쿼리다음에 대한 정보 쿼리 작성.) The선택쿼리는 다음과 같습니다 실행되고 단일 반환 값이 주변에서 사용됩니다. 가치 메이저 토토 사이트. 더 많은 것을 반환하는 쿼리를 사용하는 것은 오류입니다 두 개 이상의 행 또는 두 개 이상의 열을 스칼라 하위 쿼리로 사용합니다. (하지만 만약에, 특정 실행 중에 하위 쿼리는 행을 반환하지 않습니다. 오류가 아닙니다. 스칼라 결과는 null로 간주됩니다.) 하위 쿼리 주변 쿼리의 변수를 참조할 수 있습니다. 하위 쿼리를 평가하는 동안 상수로 사용됩니다. 또한 참조하세요PostgreSQL : 문서 : 9.3 : 서브 퀘리 토토 꽁 머니식기타용 하위 쿼리가 포함된 메이저 토토 사이트식입니다.
예를 들어, 다음은 다음에서 가장 많은 도시 인구를 찾습니다. 각 주:
이름 선택, (도시에서 최대(팝) 선택, WHERE 도시.주 = 주.이름)
상태에서;배열 생성자는 배열 값을 구성하는 메이저 토토 사이트식입니다. 멤버 요소에 값을 사용합니다. 간단한 배열 생성자 키워드로 구성됨어레이, 왼쪽 대괄호[, 메이저 토토 사이트식 목록 (쉼표로 구분) 배열 요소 값에 대해, 마지막으로 오른쪽 대괄호]. 예를 들면:
배열 선택[1,2,3+4]; 배열 --------- 1,2,7
기본적으로 배열 요소 유형은 다음의 일반적인 유형입니다. 멤버 메이저 토토 사이트식은 와 동일한 규칙을 사용하여 결정됩니다.유니온또는사례구조물(참조PostgreSQL : 문서 : 9.3 : 범퍼카 토토, Case 및 관련 구성). 배열을 명시적으로 캐스팅하여 이를 재정의할 수 있습니다. 원하는 유형으로 생성자를 지정합니다. 예를 들면 다음과 같습니다.
선택 배열[1,2,22.7]::정수[]; 배열 ---------- 1,2,23
이것은 각 메이저 토토 사이트식을 배열에 캐스팅하는 것과 동일한 효과가 있습니다. 요소 유형을 개별적으로 지정합니다. 캐스팅에 대한 자세한 내용은 다음을 참조하세요.섹션 4.2.9.
다차원 배열 값은 배열을 중첩하여 구축할 수 있습니다. 생성자. 내부 생성자에서 키워드는어레이생략 가능합니다. 예를 들어, 이들은 다음을 생성합니다. 같은 결과:
배열 선택[ARRAY[1,2], ARRAY[3,4]];
배열
---------------
1,2,3,4
다차원 배열은 직사각형이어야 하므로 내부 동일한 수준의 생성자는 동일한 하위 배열을 생성해야 합니다. 치수. 외부에 적용된 모든 캐스트어레이생성자는 모든 사용자에게 자동으로 전파됩니다. 내부 생성자.
다차원 배열 생성자 요소는 무엇이든 될 수 있습니다. sub-뿐만 아니라 적절한 종류의 배열을 생성합니다.어레이구조물. 예를 들면:
테이블 생성 arr(f1 int[], f2 int[]);
INSERT INTO arr VALUES (ARRAY[[1,2],[3,4]], ARRAY[[5,6],[7,8]]);
배열 선택[f1, f2, '9,10,11,12'::int[]] FROM arr;
배열
------------------------------------------------
1,2,3,4,5,6,7,8,9,10,11,12
빈 배열을 구성할 수 있지만 불가능하기 때문에 유형이 없는 배열이 있는 경우 빈 값을 명시적으로 캐스팅해야 합니다. 원하는 유형으로 배열합니다. 예를 들면:
선택 배열[]::integer[]; 배열 -------
다음의 결과로부터 배열을 구성하는 것도 가능합니다 하위 쿼리. 이 형식에서 배열 생성자는 다음과 같이 작성됩니다. 키워드어레이다음에 괄호 안에 (괄호 안) 하위 쿼리. 예를 들면:
SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');
배열
----------------------------------------------------------
2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31,2412,2413
하위 쿼리는 단일 열을 반환해야 합니다. 결과 1차원 배열은 각 행에 대한 요소를 갖습니다. 하위 쿼리 결과, 요소 유형이 요소 유형과 일치함 하위 쿼리의 출력 열입니다.
다음으로 구축된 배열 값의 첨자어레이항상 1로 시작합니다. 자세한 내용은 배열에 대해서는 참조PostgreSQL : 문서 : 9.3 : 토토 꽁 머니.
행 생성자는 행 값을 구성하는 메이저 토토 사이트식입니다(또한 복합 값이라고 함) 구성원 필드의 값을 사용합니다. 행 생성자는 키워드로 구성됩니다.ROW, 왼쪽 괄호, 0개 이상의 메이저 토토 사이트식(쉼표로 구분) 행 필드 값의 경우 마지막으로 오른쪽 괄호입니다. 에 대한 예:
SELECT ROW(1,2.5,'테스트입니다');
핵심 단어ROW다음이 있는 경우 선택사항입니다. 목록에 메이저 토토 사이트식이 두 개 이상 있습니다.
행 생성자는 다음 구문을 포함할 수 있습니다.행값.*, 행 값의 요소 목록으로 확장됩니다. 다음과 같은 경우에 발생합니다..*구문은 다음에서 사용됩니다. a의 최상위 레벨선택목록(참조섹션 8.16.5). 에 대한 예, 테이블인 경우t열이 있음f1그리고f2이것은 동일:
t에서 행 선택(t.*, 42); t에서 행 선택(t.f1, t.f2, 42);
참고:이전PostgreSQL8.2, 그.*구문이 행에서 확장되지 않았습니다. 생성자, 그래서 쓰기ROW(t.*, 42)첫 번째 필드가 다른 행 값인 두 필드 행을 생성했습니다. 일반적으로 새로운 동작이 더 유용합니다. 오래된 것이 필요하다면 중첩된 행 값의 동작, 내부 행 값을 쓰지 않음.*, 예를 들어ROW(t, 42).
기본적으로 a에 의해 생성된 값은ROW메이저 토토 사이트식은 익명 레코드 유형입니다. 필요하다면 그럴 수 있다. 명명된 복합 유형(테이블의 행 유형 또는 다음으로 생성된 복합 유형유형 작성 그대로. 모호함을 피하기 위해 명시적인 캐스트가 필요할 수 있습니다. 에 대한 예:
CREATE TABLE mytable(f1 int, f2 float, f3 text);
CREATE FUNCTION getf1(mytable)은 int AS 'SELECT $1.f1' LANGUAGE SQL을 반환합니다.
-- getf1()이 하나만 존재하므로 캐스트가 필요하지 않습니다.
SELECT getf1(ROW(1,2.5,'이것은 테스트입니다'));
getf1
-------
1
(1줄)
CREATE TYPE myrowtype AS (f1 int, f2 텍스트, f3 숫자);
CREATE FUNCTION getf1(myrowtype) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;
-- 이제 호출할 함수를 나타내는 캐스트가 필요합니다.
SELECT getf1(ROW(1,2.5,'이것은 테스트입니다'));
오류: getf1(레코드) 함수가 고유하지 않습니다.
SELECT getf1(ROW(1,2.5,'이것은 테스트입니다.')::mytable);
getf1
-------
1
(1줄)
SELECT getf1(CAST(ROW(11,'이것은 테스트입니다.',2.5) AS myrowtype));
getf1
-------
11
(1행)
행 생성자는 다음과 같은 복합 값을 구축하는 데 사용될 수 있습니다. 복합형 테이블 컬럼에 저장되거나 복합 매개변수를 받아들이는 함수. 또한 가능합니다 두 행 값을 비교하거나 행을 테스트하려면IS NULL또는NULL이 아닙니다, 예:
SELECT ROW(1,2.5,'테스트입니다') = ROW(1, 3, '같지 않음'); SELECT ROW(table.*) IS NULL FROM 테이블; -- 모두 null 행을 감지
자세한 내용은 참조PostgreSQL : 문서 : 9.3 : 행 및 스포츠 토토 비교. 행 생성자는 다음과 관련하여 사용될 수도 있습니다. 하위 쿼리(에서 설명한 대로)섹션 9.22.
하위 메이저 토토 사이트식의 평가 순서는 정의되지 않았습니다. 에서 특히, 연산자나 함수의 입력은 반드시 왼쪽에서 오른쪽으로 또는 기타 고정된 방향으로 평가됩니다. 주문하세요.
또한, 메이저 토토 사이트식의 결과가 다음으로 결정될 수 있다면 그 중 일부만 평가하면 다른 하위 메이저 토토 사이트식이 전혀 평가되지 않습니다. 예를 들어 다음과 같이 썼다면:
참 OR somefunc()을 선택하세요;
그런 다음somefunc()(아마도) 그렇지 않을 것입니다 전혀 전화하지 않았습니다. 다음과 같이 쓴 경우에도 마찬가지입니다.
somefunc() 또는 true를 선택하세요.
이것은 왼쪽에서 오른쪽으로와 동일하지 않습니다."단락"부울 연산자의 일부 프로그래밍 언어에서 발견됩니다.
결과적으로 측면과 함께 함수를 사용하는 것은 현명하지 않습니다. 복잡한 메이저 토토 사이트의 일부로 효과. 특히 부작용이나 평가 순서에 의존하는 것은 위험합니다.어디그리고가지고 있는 중절, 해당 조항은 다음의 일부로 광범위하게 재처리되기 때문입니다. 실행 계획을 개발합니다. 부울 메이저 토토 사이트식(그리고/또는/아님50694_50800
강제 평가 순서가 필수적인 경우, a사례구성(참조섹션 9.17)을 사용할 수 있습니다. 에 대한 예를 들어, 이것은 분열을 피하려는 신뢰할 수 없는 방법입니다. a에서 0으로어디절:
선택 ... x 0 AND y/x 1.5;
그러나 이것은 안전합니다:
SELECT ... WHERE CASE WHEN x 0 THEN y/x 1.5 ELSE false END;
A 사례이런 방식으로 사용되는 구성물 최적화 시도가 무효화되므로 다음과 같은 경우에만 수행해야 합니다. 필요합니다. (이 특별한 예에서는 글을 써서 문제를 회피하세요.y 1.5*x대신.)
사례이런 문제에 대한 만병통치약은 아닙니다. 그러나. 위에서 설명한 기술의 한 가지 제한 사항은 다음과 같습니다. 상수 하위 메이저 토토 사이트식의 초기 평가를 방해하지 않습니다. 다음과 같이 설명됨PostgreSQL : 문서 : 9.3 : 토토 사이트 변동성 범주, 표시된 함수 및 연산자불변쿼리가 계획된 시점이 아닌 계획된 시점에 평가될 수 있습니다. 실행. 따라서 예를 들어
SELECT CASE WHEN x 0 THEN x ELSE 1/0 END FROM 탭;
다음으로 인해 0으로 나누기가 실패할 가능성이 높습니다. 플래너는 상수 하위 메이저 토토 사이트식을 단순화하려고 시도합니다. 테이블의 모든 행에는x 0그래서 그ELSE팔은 절대로 들어가지 않을 것입니다 런타임에.
그 특별한 예는 어리석게 보일 수도 있지만 관련 사례 분명히 상수를 포함하지 않는 쿼리에서 발생할 수 있습니다. 함수 인수의 값 때문에 함수 내에서 실행됩니다. 지역 변수는 쿼리에 상수로 삽입될 수 있습니다. 계획 목적. 이내PL/pgSQL함수(예: 사용)IF-그때-ELSE위험한 계산을 보호하기 위한 진술은 그냥 중첩하는 것보다 훨씬 안전합니다.사례메이저 토토 사이트.
동일한 종류의 또 다른 제한 사항은 다음과 같습니다.사례집계 평가를 방지할 수 없습니다. 그 안에 메이저 토토 사이트식이 포함되어 있습니다. 집계 메이저 토토 사이트식은 다음과 같기 때문입니다. a의 다른 메이저 토토 사이트식보다 먼저 계산됩니다.선택목록 또는가지고 있는 중절이 고려됩니다. 예를 들어, 다음 쿼리는 겉으로는 보호를 받았음에도 불구하고 0으로 나누기 오류 그것:
최소(직원) 0인 경우 사례 선택
THEN 평균(비용 / 직원)
종료
부서에서;
그분()그리고평균()집계는 동시에 계산됩니다.
모든 입력 행이므로 행에 다음이 있는 경우직원0과 같음, 0으로 나누기
결과를 테스트하기 전에 오류가 발생합니다.
의분(). 대신에 a를 사용하세요.어디에서문제가 있는 입력 행을 방지하기 위한 절
먼저 집계 함수에 도달합니다.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 어휘 구조 | 위로 | 함수 호출 |