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