PostgreSQL 8.2.23 문서 | ||||
---|---|---|---|---|
이전 | 빠른 뒤로 | 4 장 SQL 통사론 | 빠른 전달 | PostgreSQL : 문서 : 8.2 : 토토 핫 정의 |
값 스포츠 토토 사이트식은 다양한 상황에서 사용됩니다. 의 대상 목록에서select명령, 새 열 값으로삽입또는업데이트또는 검색 조건에서 명령 수. 값 스포츠 토토 사이트의 결과는 때때로입니다 a스칼라, 그것을 구별하기 위해 테이블 스포츠 토토 사이트식 (테이블)의 결과. 값 따라서 스포츠 토토 사이트은라고도합니다.스칼라 스포츠 토토 사이트(또는 간단히스포츠 토토 사이트). 스포츠 토토 사이트식 구문이 허용합니다 산술을 사용하여 원시 부품의 값 계산, 논리, 세트 및 기타 작업.
값 스포츠 토토 사이트식은 다음 중 하나입니다.
상수 또는 문자 그대로의 가치.
열 참조.
a의 본문에서 위치 매개 변수 참조 기능 정의 또는 준비된 문.
구독 스포츠 토토 사이트식.
필드 선택 스포츠 토토 사이트.
운영자 호출.
함수 호출.
집계 스포츠 토토 사이트.
타입 캐스트.
스칼라 하위 쿼리.
배열 생성자.
행 생성자.
괄호 안의 또 다른 값 스포츠 토토 사이트식, 그룹에 유용합니다 하위 스포츠 토토 사이트 및 우선 순위를 무시합니다.
이 목록 외에도 많은 구성이 있습니다. 그것은 스포츠 토토 사이트으로 분류 될 수 있지만 아무것도 따르지 않습니다. 일반 구문 규칙. 이것들은 일반적으로 a의 의미를 가지고 있습니다 기능 또는 연산자이며 적절한 것으로 설명됩니다 위치토토 핫 : 문서 : 8.2 : 기능 및 연산자. 예는 그만큼is null절.
우리는 이미 상수에 대해 논의했습니다섹션 4.1.2. 다음 섹션에서는 나머지 옵션에 대해 설명합니다.
열은 양식에서 참조 할 수 있습니다
상관 관계.ColumnName
상관 관계는 a의 이름입니다 테이블 (스키마 이름으로 자격이있을 수 있음) 또는 a에 의해 정의 된 테이블From절 또는 핵심 단어 중 하나NEW또는old. (NEWandold재 작성 규칙으로 만 표시 될 수 있습니다. 다른 상관 관계 이름은 모든 SQL에서 사용할 수 있습니다. 명령문.) 상관 이름과 분리 점은 다음과 같습니다 열 이름이 모든 테이블에서 고유 한 경우 생략 현재 쿼리에서 사용됩니다. (참조7 장.)
위치 매개 변수 참조는 값을 나타내는 데 사용됩니다. 이는 SQL 문에 외부에서 제공됩니다. 매개 변수입니다 SQL 기능 정의 및 준비된 쿼리에 사용됩니다. 일부 클라이언트 라이브러리는 또한 데이터 값 지정을 별도로 지원합니다 SQL 명령 문자열에서,이 경우 매개 변수가 사용됩니다. 외부 데이터 값을 참조합니다. a의 형태 매개 변수 참조는 다음과 같습니다.
$번호
예를 들어 함수의 정의를 고려하십시오부서
, as
함수 부서 작성 (텍스트)은 부서를 반환합니다 AS $$ select *에서 from dept where name = $ 1 $$ 언어 SQL;
여기$ 1값을 참조하십시오 기능이있을 때마다 첫 번째 함수 인수 호출.
스포츠 토토 사이트식이 배열 유형의 값을 산출하면 a. 배열 값의 특정 요소는 글쓰기
스포츠 토토 사이트[첨자]
또는 다중 인접 요소 (an"배열 일부분") 쓰기로 추출 할 수 있습니다
스포츠 토토 사이트[lower_subscript:어퍼 _subscript]
(여기, 괄호[]문자 그대로 나타납니다.) 각첨자그 자체는 스포츠 토토 사이트입니다 정수 가치를 산출해야합니다.
일반적으로 배열스포츠 토토 사이트괄호 안에 있어야하지만 스포츠 토토 사이트이 될 때 괄호가 생략 될 수 있습니다 구역은 단지 열 참조 또는 위치 매개 변수입니다. 또한 원본 일 때 여러 개의 첨자를 연결할 수 있습니다 배열은 다차원입니다. 예를 들어,
mytable.arraycolumn [4] mytable.two_d_column [17] [34] $ 1 [10:42] (Arayfunction (A, B)) [42]
마지막 예제의 괄호가 필요합니다. 보다롤 토토 PostgreSQL : 문서 : 8.2 : 어레이더 많은 정보 배열.
스포츠 토토 사이트식이 복합 유형의 값을 산출하는 경우 (행 유형), 그런 다음 행의 특정 필드를 추출 할 수 있습니다. 글쓰기
스포츠 토토 사이트.FieldName
일반적으로 행스포츠 토토 사이트괄호 안에 있어야하지만 선택할 스포츠 토토 사이트식이 생략 될 수 있습니다. From은 단지 테이블 참조 또는 위치 매개 변수입니다. 을 위한 예,
mytable.mycolumn $ 1. Somecolumn (rowfunction (a, b)). col3
(따라서 자격을 갖춘 열 참조는 실제로 a입니다 필드 선택 구문의 특별 사례)
연산자에게는 세 가지 가능한 구문이 있습니다 기도:
스포츠 토토 사이트 운영자 스포츠 토토 사이트(바이너리치기 연산자) |
운영자 스포츠 토토 사이트(단수 접두사 연산자) |
스포츠 토토 사이트 운영자(unery postfix 연산자) |
연산자 (스키마.OperatorName18999_19002
어떤 특정 사업자가 존재하고 단독인지 여부 또는 이진은 시스템 또는 사용자.토토 핫 : 문서 : 8.2 : 기능 및 연산자내장 연산자를 설명합니다.
함수 호출의 구문은 함수의 이름입니다. (스키마 이름으로 자격이있을 수 있음) 괄호 안에 밀폐 된 인수 목록 :
기능([스포츠 토토 사이트[, 스포츠 토토 사이트 ... ]])
예를 들어, 다음은 제곱근을 계산합니다 2 :
SQRT (2)
내장 기능 목록이9 장. 다른 기능은 추가 할 수 있습니다 사용자.
an집계 스포츠 토토 사이트행에 걸쳐 집계 기능의 적용 쿼리에 의해 선택되었습니다. 집계 함수는 다중 감소를 감소시킵니다 합 또는 평균과 같은 단일 출력 값에 대한 입력 입력. 집계 스포츠 토토 사이트의 구문은 수행원:
Aggregate_name(스포츠 토토 사이트[, ...])Aggregate_name(All스포츠 토토 사이트[, ...])Aggregate_name(고유 한스포츠 토토 사이트[, ...])Aggregate_name( *)
여기서Aggregate_nameis 이전에 정의 된 집계 (스키마로 자격이있을 수 있습니다 이름) 및스포츠 토토 사이트그 자체가 아닌 값 스포츠 토토 사이트은 집계를 포함합니다 스포츠 토토 사이트.
첫 번째 골재 스포츠 토토 사이트 형태는 집계를 호출합니다
주어진 스포츠 토토 사이트식 (들)이 산출하는 모든 입력 행에서
널 값이 아닌 값. (실제로는 집계 기능에 달려 있습니다
널 값을 무시할 것인지 아닌지 - 그러나 모든 표준
두 번째 형태는 첫 번째 형태와 동일합니다.all기본값입니다. 세 번째 형태
모든 뚜렷한 비 널 값에 대한 집계를 호출합니다.
입력 행에서 발견 된 스포츠 토토 사이트식. 마지막 양식은 다음을 호출합니다
널 또는 널에 관계없이 각 입력 행에 대해 한 번 집계
null 값이 아닌 값; 특정 입력 값이 지정되지 않으므로
일반적으로에만 유용합니다.count (*)
집계 기능.
예를 들어count (*)총 입력 행 수;count (f1)입력 행의 수를 산출합니다.F1is null;count (별개의 f1)고유 한 수를 산출합니다 의 비 널 값F1.
사전 정의 된 집계 함수는에 설명되어 있습니다.섹션 9.15. 다른 집계 사용자가 함수를 추가 할 수 있습니다.
집계 스포츠 토토 사이트식은 결과 목록에만 나타날 수 있습니다. 또는a 조항select명령. 다른 사람에게는 금지되어 있습니다 조항, 예 :여기서조항은 결과 전에 논리적으로 평가됩니다 골재가 형성됩니다.
집계 스포츠 토토 사이트식이 하위 쿼리에 나타날 때 (참조섹션 4.2.9andPostgreSQL :), 집계는 일반적으로 행을 통해 평가됩니다. 하위 쿼리. 그러나 집계가있는 경우 예외가 발생합니다 인수에는 외부 수준 변수 만 포함됩니다 : 집계 그런 다음 가장 가까운 외부 레벨에 속하며 평가됩니다. 그 쿼리의 행 위에. a로서의 응집체 발현 그런 다음 전체가 나타나는 하위 쿼리의 외부 참조입니다. 그에 대한 한 가지 평가보다 상수 역할을합니다. 하위 퀴어. 결과에만 나타나는 제한 목록 또는조항이 적용됩니다 집계가 속한 쿼리 레벨에 대한 존중.
참고 : PostgreSQL현재 지원하지 않습니다별도의둘 이상의 입력 스포츠 토토 사이트.
유형 캐스트는 하나의 데이터 유형에서 변환을 지정합니다. 또 다른.PostgreSQL수락 유형 캐스트에 대한 두 개의 동등한 구문 :
cast (스포츠 토토 사이트as타입)스포츠 토토 사이트::타입
the캐스트구문은 SQL을 준수합니다. 의 구문::역사적PostgreSQL사용법.
캐스트가 알려진 값의 값 스포츠 토토 사이트에 적용되는 경우 유형, 런타임 유형 변환을 나타냅니다. 캐스트는 할 것이다 적절한 유형 변환 작업이있는 경우에만 성공합니다. 한정된. 이것은 사용과 미묘하게 다릅니다. 상수가있는 캐스트,섹션 4.1.2.5. 캐스트가 불완전한 문자 문자 그대로 적용됩니다 문자 그럴에 유형의 초기 할당을 나타냅니다. 일정한 값, 따라서 모든 유형에 대해 성공할 것입니다 ( 문자열 리터럴의 내용은 허용 가능한 입력 구문입니다. 데이터 유형).
명시 적 유형 캐스트는 일반적으로 없으면 생략 할 수 있습니다. 값 스포츠 토토 사이트식이 생성 해야하는 유형에 대한 모호성 (예를 들어, 테이블 열에 할당 될 때); 그만큼 시스템은 이러한 경우에 주조 된 유형을 자동으로 적용합니다. 그러나 자동 캐스팅은 캐스트에 대해서만 수행됩니다. 두드러진"암시 적으로 적용해도"in 시스템이 카탈로그합니다. 다른 캐스트는 명시 적으로 호출되어야합니다 캐스팅 구문. 이 제한은 방지하기위한 것입니다 조용히 적용되는 놀라운 전환.
함수와 같은 구문 :
typename(스포츠 토토 사이트)
그러나 이것은 이름도있는 유형에 대해서만 작동합니다. 함수 이름으로 유효합니다. 예를 들어,이중 정밀이런 식으로 사용할 수 없지만 동등한float8can. 또한 이름간격, 시간및타임 스탬프can 이 패션에서만 두 번 인용되는 경우에만 사용됩니다. 구문 갈등. 따라서 함수와 같은 사용 캐스트 구문은 불일치로 이어질 것입니다 새로운 응용 프로그램에서는 피합니다. (함수와 같은 구문이 있습니다 사실 기능 호출. 두 표준 캐스트 중 하나 일 때 구문은 런타임 변환을 수행하는 데 사용됩니다. 내부적으로 등록 된 기능을 호출하여 수행합니다 변환. 컨벤션에 따르면, 이러한 전환 기능은 다음과 같습니다 출력 유형과 동일한 이름이므로"기능형 구문"기본 변환 기능의 직접 호출. 분명히, 이것은 휴대용 응용 프로그램이 아닙니다 의존해야합니다.)
스칼라 하위 쿼리는 평범합니다select정확히 반환되는 괄호 안의 쿼리 열 하나의 열이 하나입니다. (보다토토 캔 : 문서 : 8.2 : 쿼리쿼리 작성에 대한 정보.)select쿼리가 실행되고 단일이 반환됩니다 값은 주변 값 스포츠 토토 사이트식에 사용됩니다. 그것은 오류는 둘 이상의 행 이상을 반환하는 쿼리를 사용하는 오류입니다. 스칼라 하위 쿼리로서 하나의 열보다. (그러나 만약 특별한 실행, 하위 쿼리는 행이없고, 오류; 스칼라 결과는 널로 사용됩니다.) 하위 쿼리는 주변 쿼리의 변수를 참조하여 작동합니다. 하위 쿼리의 하나의 평가 중 상수로. 보다 또한PostgreSQL : 문서 : 8.2 : 하위 스포츠 토토 베트맨 표현식하위 쿼리와 관련된 기타 스포츠 토토 사이트.
예를 들어, 다음은 가장 큰 도시 인구를 찾습니다 각 주에서 :
이름을 선택하십시오. 주에서;
배열 생성자는 배열을 작성하는 스포츠 토토 사이트식입니다. 회원 요소의 값에서 값. 간단한 배열 생성자는 핵심 단어로 구성됩니다배열, 왼쪽 사각형 브래킷[, 하나 이상의 스포츠 토토 사이트식 (쉼표로 구분) 배열 요소 값과 마지막으로 오른쪽 정사각형 까치발]. 예를 들어,
배열 선택 [1,2,3+4]; 정렬 ------- 1,2,7
배열 요소 유형은 멤버의 공통 유형입니다. 스포츠 토토 사이트식, for와 동일한 규칙을 사용하여 결정Union또는CASE구조물 (참조PostgreSQL :).
다차원 배열 값은 중첩 어레이로 구축 할 수 있습니다 생성자. 내부 생성자에서 핵심 단어배열생략 될 수 있습니다. 예를 들어, 이들은 동일한 결과를 생성합니다.
배열 선택 [배열 [1,2], 배열 [3,4]]; 정렬 ----------------- 1,2, 3,4
다차원 배열은 직사각형이어야하므로 내부입니다 같은 레벨의 생성자는 서브 배달을 생성해야합니다 동일한 치수.
다차원 배열 생성자 요소는 무엇이든 될 수 있습니다 하위 단순한 것뿐만 아니라 적절한 종류의 배열을 산출합니다.배열구성. 예를 들어:
테이블 생성 테이블 arr (f1 int [], f2 int []); ARR 값에 삽입 (배열 [1,2], [3,4]], 배열 [[5,6], [7,8]]); 배열 [f1, f2, '9,10, 11,12':: int []]를 선택하십시오. 정렬 ------------------------------------------------ 1,2, 3,4, 5,6, 7,8, 9,10, 11,12
결과에서 배열을 구성 할 수도 있습니다. 하위 퀘스트의. 이 형식으로 배열 생성자가 작성됩니다 키워드배열괄호 화 된 (괄호 안) 하위 쿼리. 예를 들어:
배열 선택 ( 'bytea%'와 같은 proname과 같은 pg_proc에서 OID를 선택); ?열? ---------------------------------------------------------------------------------- 2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31
하위 쿼리는 단일 열을 반환해야합니다. 결과 1 차원 배열은 각 행에 요소가 있습니다. 하위 쿼리 결과, 요소 유형이 하위 쿼리의 출력 열.
|배열항상 하나부터 시작합니다. 자세한 내용 배열에 대한 정보, 참조롤 토토 PostgreSQL.
행 생성자는 행 값을 구축하는 스포츠 토토 사이트식입니다. 회원의 값에서 (복합 값이라고도 함) 전지. 행 생성자는 키워드로 구성됩니다Row, 왼쪽 괄호, 0 이상 행 필드 값에 대한 스포츠 토토 사이트식 (쉼표로 구분). 마지막으로 올바른 괄호. 예를 들어,
Select Row (1,2.5, '이것은 테스트입니다');
키워드Row옵션은 언제입니다 목록에는 둘 이상의 스포츠 토토 사이트이 있습니다.
행 생성자는 구문을 포함 할 수 있습니다RowValue.*, 행의 요소 목록으로 확장됩니다. 값, 발생하는 것처럼.*구문은 A의 최상위 레벨에서 사용됩니다select목록. 예를 들어, 표t열이 있습니다F1andF2, 동일합니다 :
t에서 행 (t.*, 42)을 선택하십시오. t.f1, t.f2, 42)를 선택하여 t;
참고 :전PostgreSQL8.2,.*구문이 확장되지 않았으므로 쓰기Row (t.*, 42)2 필드를 만들었습니다 첫 번째 필드는 또 다른 행 값이었습니다. 새로운 행동은 일반적으로 더 유용합니다. 오래된 것이 필요하다면 중첩 행 값의 동작, 내부 행 값 쓰기 없이.*, 예를 들어행 (t, 42).
기본적으로 ARow스포츠 토토 사이트식은 익명 레코드 유형입니다. 필요한 경우 이름이 지정된 합성 유형으로 캐스트 될 수 있습니다. 테이블의 행 유형 또는로 만든 복합 유형유형 생성. 명백한 캐스트가 5 월 모호성을 피하기 위해 필요합니다. 예를 들어:
테이블 생성 mytable (f1 int, f2 float, f3 텍스트); 기능 getf1 (mytable) 생성 int를 'select $ 1.f1'언어 SQL로 반환합니다. - 하나의 getf1 () 만 존재하기 때문에 캐스트가 필요하지 않습니다 getf1을 선택하십시오 (행 (1,2.5, '이것은 테스트입니다'); getf1 ------- 1 (1 줄) 유형 myrowtype (f1 int, f2 text, f3 numeric)를 만듭니다. 기능 getf1 (myrowtype)은 int를 'select $ 1.f1'언어 SQL로 반환합니다. - 이제 호출 할 기능을 표시하려면 캐스트가 필요합니다. getf1을 선택하십시오 (행 (1,2.5, '이것은 테스트입니다'); 오류 : 함수 getf1 (레코드)은 고유하지 않습니다 getf1 (행 (1,2.5, '테스트입니다') :: mytable); getf1 ------- 1 (1 줄) getf1을 선택하십시오 (cast (행 (11, '이것은 테스트입니다', 2.5))); getf1 ------- 11 (1 행)
행 생성자를 사용하여 복합 값을 만들 수 있습니다. 복합 유형 테이블 열에 저장되거나 복합 매개 변수를 수락하는 함수. 또한, 그것은입니다 두 행 값을 비교하거나 행을 |is null또는그렇지 않습니다 널, 예를 들어
SELECT ROW (1,2.5, '테스트입니다') = 행 (1, 3, '동일하지 않음'); SELECT ROW (표*)는 테이블에서 NULL입니다. -완전히 널 줄 감지
자세한 내용은 참조섹션 9.17. 행 생성자 에서 논의 된대로 하위 쿼리와 관련하여 사용할 수 있습니다.PostgreSQL : 문서 : 8.2 : 하위 스포츠 토토 베트맨 표현식.
하위 스포츠 토토 사이트의 평가 순서는 정의되지 않습니다. ~ 안에 특히, 연산자 또는 함수의 입력은 반드시 왼쪽에서 오른쪽으로 또는 다른 고정에서 평가되었습니다 주문하다.
스포츠 토토 사이트의 결과가있을 수 있다면 그것의 일부만 평가하여 결정한 다음 다른 부분을 평가하여 결정합니다. 하위 스포츠 토토 사이트은 전혀 평가되지 않을 수 있습니다. 예를 들어, if 한 사람은 |
true 또는 somefunc (); 선택
thesomefunc ()전혀 부름받지 않습니다. 하나도 마찬가지입니다 썼다
section nomefunc () 또는 true;
이것은 왼쪽에서 오른쪽과 동일하지 않다는 점에 유의하십시오"단락"36840_36912
결과적으로 측면과 기능을 사용하는 것은 현명하지 않습니다. 복잡한 스포츠 토토 사이트의 일부로서의 효과. 특히 그렇습니다 부작용 또는 평가 순서에 의존하는 데 위험합니다여기서and그 조항이기 때문에 조항 실행 개발의 일부로 광범위하게 재 처리되었습니다 계획. 부울 스포츠 토토 사이트 (및/또는/아님조합) 그 조항에서 부울 법에 의해 허용되는 모든 방식으로 재구성 대수학.
강제 평가 순서에 필수적인 경우 ACASE구성 (참조섹션 9.13)를 사용할 수 있습니다. 을 위한 예를 들어, 이것은 피하려고 시도하는 신뢰할 수없는 방법입니다. a에서 분할여기서절 :
선택 ... 여기서 x < 0 및 y/x 1.5;
하지만 안전합니다 :
선택 ... x < 0 일 때의 경우 y/x 1.5 else false end;
acase이것에 사용 된 구성 패션은 최적화 시도를 물리 칠 것이므로 필요할 때 완료되었습니다. (이 특별한 예에서는 그럴 것입니다 의심 할 여지없이 글을 써서 문제를 회피하는 것이 가장 좋습니다y 1.5*x대신.)
이전 | 홈 | PostgreSQL : 문서 : 8.2 : 토토 핫 정의 |
어휘 구조 | up | 데이터 정의 |