SQL강력한 형식입니다. 언어. 즉, 모든 데이터 항목에는 연관된 데이터 유형이 있습니다. 동작과 허용되는 사용법을 결정합니다.포스트그레SQL확장 가능한 유형 시스템이 있습니다 이는 다른 것보다 더 일반적이고 유연합니다.SQL구현. 따라서 대부분의 유형은 전환 동작포스트그레SQL일반 규칙이 적용됩니다. 대신에임시휴리스틱. 이를 통해 혼합 유형 표현식을 사용할 수 있습니다. 사용자 정의 유형.
그PostgreSQL스캐너/파서 어휘 요소를 다섯 가지 기본 범주로 나눕니다. 정수, 정수가 아닌 숫자, 문자열, 식별자 및 키 단어. 대부분의 숫자가 아닌 유형의 상수가 먼저 분류됩니다. 문자열로.SQL언어 정의를 사용하면 문자열로 유형 이름을 지정할 수 있으며 이는 메커니즘은 다음에서 사용될 수 있습니다.PostgreSQL파서를 시작하려면 올바른 경로. 예를 들어 쿼리는 다음과 같습니다.
텍스트 '원산지' AS "라벨", 포인트 '(0,0)' AS "값"; 라벨 | 가치 ------+------- 원산지 | (0,0) (1행)
다음 유형의 리터럴 상수 두 개가 있습니다.텍스트그리고포인트. 유형이 지정되지 않은 경우 문자열 리터럴, 자리 표시자 유형알 수 없음처음에 할당되어 해결될 예정입니다. 아래에 설명된 대로 이후 단계를 진행합니다.
네 가지 기본이 있습니다.SQL고유한 유형이 필요한 구성 의 변환 규칙PostgreSQL파서:
대다수포스트그레SQL유형 시스템은 풍부한 기능 세트를 중심으로 구축되었습니다. 함수에는 하나 이상의 인수가 있을 수 있습니다. 이후포스트그레SQL허가하다 함수 오버로딩, 함수 이름만으로는 호출할 함수를 고유하게 식별합니다. 파서 데이터 유형에 따라 올바른 함수를 선택해야 합니다. 제공된 인수입니다.
PostgreSQL허용 접두사와 접미사가 있는 표현식 단항(인수 1개) 연산자 및 이진(인수 2개) 연산자. 좋아요 함수, 연산자는 오버로드될 수 있으므로 동일한 문제가 발생합니다. 올바른 연산자를 선택하는 방법이 존재합니다.
SQL 삽입그리고업데이트문은 표현식의 결과를 테이블에 배치합니다. 명령문의 표현식은 다음과 일치해야 합니다. 아마도 대상 유형으로 변환될 수도 있습니다. 열.
모든 쿼리는 통합된 통합의 결과이므로선택문은 단일 세트로 나타나야 합니다
        열의 각 결과 유형선택절은 일치해야 하며
        유니폼 세트로 변경되었습니다. 마찬가지로 결과는
        a의 표현사례구조물사례표현식 전체에는 다음이 알려져 있습니다.
        출력 유형. 에 대해서도 마찬가지이다.어레이구조물 및 해당가장 훌륭함그리고최소함수.
시스템 카탈로그는 어떤 전환에 대한 정보를 저장합니다. 또는캐스트, 어느 데이터 사이에 존재합니까? 유형 및 해당 변환을 수행하는 방법을 알아보세요. 추가 캐스팅 가능 사용자가 다음을 사용하여 추가할 수 있습니다.캐스트 만들기명령. (이것은 일반적으로 새로운 데이터 유형 정의와 함께 수행됩니다. 세트 내장 유형 간의 캐스트는 신중하게 제작되었으며 변경하지 않는 것이 가장 좋습니다.)
파서가 제공하는 추가 경험적 방법을 통해 향상된 그룹 간의 적절한 캐스팅 동작 결정 암시적 캐스트가 있는 유형. 데이터 유형은 다음과 같이 구분됩니다. 몇 가지 기본유형 카테고리포함부울, 숫자, 문자열, 비트스트링, 날짜시간, 기간, 기하학적, 네트워크, 그리고 사용자 정의. (목록은 참조표 45-49; 그러나 사용자 정의 유형 카테고리를 생성하는 것도 가능합니다.) 각 카테고리 내에는 하나 이상이 있을 수 있습니다.선호되는 유형, 다음과 같은 경우에 선호됩니다. 가능한 유형을 선택하는 것입니다. 신중한 선택으로 선호하는 유형과 사용 가능한 암시적 캐스트를 사용하면 다음이 가능합니다. 모호한 표현(여러 후보가 있는 표현)을 확인하세요. 구문 분석 솔루션)은 유용한 방법으로 해결할 수 있습니다.
모든 유형 변환 규칙은 여러 원칙으로 설계되었습니다. 염두에 두세요:
암시적 변환에는 예상치 못한 결과나 오류가 있어서는 안 됩니다. 예측할 수 없는 결과.
파서에 추가 오버헤드가 없어야 합니다. 쿼리에 암시적 유형 변환이 필요하지 않은 경우 실행기입니다. 즉, 쿼리의 형식이 올바르고 유형이 이미 일치하면 추가 비용 없이 쿼리가 실행되어야 합니다. 파서에 불필요한 시간을 추가하지 않고 쿼리에서 암시적 변환 호출이 발생합니다.
또한 쿼리에 일반적으로 암시적 함수에 대한 변환, 그리고 사용자가 새로운 함수를 정의하는 경우 올바른 인수 유형으로 함수를 사용하려면 파서가 다음을 수행해야 합니다. 이 새로운 함수를 사용하고 더 이상 다음으로 암시적 변환을 수행하지 마십시오. 이전 기능을 사용하세요.