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

10.1. 개요

SQL는 강력하게 입력되었습니다 언어. 즉, 모든 데이터 항목에는 관련 데이터 유형이 있습니다. 동작을 결정하고 허용 사용.PostgreSQL확장 가능한 유형 시스템이 있습니다 그것은 다른 것보다 훨씬 더 일반적이고 유연합니다SQL구현. 따라서 대부분의 유형 의 변환 행동PostgreSQL는 일반적인 규칙에 따라 적용됩니다 보다는adhoc휴리스틱. 이를 통해 혼합형 표현식이 의미가 있어도 의미가 있습니다 사용자 정의 유형.

thePostgreSQL스캐너/파서 어휘 요소를 5 가지 기본 범주로 만 나눕니다. 정수, 비 지구 번호, 문자열, 식별자 및 키 단어. 대부분의 비 숫자 유형의 상수가 먼저 분류됩니다 문자열로. 그만큼SQL언어 정의는 문자열로 유형 이름을 지정할 수 있습니다 메커니즘을 사용할 수 있습니다윈 토토파서를 시작하려면 올바른 경로. 예를 들어, 쿼리

텍스트 '원점'을 "레이블", 포인트 '(0,0)' 'value "로 선택합니다.

 라벨 | 값
--------+-------
 원산지 | (0,0)
(1 행)

유형의 2 개의 문자 상수가 있습니다텍스트and포인트. 유형이 a에 지정되지 않은 경우 문자열 문자, 그런 다음 자리 표시 자 유형알 수없는처음에는 할당되어 해결됩니다 아래에 설명 된 후기 단계.

4 가지 기본 사항이 있습니다SQL별도의 유형이 필요한 구성 의 전환 규칙PostgreSQL파서 :

함수 호출

많은PostgreSQL타입 시스템은 풍부한 기능 세트 주위에 구축되었습니다. 기능은 하나 이상의 인수를 가질 수 있습니다. 부터PostgreSQL허가 함수 과부하, 함수 이름만으로는 그렇지 않습니다 호출 할 기능을 고유하게 식별합니다. 파서 데이터 유형에 따라 올바른 함수를 선택해야합니다. 제공된 논쟁.

운영자

윈 토토허용 접두사 및 포스트 픽스 단일 표현식 (한 번) 연산자 및 바이너리 (2 학습) 연산자. 좋다 함수, 운영자는 과부하 될 수 있으며 동일하게 올바른 연산자를 선택하는 문제가 있습니다.

가치 저장소

SQL 삽입and12657_12665진술은 표현식 결과를 표에 배치합니다. 성명서의 표현은 일치해야합니다. 그리고 아마도 대상의 유형으로 변환 될 수 있습니다 열.

Union, CASE및 관련 구성

모든 쿼리가 Unionized의 결과로 결과select명령문은 단일 세트로 표시되어야합니다 열의, 각각의 결과 유형select조항은 일치해야합니다 균일 한 세트로 변환되었습니다. 마찬가지로 결과 A의 표현CASE구성 가되도록 공통 유형으로 변환해야합니다.case전체적으로 표현이 알려져 있습니다 출력 유형. 도 마찬가지입니다.배열구성 및Greatestand최소기능.

시스템 카탈로그는 어떤 변환에 대한 정보를 저장하고, 라고 불리는캐스트, 데이터 유형 사이 유효하고 변환을 수행하는 방법. 추가 캐스트가 가능합니다 를 사용하여 사용자가 추가해야합니다.캐스트 만들기명령. (이것은 보통입니다 새로운 데이터 유형 정의와 함께 수행됩니다. 세트 내장 유형 사이의 캐스트는 신중하게 제작되었으며 변경되지 않는 것이 가장 좋습니다.)

추가 휴리스틱은 파서에 제공됩니다. 적절한 행동에 대한 더 나은 추측SQL표준 유형. 몇 가지 기본이 있습니다유형 카테고리정의 :부울, 숫자, String, Bitstring, DateTime, 타임 스팬, 기하학적, 네트워크및 사용자 정의. 사용자 정의를 제외하고 각 범주는 하나 이상이 있습니다선호 유형모호성이있을 때 우선적으로 선택됩니다. 에서 사용자 정의 범주, 각 유형은 자체 선호 유형입니다. 모호한 표현 (여러 후보자 구문 분석 따라서 솔루션)은 종종있을 때 해결할 수 있습니다 가능한 여러 내장 유형이지만 오류가 발생합니다. 사용자 정의 유형에 대한 여러 가지 선택이있을 때.

모든 유형 변환 규칙은 여러 원칙으로 설계되었습니다 명심 :

  • 암시 적 변환은 결코 놀라운 일을해서는 안됩니다 예측할 수없는 결과.

  • 사용자 정의 유형, 그 중 파서에 없음우선 순위지식이 있어야합니다"Higher"유형 계층에서. ~ 안에 혼합형 표현식, 기본 유형은 항상 있어야합니다 사용자 정의 유형으로 변환됩니다 (물론 전환이 필요합니다).

  • 사용자 정의 유형은 관련이 없습니다. 현재,PostgreSQL유형 간의 관계에 대한 정보, 내장 유형에 대한 하드 코드 휴리스틱 이외 사용 가능한 기능에 기반한 암시 적 관계 캐스트.

  • 파서에서 추가 오버 헤드가 없어야합니다. 쿼리에 암시 적 유형 변환이 필요하지 않은 경우 집행자. 즉, 쿼리가 잘 공식화되고 이미 유형이 일치하면 쿼리는 지출없이 진행해야합니다 파서에서 추가 시간과 불필요한 소개없이 암시 적 변환이 쿼리로 호출됩니다.

    또한 쿼리에 일반적으로 암시 적 필요한 경우 함수에 대한 변환, 그렇다면 사용자가 새로운 것을 정의합니다. 올바른 인수 유형과 함께 작동하면 파서가해야합니다 이 새로운 기능을 사용하면 더 이상 암시 적으로 수행하지 않습니다. 이전 기능을 사용한 변환.