값 토토 베이식은 다음과 같은 다양한 상황에서 사용됩니다. 의 대상 목록에서선택명령, 새 열 값으로삽입또는업데이트또는 검색 조건에서 명령의 수. 값 토토 베이식의 결과는 때때로 a라고 불렀다스칼라과 구별하기 위해 테이블 토토 베이식(테이블)의 결과입니다. 가치 따라서 토토 베이식도 호출됩니다.스칼라 토토 베이(또는 간단히토토 베이). 토토 베이식 구문은 다음을 허용합니다. 산술을 사용하여 기본 부품의 값 계산, 논리, 집합 및 기타 연산.
값 토토 베이식은 다음 중 하나입니다:
상수 또는 리터럴 값. 참조섹션 1.1.2.
열 참조입니다.
위치 매개변수 참조, 본문에 있음 함수 선언.
연산자 호출입니다.
함수 호출입니다.
집계 토토 베이식.
타입 캐스트.
스칼라 하위 쿼리.
괄호 안의 또 다른 값 토토 베이, 그룹화에 유용함 하위 토토 베이식 및 재정의 우선순위.
이 목록 외에도 다수의 구성이 있습니다 토토 베이식으로 분류될 수 있지만 어떤 토토 베이식도 따르지 않는 일반적인 구문 규칙. 이들은 일반적으로 다음과 같은 의미를 갖습니다. 함수 또는 연산자에 대한 내용은 해당 항목에 설명되어 있습니다. 위치와이즈 토토 : 문서 : 7.3 : 기능 및 와이즈 토토. 예는 다음과 같습니다NULL입니다절.
우리는 이미 상수에 대해 논의했습니다.섹션 1.1.2. 는 다음 섹션에서는 나머지 옵션에 대해 설명합니다.
양식에서 열을 참조할 수 있습니다.
상관관계.열 이름
또는
상관관계.열 이름[아래첨자]
(여기서는 괄호[ ]의미입니다 문자 그대로 나타납니다.)
상관관계이름은 테이블(정규화된 것일 수 있음) 또는 다음으로 정의된 테이블의 별칭 a의 수단발신절 또는 키 단어신규또는오래된. (신규그리고오래된재작성 규칙에만 나타날 수 있습니다. 다른 상관 이름은 모든 SQL에서 사용될 수 있습니다. 명령문.) 상관 관계 이름과 구분 점은 다음과 같을 수 있습니다. 열 이름이 모든 테이블에서 고유한 경우 생략됩니다. 현재 쿼리에서 사용 중입니다. (또한 참조제4장.)
만약열배열입니다 입력한 다음 선택사항아래첨자특정 요소를 선택하거나 배열의 요소. 아래 첨자가 제공되지 않으면 전체 배열이 선택되었습니다. (참조PostgreSQL :배열에 대한 자세한 내용을 확인하세요.)
위치 매개변수 참조는 다음을 나타내는 데 사용됩니다. SQL문에 외부적으로 제공되는 매개변수입니다. 매개변수는 SQL 함수 정의 및 준비에서 사용됩니다. 쿼리. 매개변수 참조의 형식은 다음과 같습니다.
$번호
예를 들어, 함수의 정의를 생각해 보세요.부서, 다음과 같이
CREATE FUNCTION 부서(텍스트) RETURNS 부서
AS 'SELECT * FROM dept WHERE 이름 = $1'
언어 SQL;
여기는$1다음으로 대체됩니다. 함수가 호출될 때 첫 번째 함수 인수입니다.
연산자에는 세 가지 가능한 구문이 있습니다. 호출:
| 토토 베이 연산자 토토 베이(바이너리 중위어 연산자) |
| 연산자 토토 베이(단항 접두사 연산자) |
| 토토 베이 연산자(단항 접미사 연산자) |
연산자(스키마.운영자 이름)
어떤 특정 연산자가 존재하며 단항 연산자인지 여부 또는 바이너리는 다음에 의해 정의된 연산자에 따라 달라집니다. 시스템 또는 사용자.와이즈 토토 : 문서 : 7.3 : 기능 및 와이즈 토토내장된 연산자를 설명합니다.
함수 호출의 구문은 함수의 이름입니다 (스키마 이름으로 한정될 수 있음), 그 뒤에 괄호로 묶인 인수 목록:
함수 ([토토 베이 [, 토토 베이 ... ]] )
예를 들어, 다음은 다음의 제곱근을 계산합니다. 2:
sqrt(2)
내장 함수 목록은 다음에 있습니다.제6장. 다른 기능은 다음에 의해 추가될 수 있습니다. 사용자.
안집계 토토 베이식을 나타냄 행 전체에 집계 함수 적용 쿼리로 선택되었습니다. 집계 함수는 여러 항목을 줄입니다. 합계 또는 평균과 같은 단일 출력 값에 대한 입력 입력. 집계 토토 베이식의 구문은 다음 중 하나입니다. 다음:
aggregate_name (토토 베이) aggregate_name(전체토토 베이) aggregate_name(독특토토 베이) aggregate_name ( * )
어디에서aggregate_name은 이전에 정의된 집계(적격화된 이름일 수 있음) 및토토 베이모든 값 자체적으로 집계를 포함하지 않는 토토 베이식 토토 베이.
집계 토토 베이식의 첫 번째 형태는 집계를 호출합니다.
주어진 토토 베이식이 결과를 산출하는 모든 입력 행에 걸쳐
널이 아닌 값. (실제로는 집계함수에 달려있습니다.
null 값을 무시할지 여부 --- 하지만 모든 표준은
그렇습니다.) 두 번째 형식은 첫 번째 형식과 동일합니다.전체기본값입니다. 세 번째 형태
null이 아닌 모든 고유한 값에 대한 집계를 호출합니다.
입력 행에 토토 베이식이 있습니다. 마지막 양식은
null 또는 null 여부에 관계없이 각 입력 행에 대해 한 번씩 집계됩니다.
널이 아닌 값; 특별한 입력 값이 지정되지 않았기 때문에
일반적으로 다음 경우에만 유용합니다.수()집계 함수.
예를 들어,개수(*)수율 총 입력 행 수;수(f1)다음이 포함된 입력 행의 수를 산출합니다.f1null이 아닙니다.개수(고유 f1)개별 개수를 산출합니다. null이 아닌 값f1.
사전 정의된 집계 함수는 다음에 설명되어 있습니다.섹션 6.14. 기타 집계 기능은 사용자가 추가할 수 있습니다.
유형 변환은 하나의 데이터 유형에서 다음 데이터 유형으로의 변환을 지정합니다. 또 다른.PostgreSQL수락 유형 캐스트에 해당하는 두 가지 구문:
캐스트(토토 베이AS유형 ) 토토 베이::유형
그캐스트구문은 SQL을 따릅니다. 구문은::역사적임포스트그레SQL사용.
캐스트가 알려진 값 토토 베이식에 적용될 때 유형은 런타임 유형 변환을 나타냅니다. 출연진은 적절한 유형 변환 기능이 있는 경우에만 성공합니다. 가능합니다. 이는 의 사용과 미묘하게 다르다는 점에 유의하세요. 다음과 같이 상수로 캐스팅합니다.섹션 1.1.2.4. 장식되지 않은 문자열 리터럴에 적용된 캐스트 리터럴에 대한 유형의 초기 할당을 나타냅니다. 상수 값이므로 모든 유형에 대해 성공합니다(만약 문자열 리터럴의 내용은 다음에 대해 허용되는 입력 구문입니다. 데이터 유형).
명시적인 유형 캐스팅은 일반적으로 없는 경우 생략될 수 있습니다. 값 토토 베이식이 생성해야 하는 유형에 대한 모호성 (예를 들어 테이블 열에 할당된 경우) 는 이러한 경우 시스템은 자동으로 유형 캐스트를 적용합니다. 단, 자동 시전은 다음과 같은 시전에만 수행됩니다. 표시됨"암시적으로 적용해도 괜찮습니다"에 시스템 카탈로그. 다른 캐스트는 명시적으로 호출해야 합니다. 캐스팅 구문. 이 제한은 다음을 방지하기 위한 것입니다. 자동으로 적용되면서 놀라운 전환이 발생했습니다.
다음을 사용하여 유형 캐스트를 지정하는 것도 가능합니다. 함수형 구문:
유형 이름 ( 토토 베이 )
그러나 이것은 이름이 다음과 같은 유형에만 작동합니다. 함수 이름으로 유효합니다. 예를 들어,배정밀도이런 식으로 사용할 수는 없지만 동등한float8할 수 있습니다. 또한 이름은간격, 시간및타임스탬프할 수 있다 큰따옴표로 묶인 경우에만 이런 방식으로 사용됩니다. 구문 충돌. 따라서 함수와 같은 사용 캐스트 구문으로 인해 불일치가 발생하므로 아마도 새로운 응용 프로그램에서는 피하십시오. (함수와 유사한 구문은 다음과 같습니다. 사실은 단지 함수 호출일 뿐입니다. 두 표준 캐스트 중 하나인 경우 구문은 런타임 변환을 수행하는 데 사용됩니다. 내부적으로 등록된 함수를 호출하여 전환. 관례적으로 이러한 변환 함수는 출력 유형과 동일한 이름이지만 이는 이식 가능한 애플리케이션은 의존해야 합니다.)
스칼라 하위 쿼리는 일반적인 것입니다.선택정확하게 반환되는 괄호 안의 쿼리 하나의 행과 하나의 열. (참조배트맨 토토 : 문서 : 7.3 : 쿼리쿼리 작성에 대한 정보.) The선택쿼리가 실행되고 단일이 반환됩니다. value는 주변 값 토토 베이식에 사용됩니다. 그것은 둘 이상의 행을 반환하는 쿼리를 사용하는 동안 오류가 발생했습니다. 스칼라 하위 쿼리로 하나 이상의 열. (그러나 만약, 그 동안 특정 실행 시 하위 쿼리는 행을 반환하지 않습니다. 오류; 스칼라 결과는 null로 간주됩니다.) 하위 쿼리는 주변 쿼리의 변수를 참조하여 작동합니다. 하위 쿼리를 평가하는 동안 상수로 사용됩니다. 참조 또한PostgreSQL : 문서 : 7.3 : 하위 쿼리 사설 토토식.
예를 들어, 다음은 가장 큰 도시 인구를 찾습니다. 각 주에서:
이름 선택, (도시에서 최대(팝) 선택, WHERE 도시.주 = 주.이름)
상태에서;
하위 토토 베이식의 평가 순서는 정의되지 않았습니다. 에서 특히, 연산자나 함수의 입력은 반드시 왼쪽에서 오른쪽으로 또는 기타 고정된 방향으로 평가됩니다. 주문하세요.
또한, 토토 베이식의 결과가 다음과 같을 수 있다면 그 중 일부만 평가하여 결정한 다음 다른 부분을 평가하여 결정합니다. 하위 토토 베이식은 전혀 평가되지 않을 수 있습니다. 예를 들어, 만약 하나는 썼다
참 또는 somefunc()을 선택하세요.
그런 다음somefunc()아마도) 전혀 호출되지 않습니다. 한 사람이라도 마찬가지일 것이다. 썼다
somefunc() 또는 true를 선택하세요.
이것은 왼쪽에서 오른쪽으로와 동일하지 않습니다."단락"부울의 일부 프로그래밍 언어에서 발견되는 연산자입니다.
결과적으로 측면과 함께 함수를 사용하는 것은 현명하지 않습니다. 복잡한 토토 베이의 일부로 효과. 특히 부작용이나 평가 순서에 의존하는 것은 위험합니다.어디에서그리고가지고 있는 중절, 그 절은 다음과 같습니다. 실행 개발의 일부로 광범위하게 재처리됨 계획. 부울 토토 베이식(그리고/또는/아님25674_25788
평가 순서를 강제하는 것이 필수적인 경우, a사례구성(참조섹션 6.12)를 사용할 수 있습니다. 에 대한 예를 들어, 이는 회피하려는 신뢰할 수 없는 방법입니다. a에서 0으로 나누기어디절:
선택 ... x < 0 AND y/x 1.5;
그러나 이것은 안전합니다:
SELECT ... WHERE CASE WHEN x < 0 THEN y/x 1.5 ELSE false END;
A 사례이것에 사용된 구성 패션은 최적화 시도를 무산시키므로 필요할 때 완료됩니다.
| 이전 | 집 | PostgreSQL : 문서 : 7.3 : 토토 꽁 머니 정의 |
| SQL 구문 | 위로 | 데이터 정의 |