SQL 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다.토큰, 세미콜론에 의해 종료되었습니다";"). 입력 스트림의 끝
토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, a리터럴(또는 상수) 또는 특수 캐릭터
추가로,댓글가 발생할 수 있습니다
예를 들어, 다음은 (구문 적으로) 유효한 SQL입니다
my_table에서 선택 *;
이것은 한 줄에 하나씩 세 가지 명령의 순서입니다.
SQL 구문은 어떤 토큰에 대해서는 그다지 일관되지 않습니다."선택", an"업데이트","삽입"명령. 그러나업데이트항상 명령하십시오set토큰이 나타납니다삽입또한 a값완료되기 위해. 정확한 구문Part VI.
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"표준에 따라. 원한다면
세 종류의암시 적으로 유형 된 상수inpostgresql: 토토 캔, 비트 토토 캔 및
문자열 상수'), 예를 들어'이것은 토토 캔입니다'. 단일 쿼트를 포함합니다'Dianne' 's Horse'.아님이중 쿼트와 동일합니다").
공백에 의해서만 분리 된 두 개의 문자열 상수하나 이상|
'foo'선택
'foobar'를 선택하십시오;
그러나 :
'foo' 'bar'; 선택
유효한 구문이 아닙니다. (이 약간 기괴한 행동입니다SQL; postgresql
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이있는 문자는 토토 캔에있을 수 없습니다.
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가 켜져 있습니다. 이건 때문입니다
문자 그대로 스트링에 탈출 문자를 포함 시키려면
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 표준의 일부가 아니지만
비트 스트링 상수는 일반 문자열 상수처럼 보입니다B(위 또는 소문자)B'1001 '. 유일한0and1.
또는 비트 스트링 상수를 지정할 수 있습니다X(위 또는 소문자), 예 :x'1ff '. 이 표기법은 a와 같습니다
비트 스트링 상수의 두 가지 형태를 계속 진행할 수 있습니다
숫자 상수는 이러한 일반적인 형태로 허용됩니다 :
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' - 문자열 스타일
실제로 장군의 특별한 경우입니다
상수의 상수임의의유형을 입력 할 수 있습니다
타입 'String'String'::타입캐스트 ( 'String' 처럼타입 )
문자열 상수의 텍스트가 입력으로 전달됩니다타입. 결과는 상수입니다
문자열 상수는 정기적으로 어느 쪽이든 작성할 수 있습니다
typename( 'String' )
그러나 모든 유형 이름을 이러한 방식으로 사용할 수있는 것은 아닙니다. 보다섹션자세한 내용.
the::, cast ()및 함수 용액 구문도 가능합니다섹션. 구문 모호성을 피하기 위해타입 'String'구문 만 사용될 수 있습니다타입 'String'구문은 그렇지 않다는 것입니다::또는cast ()an의 유형을 지정합니다
thecast ()구문을 준수합니다타입 'String'구문은 일반화입니다postgresql모든 유형에 대해 허용합니다. 의 구문::역사적postgresql사용 가능
연산자 이름은 최대의 시퀀스입니다.paminatalen-1 (기본적으로 63) 문자
+-*/<> = ~! @#%^& |
거기--and/*연산자의 어느 곳에도 나타날 수 없습니다
다중 문자 연산자 이름은 끝날 수 없습니다+또는-,
~! @#%^& |
@-허용 연산자입니다*-는 그렇지 않습니다. 이것postgresqlSQL 준수를 구문 분석합니다비 SQL 표준 운영자 이름으로 작업 할 때는 그렇습니다@, 당신은 쓸 수 없습니다x*@y; 당신은 작성해야합니다x* @ypostgresql두 개의 연산자 이름으로 읽습니다
영숫자가 아닌 일부 문자는 특별합니다
주석은 이중으로 시작하는 일련의 문자입니다.
- 이것은 표준 SQL 주석입니다.
또는 C 스타일 블록 댓글을 사용할 수 있습니다 :
/* 멀티 린 댓글
주석이 시작되는 곳/*그리고 일치하는 발생으로 확장*/. 이 블록 주석은 지정된대로 둥지입니다
추가 전에 입력 스트림에서 주석이 제거됩니다.
테이블운영자의 우선 순위와 연관성을 보여줍니다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 ().