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

4.1. 어휘 구조

SQL 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다.토큰, 세미콜론에 의해 종료되었습니다";"). 입력 스트림의 끝

토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, a리터럴(또는 상수) 또는 특수 캐릭터

추가로,댓글가 발생할 수 있습니다

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

my_table에서 선택 *;

이것은 한 줄에 하나씩 세 가지 명령의 순서입니다.

SQL 구문은 어떤 토큰에 대해서는 그다지 일관되지 않습니다."선택", an"업데이트","삽입"명령. 그러나업데이트항상 명령하십시오set토큰이 나타납니다삽입또한 a완료되기 위해. 정확한 구문Part VI.

4.1.1. 식별자 및 키

select, 업데이트또는, 즉 SQL에 고정 된 의미를 가진 단어my_tableandA의 예입니다식별자. 그들은 테이블의 이름을 식별하고"이름". 핵심 단어 및 식별자롤 토토 PostgreSQL : 문서 : 8.4 : SQL 키어.

SQL 식별자 및 키워드는 편지로 시작해야합니다.a-z그러나_). 후속0-9) 또는 달러 표시 ($). 달러 표시는 허용되지 않습니다

시스템은 더 이상 사용하지 않습니다paminatalen-1 바이트의 바이트paminatalen는 최대 식별자입니다paminatalen상수src/include/pg_config_manual.h.

식별자 및 키워드

my_table set a = 5; 업데이트

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

my_table set a = 5; 업데이트

자주 사용되는 협약은 대문자로 핵심 단어를 쓰는 것입니다.

my_table set a = 5; 업데이트

두 번째 종류가 있습니다구분또는인용 식별자."). 구분"선택"a를 참조하는 데 사용될 수 있습니다"선택",select

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

견적 된 식별자는 다음을 제외한 모든 문자를 포함 할 수 있습니다

인용의 변형u &(상단 또는 소문자 u를 따랐습니다u & "foo". (이것은 an을 만듭니다&. 사용"데이터"할 수 있습니다

u & "d \ 0061t \ +000061"

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

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

백 슬래시와 다른 탈출 문자가 필요하다면,UESCAPE토토 캔 이후의 조항 :

u & "d! 0061T! +000061"uescape '!'

이스케이프 캐릭터는 다른 단일 캐릭터가 될 수 있습니다.

문자 그대로 식별자에 탈출 문자를 포함시키기 위해

유니 코드 이스케이프 구문은 서버 일 때만 작동합니다\ 007f) 지정할 수 있습니다.

식별자 인용은 또한 대소 문자에 민감하게 만듭니다foo, foo"foo"arepostgresql그러나"foo"and"foo"arepostgresqlSQL과 호환되지 않습니다foo"foo"아님"foo"표준에 따라. 원한다면

4.1.2. 상수

세 종류의암시 적으로 유형 된 상수inpostgresql: 토토 캔, 비트 토토 캔 및

4.1.2.1. 끈

문자열 상수'), 예를 들어'이것은 토토 캔입니다'. 단일 쿼트를 포함합니다'Dianne' 's Horse'.아님이중 쿼트와 동일합니다").

공백에 의해서만 분리 된 두 개의 문자열 상수하나 이상|

'foo'선택

'foobar'를 선택하십시오;

그러나 :

'foo' 'bar'; 선택

유효한 구문이 아닙니다. (이 약간 기괴한 행동입니다SQL; postgresql

4.1.2.2. 문자열 상수

postgresql수락"탈출"문자열 상수E(위 또는 소문자) 직전e'foo '.E첫 번째 전기 전에만\) C와 같은 시작Backslash Escape시퀀스테이블.

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

백 슬래시 탈출 시퀀스 해석
\ b 백 스페이스
\ f 양식 피드
\ n Newline
\ r 캐리지 리턴
\ t
\o, \oo, \ooo (o = 0 - 7) 옥탈 바이트 값
\ xh, \ xHH (h= 0-9, a- 육각형 바이트 값

백 슬래시 후의 다른 캐릭터가 취해집니다\\). 또한 싱글\ ', 정상적인 방법 외에''.

바이트가 당신을 시퀀싱하는 것은 당신의 책임입니다섹션대신 사용해야합니다. (대안은

주의

구성 매개 변수 인 경우Standard_Conforming_stringsisOFF, thepostgresql백 슬래시를 인식합니다Standard_Conforming_strings현재OFF, 기본값onaE그것이 처리 될 것입니다

외에Standard_Conforming_strings,Escape_string_warningandbackslash_quote토토 캔의 백 슬래시 처리를 통제하십시오

코드 0이있는 문자는 토토 캔에있을 수 없습니다.

4.1.2.3. 문자열 상수

postgresql도 지원합니다u &(상단 또는 소문자 u가 따랐습니다u & 'foo'. (이것은 an을 만듭니다&.'데이터'

U & 'D \ 0061T \ +000061'

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

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

백 슬래시와 다른 탈출 문자가 필요하다면,UESCAPE토토 캔 이후의 조항 :

u & 'd! 0061T! +000061'UESCAPE '!'

이스케이프 캐릭터는 단일 캐릭터가 될 수 있습니다

유니 코드 탈출 구문은 서버시에만 작동합니다\ 007f) 지정할 수 있습니다.

또한 문자열 상수에 대한 유니 코드 탈출 구문Standard_Conforming_strings가 켜져 있습니다. 이건 때문입니다

문자 그대로 스트링에 탈출 문자를 포함 시키려면

4.1.2.4. 달러에 따른 토토 캔

String 상수를 지정하기위한 표준 구문postgresql다른 방법을 제공합니다"달러 인용", 토토 캔을 씁니다$), 선택 사항"tag"0 이상의 문자,"Dianne 's Horse"달러 인용 사용 :

$$ Dianne 's Horse $$

달러에 따른 토토 캔 내부, 단일 따옴표

달러 규모의 문자열 상수를 중첩 할 수 있습니다

$ function $

여기, 시퀀스$ q $ [\ t \ r \ n \ V \\] $ q $는 1 달러 인용 된 것을 나타냅니다[\ t \ r \ n \ v \\]postgresql. 그러나 이후$ function $, 그것은 조금 더 있습니다

1 달러 규모의 문자열의 태그는 다음을 따릅니다.$ tag $ string content $ tag $정확하지만$ tag $ string content $ tag $is.

키워드를 따르는 달러 인용 문자열

달러 인용은 SQL 표준의 일부가 아니지만

4.1.2.5. 비트 스트링

비트 스트링 상수는 일반 문자열 상수처럼 보입니다B(위 또는 소문자)B'1001 '. 유일한0and1.

또는 비트 스트링 상수를 지정할 수 있습니다X(위 또는 소문자), 예 :x'1ff '. 이 표기법은 a와 같습니다

비트 스트링 상수의 두 가지 형태를 계속 진행할 수 있습니다

4.1.2.6.

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

Digits
Digits. [Digits] [E [+-]Digits]Digits].Digits[E [+-]Digits]
DigitsE [+-]Digits

여기서Digits하나 또는e), 하나가있는 경우. 아무것도 없습니다

이것은 유효한 숫자 상수의 일부 예입니다 :

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

숫자Integer값이 유형에 맞는 경우Integer(32 비트); 그렇지 않으면 그것은 추정됩니다bigint값이 유형에 맞는 경우bigint(64 비트); 그렇지 않으면 복용됩니다숫자. 상수숫자.

숫자 상수의 초기에 지정된 데이터 유형은예를 들어, 숫자 값을Real (float4) 쓰기 :

Real '1.23' - 문자열 스타일

실제로 장군의 특별한 경우입니다

4.1.2.7. 다른 상수

상수의 상수임의의유형을 입력 할 수 있습니다

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

문자열 상수의 텍스트가 입력으로 전달됩니다타입. 결과는 상수입니다

문자열 상수는 정기적으로 어느 쪽이든 작성할 수 있습니다

typename( 'String' )

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

the::, cast ()및 함수 용액 구문도 가능합니다섹션. 구문 모호성을 피하기 위해타입 'String'구문 만 사용될 수 있습니다타입 'String'구문은 그렇지 않다는 것입니다::또는cast ()an의 유형을 지정합니다

thecast ()구문을 준수합니다타입 'String'구문은 일반화입니다postgresql모든 유형에 대해 허용합니다. 의 구문::역사적postgresql사용 가능

4.1.3. 연산자

연산자 이름은 최대의 시퀀스입니다.paminatalen-1 (기본적으로 63) 문자

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

거기
  • --and/*연산자의 어느 곳에도 나타날 수 없습니다

  • 다중 문자 연산자 이름은 끝날 수 없습니다+또는-,

    ~! @#%^& | 

    @-허용 연산자입니다*-는 그렇지 않습니다. 이것postgresqlSQL 준수를 구문 분석합니다

비 SQL 표준 운영자 이름으로 작업 할 때는 그렇습니다@, 당신은 쓸 수 없습니다x*@y; 당신은 작성해야합니다x* @ypostgresql두 개의 연산자 이름으로 읽습니다

4.1.4. 특별한

영숫자가 아닌 일부 문자는 특별합니다

  • 달러 표시 ($) 다음

  • 괄호 (())

  • 브래킷 ([])는 익숙합니다섹션 8.14자세한 내용은

  • 쉼표 (,)는 일부에서 사용됩니다

  • 세미콜론 (;) 종료 an

  • 콜론 (:) 선택에 사용됩니다"슬라이스"배열에서. (보다섹션 8.14.) 특정 SQL에서

  • 별표 (*)가 사용됩니다

  • 기간 (.)가 사용됩니다

4.1.5. 의견

주석은 이중으로 시작하는 일련의 문자입니다.

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

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

/* 멀티 린 댓글

주석이 시작되는 곳/*그리고 일치하는 발생으로 확장*/. 이 블록 주석은 지정된대로 둥지입니다

추가 전에 입력 스트림에서 주석이 제거됩니다.

4.1.6. 어휘 우선 순위

테이블운영자의 우선 순위와 연관성을 보여줍니다postgresql. 대부분의 운영자<and와 다른 우선 순위가 있습니다<=and> =. 또한 때때로 필요할 것입니다

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

:로 구문 분석됩니다.

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

파서가 너무 늦을 때까지 파서가 전혀 모르기 때문에!는 Postfix 연산자로 정의됩니다

select (5!) -6;

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

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

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

운영자 우선권 규칙도 적용됩니다"+"일부 사용자 정의 데이터에 대한 연산자"+"운영자, 당신의 것이 무엇이든

스키마 자격을 갖춘 연산자 이름이 사용되는 경우운영자구문

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

the운영자구성이 가져옵니다표 4-2for"다른"연산자. 이것은Operator ().