토토 핫 입력은 다음의 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다. 의토큰, 세미콜론으로 종료됨 (";"). 입력 스트림의 끝 또한 명령을 종료합니다. 유효한 토큰은 다음에 따라 다릅니다. 특정 명령의 구문.
토큰은 다음과 같습니다.키워드, 안식별자, 아인용된 식별자, 아리터럴(또는 상수) 또는 특수 문자 상징. 토큰은 일반적으로 공백(공백, 탭, 줄 바꿈), 그러나 모호함이 없다면 그럴 필요는 없습니다. 일반적으로 특수 문자가 인접한 경우에만 해당됩니다. 다른 토큰 유형으로).
추가로,댓글다음에서 발생할 수 있습니다. 토토 핫 입력. 그것들은 토큰이 아니며 사실상 동일합니다. 공백으로.
예를 들어, 다음은 (구문적으로) 유효한 토토 핫입니다. 입력:
SELECT * FROM MY_TABLE; 업데이트 MY_TABLE SET A = 5; MY_TABLE 값에 삽입(3, '안녕하세요');이것은 한 줄에 하나씩 세 가지 명령의 시퀀스입니다(비록 이는 필수가 아닙니다. 한 줄에 둘 이상의 명령이 있을 수 있으며 명령은 여러 줄에 걸쳐 유용하게 분할될 수 있습니다.)
토토 핫 구문은 어떤 토큰에 관해 일관성이 없습니다. 명령과 피연산자 또는 매개변수를 식별합니다. 그만큼 처음 몇 개의 토큰은 일반적으로 명령 이름이므로 위의 예에서 우리는 일반적으로 a"선택", an"업데이트"그리고"삽입"명령. 그러나 예를 들어업데이트명령에는 항상 다음이 필요합니다.SET토큰이 특정 위치에 나타나며, 이 특별한 변형은삽입또한 가 필요합니다값되기 위해서는 완벽한. 각 명령의 정확한 구문 규칙은 다음과 같습니다. 에 설명되어 있습니다.참조 매뉴얼.
다음과 같은 토큰선택, 업데이트또는값위의 예에는 다음의 예가 있습니다.키워드, 즉 다음과 같은 단어가 있습니다. 토토 핫 언어의 고정된 의미입니다. 토큰MY_TABLE그리고A있습니다 예식별자. 그들 테이블, 열 또는 기타 데이터베이스 개체의 이름을 식별합니다. 사용되는 명령에 따라 다릅니다. 따라서 때로는 간단히 호출됨"이름". 키워드와 식별자는 동일한 어휘 구조를 가지고 있으며, 이는 토큰이 식별자인지 여부를 알 수 없음을 의미합니다. 또는 언어를 모르는 핵심 단어. 전체 목록 키워드는 다음에서 찾을 수 있습니다.부록 B.
토토 핫 식별자와 키워드는 문자로 시작해야 합니다 (a-z) 또는 밑줄(_). 후속 식별자나 키워드의 문자는 문자일 수 있습니다. 숫자(0-9) 또는 밑줄(토토 핫 표준이지만) 숫자나 시작 또는 시작을 포함하는 키워드를 정의하지 않습니다. 밑줄로 끝납니다.
시스템은 다음 이상을 사용하지 않습니다.NAMEDATALEN-1개의 식별자 문자; 더 긴 이름은 명령으로 작성할 수 있지만 잘렸습니다. 기본적으로,NAMEDATALEN은 32이므로 최대 식별자입니다. 길이는 31입니다(그러나 시스템이 구축되는 시점에는NAMEDATALEN변경 가능src/include/postgres_ext.h).
식별자와 키워드 이름은 대소문자를 구분하지 않습니다. 그러므로
MY_TABLE 세트 A 업데이트 = 5;동등하게 다음과 같이 쓸 수 있습니다.
업데이트 my_Table Set a = 5;자주 사용되는 관례는 키워드를 대문자로 쓰는 것입니다 이름은 소문자로 입력하세요(예:
UPDATE my_table SET a = 5;
두 번째 종류의 식별자가 있습니다: the구분된 식별자또는인용된 식별자. 둘러싸서 구성됩니다. 큰따옴표 안의 임의의 문자 시퀀스 ("). 구분 식별자는 다음과 같습니다. 항상 식별자이지 핵심 단어는 아닙니다. 그래서"선택"열을 참조하는 데 사용될 수 있습니다. 이름이 지정된 테이블"선택", 반면에 인용되지 않음선택로 간주됩니다 키워드이므로 사용 시 구문 분석 오류가 발생합니다. 테이블 또는 열 이름이 필요한 위치입니다. 예를 들면 다음과 같습니다. 다음과 같이 인용된 식별자로 작성되었습니다.
업데이트 "my_table" SET "a" = 5;
인용된 식별자에는 다음을 제외한 모든 문자가 포함될 수 있습니다. 큰 따옴표 자체. 이를 통해 테이블이나 열을 구성할 수 있습니다. 다른 방법으로는 불가능할 이름(예: 공백이나 앰퍼샌드를 포함합니다. 길이 제한은 여전히 적용됩니다.
식별자를 인용하면 대소문자도 구분됩니다. 따옴표가 없는 이름은 항상 소문자로 접혀집니다. 을 위한 예, 식별자FOO, foo그리고"foo"다음과 같은 것으로 간주됩니다.포스트그레하지만"푸"그리고"FOO"있습니다 이 세 가지와 서로 다릅니다.[1]
네 가지 종류가 있습니다암시적으로 입력된 상수in포스트그레: 문자열, 비트 문자열, 정수 및 부동 소수점 숫자. 상수는 다음과 같을 수도 있습니다. 명시적 유형으로 지정하면 더 정확한 결과를 얻을 수 있습니다. 시스템에 의한 표현 및 보다 효율적인 처리. 그만큼 암시적 상수는 아래에 설명되어 있습니다. 명시적 상수 나중에 논의하겠습니다.
토토 핫의 문자열 상수는 임의의 시퀀스입니다. 작은따옴표()로 묶인 문자"'"), 예:'이것은 끈'. 토토 핫에서는 작은따옴표를 포함할 수 있습니다. 두 개의 인접한 작은따옴표를 입력하여 문자열을 입력합니다(예:'다이앤'의 말'). 안에포스트그레작은따옴표는 다음과 같습니다. 또는 백슬래시()를 사용하여 이스케이프할 수도 있습니다."\"예:'다이앤\'s 말').
C 스타일 백슬래시 이스케이프도 사용할 수 있습니다.\b백스페이스입니다.\f폼피드입니다.\n개행 문자입니다.\r캐리지 리턴입니다.\t는 탭입니다. 그리고\xxx, 여기서xxx은 8진수입니다. 해당 ASCII 코드가 있는 문자입니다. 기타 백슬래시 뒤에 오는 문자는 문자 그대로 간주됩니다. 따라서, 문자열 상수에 백슬래시를 포함하려면 2를 입력하십시오. 백슬래시.
코드 0이 있는 문자는 문자열에 포함될 수 없습니다. 끊임없는.
다음으로만 구분되는 두 개의 문자열 상수 공백적어도 하나 포함 개행연결되어 효과적으로 처리됩니다. 문자열은 하나의 상수로 작성되었습니다. 을 위한 예:
'foo' 선택 '술집';다음과 동일함
'foobar' 선택;하지만
'foo' '바' 선택;유효한 토토 핫이 아닙니다.
비트 문자열 상수는 a가 있는 문자열 상수처럼 보입니다.B(대문자 또는 소문자) 시작 인용문 직전(중재 없음) 공백), 예:B'1001'. 그만큼 비트 문자열 상수 내에서 허용되는 문자만 다음과 같습니다.0그리고1. 비트 문자열 상수는 다음 라인에서 계속될 수 있습니다. 일반 문자열 상수와 같은 방식입니다.
토토 핫의 정수 상수는 십진수 시퀀스입니다. (0~9) 소수점이 없습니다. 법적 범위 값은 사용되는 정수 데이터 유형에 따라 다르지만 솔직한정수유형은 값을 허용합니다. 범위는 -2147483648부터 +2147483647까지입니다. (선택적인 플러스 또는 빼기 기호는 실제로 별도의 단항 연산자이며 정수 상수의 일부입니다.)
부동 소수점 상수는 다음과 같은 일반적으로 허용됩니다. 양식:
숫자.[숫자][e[+-]숫자] [숫자].숫자[e[+-]숫자] 숫자e[+-]숫자어디에서숫자은 하나 이상입니다 십진수. 최소한 하나의 숫자가 앞이나 뒤에 와야 합니다. 소수점 및 그 이후e사용하는 경우 그 옵션. 따라서 부동 소수점 상수는 다음과 구별됩니다. 소수점 또는 소수점 존재에 의한 정수 상수 지수 절(또는 둘 다). 공백 등이 있어서는 안 됩니다. 상수에 포함된 문자입니다.
부동 소수점 상수 유형입니다.이중 정밀도. 진짜다음을 사용하여 명시적으로 지정할 수 있습니다.토토 핫문자열 표기법 또는포스트그레유형 표기법:
REAL '1.23' -- 문자열 스타일 '1.23'::REAL -- Postgres(역사적) 스타일
an의 상수임의의유형 다음 중 하나를 사용하여 입력할 수 있습니다. 표기법:
유형 '문자열'
'문자열'::유형캐스트('문자열' 처럼유형 )
문자열 내부의 값은 입력 변환으로 전달됩니다
라는 유형의 루틴유형.
결과는 표시된 유형의 상수입니다. 명시적 유형
유형에 대한 모호성이 없으면 캐스트를 생략할 수 있습니다.
상수는 다음과 같아야 합니다(예를 들어 인수로 전달되는 경우).
오버로드되지 않은 기능), 이 경우 자동으로
강제로요.다음을 사용하여 유형 강제를 지정하는 것도 가능합니다. 함수형 구문:
유형 이름 ( 값 )이것은 이름이 유효한 유형에만 작동하지만 함수 이름으로. (예를 들어,더블 정도이런 식으로 사용할 수 없습니다 --- 하지만 동등한 방법입니다float8할 수 있습니다.)
그::, 캐스트()및 함수 호출 구문도 가능합니다. 임의의 표현식 유형을 지정하는 데 사용되지만 양식유형 '문자열' 지정하는 데에만 사용할 수 있습니다. 리터럴 상수의 유형입니다.
배열 상수의 일반적인 형식은 다음과 같습니다. 수행원:
'{ val1 삭제 발2 삭제 ... }'
어디에서삭제구분자입니다
해당 유형에 대한 문자(에 기록됨)pg_type항목. (모든 내장 유형의 경우 이는
쉼표 문자 ",".) 각각발는 배열의 상수이거나
요소 유형 또는 하위 배열. 배열의 예
상수는
'{{1,2,3},{4,5,6},{7,8,9}}'
이 상수는 2차원, 3 x 3 배열로 구성됩니다.
세 개의 정수 하위 배열로 구성됩니다.개별 배열 요소는 사이에 배치될 수 있습니다. 큰따옴표(") 방지 공백과 관련된 모호성 문제. 없이 따옴표를 사용하면 배열 값 토토 핫 분석기가 선행 흰색을 건너뜁니다. 공간.
(배열 상수는 실제로 배열의 특별한 경우일 뿐입니다. 이전 섹션에서 설명한 일반 유형 상수입니다. 상수는 처음에 문자열로 처리되어 다음으로 전달됩니다. 배열 입력 변환 루틴. 명시적 유형 사양이 필요할 수 있습니다.)
연산자는 최대의 시퀀스입니다NAMEDATALEN-1(기본적으로 31) 문자 다음 목록:
+ - * / < = ~ ! @ # % ^ & | ` ? $
거기 그러나 연산자 이름에는 몇 가지 제한 사항이 있습니다."$"(달러)는 단일 문자 연산자일 수 없습니다. 다중 문자 연산자의 일부일 수 있지만 이름.
--그리고/*연산자 어디에도 나타날 수 없습니다 이름은 시작으로 간주되므로 논평.
다중 문자 연산자 이름은 "+" 또는 "-"(이름에 다음 중 하나 이상이 포함되어 있지 않은 경우) 문자:
~ ! @ # % ^ & | ` ? $
용 예,@-허용됩니다 운영자 이름이지만*-그렇지 않습니다. 이 제한은 다음을 허용합니다.포스트그레스토토 핫 규격을 구문 분석하기 위해 토큰 사이에 공백이 필요 없는 쿼리입니다.토토 핫 표준이 아닌 연산자 이름으로 작업할 때, 일반적으로 인접한 연산자를 공백으로 구분해야 합니다. 모호함을 피하기 위해. 예를 들어, "@"이라는 왼쪽 단항 연산자는 쓸 수 없습니다.X*@Y; 당신은 작성해야합니다X* @와이그것을 보장하기 위해포스트그레스두 개의 연산자 이름으로 읽습니다. 하나도 아니야.
영숫자가 아닌 일부 문자에는 특수 문자가 있습니다. 즉, 운영자와는 다르다는 뜻이다. 세부정보 사용법은 해당 위치에서 찾을 수 있습니다. 구문 요소가 설명됩니다. 이 섹션은 다음 목적으로만 존재합니다. 이들의 존재를 조언하고 목적을 요약합니다. 문자.
달러 기호($) 다음에 숫자는 위치 매개변수를 나타내는 데 사용됩니다. 함수 정의의 본문. 다른 맥락에서는 달러 기호는 연산자 이름의 일부일 수 있습니다.
괄호(())는 표현을 그룹화하고 시행하는 일반적인 의미 상위. 어떤 경우에는 괄호가 필요합니다. 특정 토토 핫 명령의 고정 구문의 일부입니다.
괄호([])는 다음과 같은 용도로 사용됩니다. 배열의 요소를 선택합니다. 보다제6장자세한 내용은 배열.
쉼표(,)은 일부에서 사용됩니다. 요소를 분리하는 토토 핫 구조 목록.
세미콜론(;) 종료 토토 핫 명령. 내의 어느 곳에도 나타날 수 없습니다. 명령(문자열 상수 또는 인용부호 제외) 식별자.
콜론(:)은 다음과 같은 용도로 사용됩니다. 선택하다"슬라이스"배열에서. (보다와이즈 토토 : 문서 : 7.1 : 배열.) 특정 토토 핫에서 방언(예: Embedded 토토 핫)에서는 콜론을 사용하여 접두사 변수 이름.
별표(*)에는 에 사용될 때 특별한 의미선택명령 또는COUNT집계 함수.
기간(.)은 다음에서 사용됩니다. 부동 소수점 상수, 테이블과 열 이름.
댓글은 시작하는 임의의 문자 시퀀스입니다. 이중 대시가 있고 줄 끝까지 확장됩니다. 예:
-- 이것은 표준 토토 핫92 주석입니다.
또는 C 스타일 블록 주석을 사용할 수 있습니다:
/* 여러 줄 주석 * 중첩 있음: /* 중첩된 블록 주석 */ */댓글이 다음으로 시작하는 곳/*그리고 일치하는 발생으로 확장됩니다.*/. 이러한 블록 주석은 토토 핫99에 지정된 대로 중첩되지만 C와는 다릅니다. 다음을 포함할 수 있는 더 큰 코드 블록을 주석 처리할 수 있습니다. 기존 블록 댓글입니다.
댓글은 추가 진행 전에 입력 스트림에서 제거됩니다. 구문 분석으로 효과적으로 대체됩니다. 공백.
| [1] |
포스트그레' 접는 따옴표가 없는 이름을 소문자로 변환하면 토토 핫과 호환되지 않습니다. 표준에 따르면 인용되지 않은 이름은 접혀야 합니다. 대문자. 따라서,foo해야 합니다 에 해당함"FOO"아님"foo"표준에 따르면. 원한다면 휴대용 애플리케이션을 작성하려면 항상 다음을 수행하는 것이 좋습니다. 특정 이름을 인용하거나 절대 인용하지 마세요. |
| PostgreSQL : 문서 : 7.1 : 롤 토토 문 | 집 | 다음 |
| Y2K 선언문 | 위로 | 열 |