이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다토토 꽁 머니 PostgreSQL : 문서 : 17 : 4.1. 어휘 구조버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

4.1. 어휘 구조

SQL 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다.토큰, 세미콜론에 의해 종료되었습니다 (";"). 입력 스트림의 끝 명령을 종료합니다. 유효한 토큰은 구문에 따라 다릅니다 특정 명령의.

토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, a리터럴(또는 상수), 또는 특수 문자 기호. 토큰은 일반적으로 분리됩니다 공백 (공간, 탭, Newline)이지만 없을 때는 안됩니다. 모호성 (일반적으로 특별한 인물 인 경우에만 해당됩니다. 다른 토큰 유형에 인접 해).

예를 들어, 다음은 (구문 적으로) 유효한 SQL입니다 입력:

my_table에서 * 선택 *;
my_table set a = 5 업데이트;
my_table 값에 삽입 (3, 'hi there');

이것은 한 줄에 하나씩 세 가지 명령의 시퀀스입니다 (그러나 이것은 필요하지 않습니다. 둘 이상의 명령이 한 줄에있을 수 있으며 명령은 유용하게 선을 통해 분할 될 수 있습니다).

추가로댓글SQL에서 발생할 수 있습니다 입력. 그들은 토큰이 아니며 효과적으로 동등합니다 공백.

SQL 구문은 어떤 토큰에 대해서는 그다지 일관되지 않습니다. 명령을 식별하고 피연산자 또는 매개 변수입니다. 첫 번째 일반적으로 명령 이름은 거의 없으므로 위의 예에서는 우리는 보통 A에 대해 말할 것입니다."선택", an"업데이트"및 an"삽입"명령. 그러나 예를 들어업데이트명령은 항상 필요합니다set토큰은 특정 위치에 나타납니다 의 특별한 변형삽입a 필요완료되기 위해. 각 명령에 대한 정확한 구문 규칙은에 설명되어 있습니다.Part VI.

4.1.1. 식별자 및 키워드

select, 업데이트또는in 위의 예는의 예입니다.키워드, 즉, SQL 언어에서 고정 된 의미를 가진 단어. 그만큼 토큰my_tableanda의 예입니다식별자. 그들은 식별합니다 에 따라 테이블, 열 또는 기타 데이터베이스 개체의 이름 그들이 사용하는 명령. 따라서 때로는 간단합니다. 라고 불리는"이름". 핵심 단어와 식별자는 동일한 어휘 구조를 가지므로 하나를 의미합니다 토큰이 식별자인지 또는 키워드가 없는지 알 수 없습니다. 언어를 알고 있습니다. 키워드의 전체 목록은에서 찾을 수 있습니다.사설 토토 사이트 PostgreSQL : 문서 : 9.3 : SQL 키어.

SQL 식별자 및 키워드는 편지로 시작해야합니다. (a-Z명성적인 자국과 비 라틴어 문자가있는 문자) 또는 an 밑줄 (_). 후속 문자 식별자 또는 키 단어는 문자, 밑줄, 숫자 일 수 있습니다. (0-9) 또는 달러 표지판 ($). 달러 표시는 그렇지 않습니다 SQL 표준의 편지에 따라 식별자에 허용 따라서 사용하면 응용 프로그램이 휴대용이 덜 가능합니다. SQL 표준은 숫자 또는 시작이 포함 된 키워드를 정의하지 않습니다. 또는 밑줄로 끝나면이 양식의 식별자가 안전합니다. 미래의 확장과의 충돌에 대하여 기준.

시스템은 이상을 사용합니다.지명-1 식별자의 바이트; 더 긴 이름 명령으로 작성할 수 있지만 잘립니다. 기본적으로지명는 최대 식별자입니다 길이는 63 바이트입니다. 이 한계가 문제가되면 제기 할 수 있습니다 를 변경하여paminatalenConstant insrc/포함/pg_config_manual.h.

키워드 및 인용되지 않은 식별자는 사례 둔감합니다. 그러므로:

my_table set a = 5; 업데이트

동등하게 다음과 같이 작성할 수 있습니다.

my_table set a = 5; 업데이트

자주 사용되는 협약은 핵심 단어를 대토토 핫로 작성하는 것입니다. 소토토 핫 이름, 예 :

my_table set a = 5; 업데이트

두 번째 종류의 식별자가 있습니다 :구분 식별자또는인용 식별자. 임의의 순서를 둘러싸고 형성됩니다 이중 인용문 ( 토토 핫"). 에이 구분 된 식별자는 항상 식별자이며 결코 키 단어가 아닙니다. 그래서"선택"a를 참조하는 데 사용될 수 있습니다 열 또는 테이블이라는 열"선택"인용되지 않은select열쇠로 간주됩니다 따라서 Where에서 사용하면 구문 분석 오류가 발생합니다. 표 또는 열 이름이 예상됩니다. 예제는 다음과 같이 쓸 수 있습니다 다음과 같이 인용 된 식별자 :

업데이트 "my_table"set "a"= 5;

견적 된 식별자는 다음을 제외한 모든 문자를 포함 할 수 있습니다 코드 0이있는 문자. (이중 인용문을 포함하려면 두 가지를 쓰십시오 이중 따옴표.) 이것은 테이블 또는 열 이름을 구성 할 수 있습니다. 그렇지 않으면 공간을 포함하는 것과 같이 불가능하거나 앰퍼 샌드. 길이 제한은 여전히 ​​적용됩니다.

인용 된 식별자의 변형은 탈출 된 유니 코드를 포함 할 수 있습니다 코드 포인트로 식별 된 문자. 이 변형이 시작됩니다 와 함께u &(위 또는 소문자 u 오프닝 이중 견적 직전에 Ampersand가 뒤 따릅니다. 예를 들어 사이에 공간이 없으면u & "foo". (이것은 모호성을 만듭니다 운영자와&. 주위에 공간을 사용하십시오 이 문제를 피하기위한 연산자.) 인용문 내부, 유니 코드 문자는 백 슬래시를 작성하여 탈출 형식으로 지정할 수 있습니다. 4 자리 16 진 코드 포인트 번호 또는 또는 백 슬래시 뒤에 플러스 부호와 6 자리 육각형 코드 포인트 번호. 예를 들어, 식별자"데이터"

U & "D \ 0061T \ +000061"

다음 덜 사소한 예는 러시아어를 씁니다"Slon"(코끼리) 키릴 릭 편지 :

u & "\ 0441 \ 043B \ 043E \ 043D"

백 슬래시와 다른 탈출 토토 핫가 필요하면 를 사용하여 지정할 수 있습니다.UESCAPE절 토토 핫열 이후 : 예를 들어 :

U & "D! 0061T! +000061"UESCAPE '!'

탈출 문자는 16 진수 숫자, 플러스 부호, 단일 견적, 이중 견적, 또는 공백 문자. 탈출 캐릭터는 다음과 같습니다 이중 인용문이 아닌 단일 따옴표로 작성되었습니다.

문자 그대로 식별자에 탈출 문자를 포함 시키려면 두 번 쓰십시오.

유니 코드 탈출 구문은 서버 인코딩이있는 경우에만 작동합니다UTF8. 다른 서버 인코딩이있을 때 사용, ASCII 범위의 코드 포인트 만 (최대\ 007f)를 지정할 수 있습니다. 4 자리와 6 자리 양식을 사용하여 UTF-16 대리 쌍을 지정할 수 있습니다. U+FFFF보다 큰 코드 포인트로 토토 핫를 구성하십시오 6 자리 양식의 가용성은 기술적으로이를 만듭니다 불필요한. (대리 쌍은 직접 저장되지 않고 결합됩니다 그런 다음 UTF-8에서 인코딩되는 단일 코드 포인트로.)

식별자 인용은 또한 대소 문자에 민감하게 만듭니다 인용되지 않은 이름은 항상 소문자로 접습니다. 예를 들어, 식별자foo, foo"foo"are 동일하게 고려PostgreSQL, 하지만"foo"and"foo"는이 세 가지와 서로 다릅니다. (인용되지 않은 이름을 소문자로 접는다PostgreSQLSQL과 호환되지 않습니다 표준은 인용되지 않은 이름을 상단으로 접어야한다고 말합니다. 사례. 따라서,foo"foo"not"foo"표준에 따라. 휴대용을 쓰고 싶다면 항상 특정 이름을 인용하거나 인용하지 마십시오.)

4.1.2. 상수

세 종류의암시 적으로 상수inPostgreSQL: 토토 핫열, 비트 줄 및 숫자. 상수도 지정할 수 있습니다 보다 정확한 표현을 가능하게 할 수있는 명시 적 유형으로 시스템에 의한보다 효율적인 처리. 이러한 대안은 다음과 같습니다 다음 하위 섹션에서 논의 됨

4.1.2.1. 토토 핫열 상수

SQL의 토토 핫열 상수는 임의의 토토 핫 순서입니다. 단일 따옴표로 경계 ('), 예를 들어'이것은 문자열입니다'. a를 포함합니다 토토 핫열 상수 내에서 단일 쿼트 토토 핫는 인접한 두 개를 씁니다 단일 따옴표, 예 :'Dianne' 's Horse'. 이것은입니다.not이중 인용 토토 핫와 동일 (").

공백에 의해서만 분리되는 두 개의 토토 핫열 상수적어도 하나의 Newline토토 핫열이있는 것처럼 연결되어 효과적으로 처리됩니다. 하나의 상수로 작성되었습니다. 예를 들어:

'foo'선택
'술집';

와 동일합니다.

'foobar'를 선택하십시오;

그러나 :

'foo' 'bar'; 선택

유효한 구문이 아닙니다. (이 약간 기괴한 행동입니다 지정SQL;PostgreSQL표준을 따르고 있습니다.)

4.1.2.2. C 스타일의 토토 핫열 상수 탈출

PostgreSQL또한 수락"탈출"문자열 상수 SQL 표준으로의 확장. 탈출 문자열 상수입니다 편지를 작성하여 지정e(상단 또는 소문자) 오프닝 단일 견적 직전 (예 :e'foo '. (이스케이프 토토 핫열을 계속할 때 라인을 가로 지르는 일정, 쓰기e전에만 첫 번째 오프닝 견적.) 탈출 토토 핫열 내에서 백 슬래시 성격 (\) C와 같은 시작Backslash Escape시퀀스 백 슬래시와 다음 토토 핫는 특수 바이트를 나타냅니다 값,표 4-1.

표 4-1. 백 슬래시 탈출 시퀀스

백 슬래시 탈출 시퀀스 해석
\ b 백 스페이스
\ f 양식 피드
\ n Newline
\ r 캐리지 리턴
\ t
\O, \oo, \ooo(O= 0-7) 옥탈 바이트 값
\ xH, \ xHH(H= 0-9, a -f) 16 진 바이트 값
\ uxxxx, \ uxxxxxxxx(x= 0-9, a -f) 16 또는 32 비트 16 진수 유니 코드 문자 값

백 슬래시를 따르는 다른 캐릭터는 토토 핫 그대로 취합니다. 따라서 백 슬래시 토토 핫를 포함하려면 두 개의 백 슬래시를 씁니다 (\\). 또한 단일 견적을 포함시킬 수 있습니다 쓰기로 탈출 문자열에서\ ', in 정상적인 방법''.

바이트가 당신이 만든 시퀀스에 대한 책임입니다. 특히 옥탈 또는 16 진수 탈출을 사용할 때는 구성하십시오 서버 문자 세트 인코딩의 유효한 문자. 언제 서버 인코딩은 UTF-8, 유니 코드가 탈출되거나 대체 유니 코드 탈출 구문, 설명섹션 4.1.2.3대신 사용해야합니다. (대안은 될 것입니다 UTF-8 인코딩을 손으로 인코딩하고 바이트를 작성하십시오. 매우 번거 롭을 것입니다.)

유니 코드 이스케이프 구문은 서버가있을 때만 완전히 작동합니다. 인코딩은UTF8. 다른 서버 인코딩은 ASCII 범위의 코드 포인트 만 사용됩니다 (최대\ u007f)를 지정할 수 있습니다. 모두 4 자리 8 자리 형식은 UTF-16 대리 쌍을 지정하는 데 사용될 수 있습니다. U+FFFF보다 큰 코드 포인트로 토토 핫를 작성하려면 8 자리 양식의 가용성은 기술적으로이를 만듭니다 불필요한. (서버시 대리 쌍이 사용될 때 인코딩은UTF8, 그들은 먼저 결합되었습니다 그런 다음 UTF-8에서 인코딩되는 단일 코드 포인트로.)

주의

구성 매개 변수 인 경우Standard_Conforming_stringsisOFF,postgresql백 슬래시 탈출을 인식합니다 규칙 및 탈출 토토 핫열 상수. 그러나 기준으로postgresql​​9.1, 기본값은입니다.on, 백 슬래시 도피를 의미합니다 탈출 토토 핫열 상수에서만 인식됩니다. 이 행동은 더 많습니다 표준을 준수하지만 의존하는 응용 프로그램을 중단 할 수 있습니다 백 슬래시 탈출이 항상 있었던 역사적 행동 인식. 해결 방법 으로이 매개 변수를로 설정할 수 있습니다.OFF이지만, 마이그레이션하는 것이 좋습니다 Backslash 사용을 사용합니다. 백 슬래시 탈출을 사용해야하는 경우 특수 토토 핫를 나타내고, 토토 핫열 상수를 an 쓰기e.

외에Standard_Conforming_strings, 구성 매개 변수Escape_string_warningandbackslash_quote토토 핫열 상수에서 백 슬래시 처리를 통제합니다.

코드 0이있는 토토 핫는 토토 핫열에있을 수 없습니다. 끊임없는.

4.1.2.3. 유니 코드가있는 토토 핫열 상수 탈출

PostgreSQL도 지원합니다 지정할 수있는 토토 핫열에 대한 다른 유형의 탈출 구문 코드 포인트 별 임의의 유니 코드 토토 핫. 유니 코드 탈출 토토 핫열 상수는로 시작합니다.u &(상단 또는 소문자 u 뒤에 앰퍼 샌드) 직전 예를 들어 그 사이에 공간이없는 개방 견적u & 'foo'. (이것은 an을 만듭니다 연산자와의 모호성&. 사용 이 문제를 피하기 위해 운영자 주변의 공간.) 내부 따옴표, 유니 코드 문자는 이스케이프 형식으로 지정할 수 있습니다. 백 슬래시를 작성한 다음 네 자리 16 진 코드를 작성합니다 포인트 번호 또는 대안 적으로 백 슬래시와 플러스 부호가 이어집니다. 6 자리 16 진 코드 포인트 번호가 이어집니다. 예를 들어, 문자열'데이터'

U & 'D \ 0061T \ +000061'

다음 덜 사소한 예는 러시아어를 씁니다"Slon"(코끼리) 키릴 릭 편지 :

U & '\ 0441 \ 043B \ 043E \ 043D'

백 슬래시와 다른 탈출 토토 핫가 필요하다면 를 사용하여 지정할 수 있습니다.UESCAPE절 토토 핫열 이후 : 예를 들어 :

U & 'D! 0061T! +000061'UESCAPE '!'

탈출 문자는 16 진수 숫자, 플러스 부호, 단일 견적, 이중 견적, 또는 공백 문자.

유니 코드 탈출 구문은 서버 인코딩이있는 경우에만 작동합니다UTF8. 다른 서버 인코딩이있을 때 사용, ASCII 범위의 코드 포인트 만 (최대\ 007f)를 지정할 수 있습니다. 4 자리와 6 자리 양식을 사용하여 UTF-16 대리 쌍을 지정할 수 있습니다. U+FFFF보다 큰 코드 포인트로 토토 핫를 구성하십시오 6 자리 양식의 가용성은 기술적으로이를 만듭니다 불필요한. (서버시 대리 쌍이 사용될 때 인코딩은UTF8, 그들은 먼저 결합되었습니다 그런 다음 UTF-8에서 인코딩되는 단일 코드 포인트로.)

또한 토토 핫열 상수에 대한 유니 코드 탈출 구문 만 작동합니다. 구성 매개 변수Standard_Conforming_strings가 켜져 있습니다. 그렇지 않으면이 구문이 혼동 될 수 있기 때문입니다 SQL 문을 구문 분석하는 클라이언트는 SQL 주입 및 유사한 보안 문제로 이어집니다. 만약 매개 변수가 꺼지고이 구문은 오류로 거부됩니다. 메시지.

토토 핫 그대로 탈출 토토 핫를 포함 시키려면 쓰기 두 번.

4.1.2.4. 달러에 따른 토토 핫열 상수

28552_28825PostgreSQL다른 방법을 제공합니다."달러 인용 ", 토토 핫열 상수를 작성합니다. 1 달러 규모의 토토 핫열 상수는 1 달러 표시로 구성됩니다 ($), an 선택 과목"tag"0 이상 캐릭터, 또 다른 달러 표시, 임의의 순서 토토 핫열 내용을 구성하는 토토 핫, 달러 표시, 이 달러 견적을 시작한 동일한 태그와 달러 표시. 을 위한 예, 토토 핫열을 지정하는 두 가지 방법이 있습니다"Dianne 's Horse"달러 사용 인용 :

$$ Dianne 's Horse $$
$ omegag $ Dianne 's Horse $ omegag $

달러에 따른 토토 핫열 내부에서 단일 따옴표가 가능하다는 것을 알 수 있습니다 탈출 할 필요없이 사용하십시오. 실제로, 내부에는 캐릭터가 없습니다 1 달러 규모의 토토 핫열이 탈출됩니다. 토토 핫열 내용은 다음과 같습니다. 항상 토토 핫 그대로 작성되었습니다. 백 슬래시는 특별하지 않으며 둘 다도 아닙니다 그들이 일치하는 시퀀스의 일부가 아니라면 달러 표시입니다. 열기 태그.

달러 규모의 토토 핫열 상수를 할 수 있습니다 각 둥지 수준에서 다른 태그를 선택합니다. 이것은 가장입니다 작문 기능 정의에 일반적으로 사용됩니다. 예를 들어:

$ function $
시작하다
    반환 ($ 1 ~ $ q $ [\ t \ r \ n \ v \\] $ q $);
끝;
$ function $

여기, 시퀀스$ q $ [\ t \ r \ n \ v \\] $ q $1 달러 규모의 토토 핫열을 나타냅니다[\ t \ r \ n \ v \\]기능 본체는에 의해 실행됩니다.postgresql. 그러나 시퀀스는 그렇지 않기 때문입니다 Delimiter를 인용하는 외부 달러와 일치$ function $, 그것은 더 많은 토토 핫입니다 외부 토토 핫열에 관한 한 상수.

1 달러 규모의 문자열의 태그가 동일합니다. 인용되지 않은 식별자로서의 규칙은 달러 표시. 태그는 사례에 민감하므로$ tag $ string 컨텐츠 $ tag $정확하지만$ tag $ string 컨텐츠 $ tag $is.

키워드 또는 식별자를 따르는 달러 인용 문자열 공백으로 분리됩니다. 그렇지 않으면 달러 인용 Delimiter는 이전 식별자의 일부로 취할 것입니다.

Dollar Quoting은 SQL 표준의 일부가 아니지만 종종 보다 복잡한 문자 리터럴을 작성하는보다 편리한 방법 표준 호환 단일 견적 구문. 특히 유용합니다 그대로 다른 상수 내부에 문자열 상수를 나타낼 때 절차 적 기능 정의에 종종 필요합니다. 단일 쿼트로 구문, 위의 예의 각 백 슬래시는 4 개의 백 슬래시로 작성되어 2로 줄어 듭니다. 원래 문자열 상수를 구문 분석 할 때의 백 슬래시, 다음 내부 문자열 상수가 기능 중에 다시 표시 될 때 실행.

4.1.2.5. 비트 스트링 상수

비트 스트링 상수는 A의 일반 토토 핫열 상수처럼 보입니다.B(위 또는 소문자) 직전 오프닝 견적 (중재 공백 없음), 예를 들어B'1001 '. 내부에 허용되는 유일한 토토 핫 비트 스트링 상수는0and1.

또는 비트 스트링 상수를 지정할 수 있습니다 선두를 사용하는 16 진전 표기법x(위 또는 소문자), 예 :x'1ff '. 이것 표기법은 4 개의 바이너리가있는 비트 스트링 상수에 해당합니다. 각 16 진수 숫자에 대한 숫자.

비트 스트링 상수의 두 가지 형태는 라인에서 계속 될 수 있습니다. 일반 토토 핫열 상수와 같은 방식으로. 달러 인용문은 할 수 없습니다 비트 스트링 상수에 사용됩니다.

4.1.2.6. 숫자 상수

숫자 상수는 이러한 일반적인 형태로 허용됩니다 :

숫자
Digits. [Digits] [E [+-]Digits]
[Digits].숫자[E [+-]숫자]숫자E [+-]숫자

어디숫자하나 이상입니다 십진수 (0-9). 적어도 하나의 숫자는 이전 또는 전이어야합니다 소수점 후, 하나가 사용되는 경우. 적어도 하나의 숫자가 있어야합니다 지수 마커를 따르십시오 (e) 현재의. 공간이나 다른 캐릭터가 포함될 수 없습니다. 상수. 선행 플러스 또는 마이너스 부호는 실제로 상수의 일부로 간주됩니다. 적용되는 연산자입니다 상수에.

유효한 숫자 상수의 일부 예입니다.

42
3.5
4.
.001
5E2
1.925E-3

소수점이나 소수점을 포함하지 않는 숫자 상수 지수는 처음에 유형으로 추정됩니다정수값이 유형에 맞는 경우정수(32 비트); 그렇지 않으면 유형으로 추정 됨bigint값이 유형에 맞는 경우bigint(64 비트); 그렇지 않으면 유형으로 사용됩니다숫자. 소수점을 포함하는 상수 포인트 및/또는 지수는 항상 처음에는 유형으로 추정됩니다숫자.

숫자 상수의 초기에 할당 된 데이터 유형은 유형 해상도 알고리즘의 시작점. 대부분의 경우 상수는 자동으로 가장 적절한 것으로 강요됩니다. 컨텍스트에 따라 입력하십시오. 필요한 경우 숫자를 강요 할 수 있습니다 값을 시전하여 특정 데이터 유형으로 해석 할 값. 을 위한 예를 들어, 숫자 값을 유형으로 취급하도록 강요 할 수 있습니다Real(float4) by 글쓰기:

Real '1.23' - 문자열 스타일
1.23 :: Real -Postgresql (역사적) 스타일

실제로 일반 캐스팅의 특별한 경우입니다. 다음에 논의 된 표기법.

​​4.1.2.7. 다른 상수 유형

상수의 상수임의의유형을 사용하여 입력 할 수 있습니다 다음 표기법 중 하나 :

타입'String'
'String'::타입캐스트 ( 'String' 처럼타입)

토토 핫열 상수의 텍스트가 입력 변환으로 전달됩니다. 라는 유형의 루틴타입. 결과는 표시된 유형의 상수입니다. 명시 적 유형 유형에 대한 모호성이 없으면 캐스트를 생략 할 수 있습니다. 상수는 (예를 들어, 직접 할당 될 때 테이블 열),이 경우 자동으로 강요됩니다.

문자열 상수는 일반 SQL을 사용하여 작성할 수 있습니다. 표기법 또는 달러 인용.

함수와 같은 구문 :

typename( 'String' )

그러나 모든 유형 이름을 이러한 방식으로 사용할 수있는 것은 아닙니다. 보다섹션 4.2.9세부.

the::, cast ()및 함수 전화 구문도 사용할 수 있습니다 임의의 표현식의 런타임 유형 변환을 지정합니다 논의섹션 4.2.9. 에게 구문 모호성을 피하십시오.타입'String'구문 만 사용될 수 있습니다 간단한 토토 핫 상수의 유형을 지정하십시오. 또 다른 제한 에서타입'String'구문입니다 배열 유형에 대해서는 작동하지 않습니다. 사용::또는cast ()배열의 유형을 지정합니다 끊임없는.

thecast ()구문은 SQL을 준수합니다. 그만큼타입'String'구문은 a 표준의 일반화 : SQL 은이 구문 만 몇 가지 데이터 유형이지만PostgreSQL모든 유형에 대해 허용합니다. 의 구문::역사적PostgreSQL사용법과 마찬가지로 사용합니다 통사론.

4.1.3. 연산자

운영자 이름은 최대의 시퀀스입니다.지명-1 (기본적으로 63) 토토 핫 다음 목록 :

+-*/< = ~! @#%^& | `?

운영자 이름에는 몇 가지 제한 사항이 있습니다.
  • --and/*운영자 이름의 어느 곳에도 나타날 수 없습니다. 댓글의 시작으로 촬영.

  • 다중 토토 핫 운영자 이름은 끝날 수 없습니다+또는-, 이름이 아니라면 또한이 토토 핫 중 하나 이상을 포함합니다.

    ~! @#%^& | `?

    예를 들어@-허용 연산자입니다 이름, 그러나*-그렇지 않습니다. 이 제한 허용PostgreSQL구문 분석 토큰 사이의 공간이 필요없는 SQL 호환 쿼리.

비 SQL 표준 운영자 이름으로 작업 할 때는 그렇습니다 일반적으로 피하기 위해 인접한 연산자를 분리해야합니다. 모호. 예를 들어, 왼쪽 단지 연산자를 정의한 경우 이름@, 당신은 쓸 수 없습니다x*@y; 당신은 작성해야합니다x* @yPostgreSQL읽습니다 두 개의 운영자 이름은 하나가 아닙니다.

4.1.4. 특수 문자

영숫자가 아닌 일부 문자는 특별한 의미를 가지고 있습니다. 그것은 운영자와 다릅니다. 사용에 대한 자세한 내용은 할 수 있습니다 각 구문 요소가있는 위치에서 찾을 수 있습니다. 설명. 이 섹션은 존재를 조언하기 위해서만 존재합니다 이 문자의 목적을 요약합니다.

  • 달러 표시 ($) 다음은 숫자입니다 함수 본문에서 위치 매개 변수를 나타내는 데 사용 정의 또는 준비된 진술. 다른 맥락에서는 달러입니다 부호는 식별자 또는 1 달러 규모의 문자열의 일부일 수 있습니다. 끊임없는.

  • 괄호 (()) 평소가 있습니다 그룹 표현과 우선 순위 시행에 대한 의미. 어떤 경우에는 괄호는 고정 구문의 일부로 필요합니다. 특정 SQL 명령.

  • 브래킷 ([])를 선택하는 데 사용됩니다 배열의 요소. 보다PostgreSQL : 문서 : 9.3 : 토토 꽁 머니배열에 대한 자세한 정보.

  • 쉼표 (,)는 일부 구문에 사용됩니다 목록의 요소를 분리하기위한 구성.

  • 세미콜론 (;) SQL을 종료합니다 명령. 내부를 제외하고는 명령 내에는 나타날 수 없습니다 문자열 상수 또는 인용 식별자.

  • 콜론 (:) 선택에 사용됩니다"슬라이스"배열에서. (보다섹션 8.15.) 특정 SQL 방언 (예 : 임베디드 SQL), 콜론은 변수 이름을 접두하는 데 사용됩니다.

  • 별표 (*)는 일부에서 사용됩니다 테이블 행 또는 복합재의 모든 필드를 나타내는 컨텍스트 값. 또한 논쟁으로 사용될 때 특별한 의미가 있습니다. 집계 함수, 즉 골재는 필요하지 않습니다. 모든 명시적인 매개 변수.

  • 기간 (.)는 숫자로 사용됩니다 상수, 스키마, 테이블 및 열 이름을 분리하려면.

4.1.5. 의견

댓글은 더블로 시작하는 일련의 문자입니다. 대시 및 줄의 끝까지 확장 (예 :

- 이것은 표준 SQL 주석입니다.

또는 C 스타일 블록 댓글을 사용할 수 있습니다 :

/* 멀티 린 댓글
 * 중첩 : / * 중첩 블록 주석 * /
 */

주석이 시작되는 곳/*및 일치하는 발생으로 확장*/. 이 블록 주석은 SQL 표준에 지정된대로 둥지를 틀지만 C와 달리, 더 큰 코드 블록을 댓글을 달 수 있도록 기존 블록 댓글을 포함 할 수 있습니다.

추가 구문 전에 입력 스트림에서 주석이 제거됩니다. 분석 및 효과적으로 공백으로 대체됩니다.

4.1.6. 연산자 우선 순위

테이블 4-2운영자의 우선 순위와 연관성을 보여줍니다PostgreSQL. 대부분의 운영자가 있습니다 동일한 우선 순위이며 좌회전입니다. 우선 순위와 운영자의 연관성은 구문 분석기에 딱딱 해져 있습니다. 이것 직관적이지 않은 행동으로 이어질 수 있습니다. 예를 들어 부울 연산자<and부울과 다른 우선 순위가 있습니다 연산자<=and =. 또한 때때로 추가해야합니다 이진 및 단백 연산자의 조합을 사용할 때 괄호. 예를 들어:

5를 선택하십시오! -6;

:로 구문 분석됩니다.

5를 선택하십시오! (-6);

파서가 너무 늦을 때까지 파서가 전혀 모르기 때문에!| 디스 픽스. 이 경우 원하는 동작을 얻으려면 쓰다:

select (5!) -6;

이것은 확장 성을 위해 지불하는 가격입니다.

표 4-2. 연산자 우선 순위 (감소)

연산자/요소 연관성 설명
. 왼쪽 테이블/열 이름 분리기
:: 왼쪽 PostgreSQL-Style TypeCast
[ ] 왼쪽 배열 요소 선택
+ - 오른쪽 Unary Plus, Unary 마이너스
^ 왼쪽 지수
* / % 왼쪽 곱셈, 분할, 모듈로
+ - 왼쪽 추가, 뺄셈
is 진실, is 거짓, is null
isnull null 테스트
NOTNULL 널 테스트
(다른) 왼쪽 다른 모든 기본 및 사용자 정의 연산자
in 멤버십 설정
사이 범위 격리
오버랩 시간 간격 겹침
좋아요 ilike 유사한 토토 핫열 패턴 매칭
< 보다
= 오른쪽 평등, 과제
not 오른쪽 논리적 부정
왼쪽 논리적 연결
또는 왼쪽 논리적 분리

운영자 우선 순위 규칙도 적용됩니다 내장 이름과 동일한 이름을 가진 사용자 정의 연산자 위에서 언급 한 운영자. 예를 들어, A를 정의하는 경우"+"일부 사용자 정의 데이터 유형의 연산자 그것은 내장과 동일한 우선 순위를 가질 것입니다"+"운영자, 당신이 무엇을하든 상관없이.

스키마 자격 운영자 이름이 사용되는 경우운영자구문, 예를 들어 :

선택 3 연산자 (PG_CATALOG.+) 4;

the운영자구성이 취해졌습니다 에 표시된 기본 우선 순위표 4-2for"다른"운영자. 이것은 사실입니다 내부에 어떤 특정 연산자가 나타나는지 문제Operator ().