SQL 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다.토큰, 세미콜론에 의해 종료되었습니다 (“;”). 입력 스트림의 끝에도 명령이 종료됩니다.
토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, a리터럴(또는 상수) 또는 특수 문자 기호. 토큰은 일반적으로 공백 (공간, 탭, Newline)으로 분리되지만 모호성이없는 경우 (일반적으로 특수 문자가 다른 토큰 유형에 인접한 경우에만 해당)..
예를 들어, 다음은 (구문 적으로) 유효한 SQL 입력 :입니다.
my_table에서 * 선택 *;
이것은 한 줄 당 하나의 명령 시퀀스입니다.
추가로댓글SQL 입력에서 발생할 수 있습니다. 그들은 토큰이 아니며, 공백과 효과적으로 동등합니다.
SQL 구문은 명령을 식별하는 토큰과 오페라 또는 매개 변수에 대해서는 그다지 일관되지 않습니다. 처음 몇 개의 토큰은 일반적으로 명령 이름이므로 위의 예에서 우리는 일반적으로 a에 대해 말할 것입니다.“select”, an“업데이트”및 an“삽입”명령. 그러나 예를 들어업데이트
명령은 항상 필요합니다SET
토큰이 특정 위치에 나타나고이 특별한 변형삽입
a도 필요합니다.값
완료되기 위해. 각 명령에 대한 정확한 구문 규칙은에 설명되어 있습니다.스포츠 토토 결과 PostgreSQL : 문서 : 17 : Part VI. 참조.
select
, 업데이트
또는값
위의 예는의 예입니다.키워드, 즉 SQL 언어에서 고정 된 의미를 가진 단어. 토큰my_table
andA
의 예입니다식별자. 사용 된 명령에 따라 테이블, 열 또는 기타 데이터베이스 개체의 이름을 식별합니다. 따라서 때때로 간단히라고합니다.“이름”. 핵심 단어와 식별자는 동일한 어휘 구조를 가지고 있습니다. 즉, 토큰이 언어를 모르고 식별자인지 또는 핵심 단어인지 알 수 없습니다.메이저 토토 사이트 PostgreSQL : 문서 : 17 : 부록 C. SQL 키어.
SQL 식별자 및 키워드는 문자로 시작해야합니다 (a
-z
뿐만 아니라 디아크리처 마크 및 비 라틴 문자가있는 문자) 또는 밑줄 (_
). 식별자 또는 키워드의 후속 문자는 문자, 밑줄, 숫자가 될 수 있습니다 (0
-9
) 또는 달러 표시 ($
). SQL 표준의 문자에 따라 식별자에는 달러 표시가 허용되지 않으므로 사용하면 응용 프로그램이 휴대용이 덜 가능합니다.
시스템은 이상을 사용하지 않습니다.지명 된 ATALEN
-1 식별자의 바이트; 더 긴 이름은 명령으로 쓸 수 있지만 잘립니다.지명 된 ATALEN
는 64이므로 최대 식별자 길이는 63 바이트입니다. 이 한계가 문제가되면를 변경하여 제기 할 수 있습니다.지명 된 ATALEN
상수src/include/pg_config_manual.h
.
키워드 및 인용되지 않은 식별자는 대소 문자를 사용하지 않습니다. 그러므로:
my_table set a = 5; 업데이트
동등하게 다음과 같이 작성할 수 있습니다.
my_table set a = 5; 업데이트
자주 사용되는 협약은 핵심 단어와 이름으로 핵심 단어를 소문자로 작성하는 것입니다 (예 :.
my_table set a = 5; 업데이트
두 번째 종류의 식별자가 있습니다 :구분 식별자또는인용 식별자. 이중 인용물로 임의의 문자 순서를 둘러싸고 형성됩니다 ("
). 구분 된 식별자는 항상 식별자이며 결코 키 단어가 아닙니다."선택"
|“select”, 인용되지 않은 반면select
핵심 단어로 간주되므로 테이블 또는 열 이름이 예상되는 경우 사용될 때 구문 분석 오류가 발생합니다. 예제는 다음과 같은 인용 된 식별자로 작성할 수 있습니다.
업데이트 "my_table"set "a"= 5;
견적 된 식별자는 코드 0이있는 문자를 제외한 모든 문자를 포함 할 수 있습니다. (이중 인용문을 포함하려면 두 개의 이중 인용문을 작성하십시오.) 이것은 공백이나 앰퍼 샌드를 포함하는 것과 같이 불가능하지 않은 테이블 또는 열 이름을 구성 할 수 있습니다.
식별자 인용은 또한 대중에 민감한 반면, 인용되지 않은 이름은 항상 소문자로 접 힙니다. 예를 들어, 식별자foo
, foo
및"foo"
PostgreSQL그러나"foo"
and"foo"
는이 세 가지와 서로 다릅니다. (인용되지 않은 이름을 소문자로 접는다PostgreSQL는 SQL 표준과 호환되지 않으며, 이는 인용되지 않은 이름을 대문자로 접어야한다고 말합니다. 따라서,foo
"foo"
not"foo"
표준에 따라. 휴대용 응용 프로그램을 작성하려면 항상 특정 이름을 인용하거나 인용하지 않는 것이 좋습니다.)
인용 식별자의 변형은 코드 포인트로 식별 된 탈출 된 유니 코드 문자를 포함시킬 수 있습니다. 이 변형은로 시작합니다.u &
(상단 또는 소문자 u 뒤에 앰퍼 샌드) 오프닝 이중 견적 직전에, 예를 들어 사이에 공백없이u & "foo"
. (이것은 연산자와 모호성을 만듭니다&
. 이 문제를 피하기 위해 연산자 주변의 공간을 사용하십시오.) 따옴표 내부에서 유니 코드 문자는 백 슬래시를 작성한 다음 4 자리 육각형 코드 포인트 번호 또는 백 슬래시 뒤에 6 자리 부호가 뒤 따른 후 6 자리 부호를 기록하여 이스케이프 형식으로 지정할 수 있습니다."데이터"
U & "D \ 0061T \ +000061"
다음 덜 사소한 예는 러시아어를 씁니다“Slon”(코끼리) 키릴 문자 :
u & "\ 0441 \ 043B \ 043E \ 043D"
백 슬래시와 다른 탈출 문자가 필요하면를 사용하여 지정할 수 있습니다.UESCAPE
토토 이후의 조항 :
u & "d! 0061T! +000061"UESCAPE '!'
탈출 문자는 16 진수, 플러스 부호, 단일 견적, 이중 인용문 또는 공백 문자 이외의 단일 캐릭터 일 수 있습니다. 탈출 문자는 이중 인용문이 아닌 단일 따옴표로 작성됩니다.UESCAPE
.
문자 그대로 식별자에 탈출 문자를 포함 시키려면 두 번 쓰십시오.
4 자리 또는 6 자리 탈출 형식은 U+FFFF보다 큰 코드 포인트를 가진 문자를 구성하기 위해 UTF-16 대리 쌍을 지정하는 데 사용될 수 있지만, 6 자리 양식의 가용성은 기술적 으로이 불필요하게 만듭니다. (대리 쌍이 직접 저장되지는 않지만 단일 코드 포인트로 결합됩니다.)
서버 인코딩이 UTF-8이 아닌 경우, 이러한 이스케이프 시퀀스 중 하나에 의해 식별 된 유니 코드 포인트는 실제 서버 인코딩으로 변환됩니다. 불가능한 경우 오류 가보고됩니다.
세 종류의암시 적으로 유형 된 상수inPostgreSQL: 문자열, 비트 문자열 및 숫자. 상수는 또한 명시 적 유형으로 지정할 수 있으며, 이는 시스템에 의해보다 정확한 표현과보다 효율적인 처리를 가능하게 할 수 있습니다.
SQL의 문자열 상수는 단일 따옴표로 경계를 이루는 임의의 문자 순서입니다 ('
), 예를 들어'이것은 토토입니다'
. 문자열 상수 내에 단일 쿼트 문자를 포함하려면 인접한 단일 인용문 두 개 (예 :를 쓰십시오.'Dianne' 's Horse'
. 이것은입니다.not이중 쿼트 문자와 동일합니다 ("
).
공백에 의해서만 분리 된 두 개의 문자열 상수적어도 하나의 Newline는 문자열이 하나의 상수로 기록 된 것처럼 연결되고 효과적으로 처리됩니다. 예를 들어:
'foo'선택
와 동일합니다.
'foobar'를 선택하십시오;
하지만 :
'foo' 'bar'; 선택
유효한 구문이 아닙니다. (이 약간 기괴한 행동은에 의해 지정됩니다SQL; PostgreSQL표준을 따르고 있습니다.)
PostgreSQL또한 수락“탈출”SQL 표준으로 확장되는 문자열 상수. 탈출 문자열 상수는 편지를 작성하여 지정됩니다E
(상단 또는 소문자) 오프닝 단일 견적 직전 (예 : 직전에e'foo '
. (라인을 가로 질러 탈출 문자열을 계속할 때 쓰기E
첫 번째 오프닝 견적 이전에만.) 탈출 문자열 내에서 백 슬래시 문자 (\
) C와 같은 시작Backslash Escape서열, 백 슬래시와 다음 문자의 조합이 특수 바이트 값을 나타내는 시퀀스표 4.1.
표 4.1. 백 슬래시 탈출 시퀀스
Backslash Escape 시퀀스 | 해석 |
---|---|
\ b |
백 스페이스 |
\ f |
양식 피드 |
\ n |
Newline |
\ r |
캐리지 리턴 |
\ t |
탭 |
\ , \ , \ (o = 0–7) |
옥탈 바이트 값 |
\ x , \ x (h = 0–9, A – F) |
육각형 바이트 값 |
\ u , \ u (x = 0–9, A – F) |
16 또는 32 비트 16 진수 유니 코드 문자 값 |
백 슬래시를 따르는 다른 캐릭터는 문자 그대로 취합니다. 따라서 백 슬래시 문자를 포함하려면 두 개의 백 슬래시를 씁니다 (\\
). 또한, 한 단일 견적은 글을 통해 탈출 문자열에 포함시킬 수 있습니다\ '
, 정상적인 방법 외에''
.
특히 옥탈 또는 16 진수 탈출을 사용할 때 바이트 시퀀스가 생성하는 것은 귀하의 책임입니다. 서버 문자 세트 인코딩에서 유효한 문자를 작성하십시오. 유용한 대안은 유니 코드 이스케이프 또는 대체 유니 코드 탈출 구문을 사용하는 것입니다.섹션 4.1.2.3; 그러면 서버는 문자 변환이 가능하는지 확인합니다.
구성 매개 변수 인 경우Standard_Conforming_stringsisoff
, thePostgreSQL정기 및 탈출 문자열 상수에서 백 슬래시 탈출을 인식합니다. 그러나 기준으로PostgreSQL9.1, 기본값은입니다.on
, 즉 백 슬래시 탈출은 탈출 문자열 상수에서만 인식됩니다. 이 행동은 표준을 준수하지만 역사가 탈출이 항상 인식 된 역사적 행동에 의존하는 응용 프로그램을 깨뜨릴 수 있습니다.off
, 그러나 백 슬래시 이스케이프를 사용하지 않는 것이 더 낫습니다. 특수 문자를 나타내려면 Backslash Escape를 사용해야하는 경우로 문자열 상수를 작성하십시오.E
.
외에Standard_Conforming_strings
, 구성 매개 변수19899_19920andbackslash_quote문자열 상수에서 백 슬래시 처리를 통제합니다.
코드 0이있는 문자는 문자열 상수에있을 수 없습니다.
PostgreSQL또한 코드 포인트별로 임의의 유니 코드 문자를 지정할 수있는 문자열의 다른 유형의 탈출 구문을 지원합니다. 유니 코드 탈출 문자열 상수는로 시작합니다.u &
(상단 또는 소문자 u 뒤에 암페어 u) 오프닝 견적 직전에, 예를 들어 사이에 공백없이u & 'foo'
. (이것은 연산자와 모호성을 만듭니다&
. 이 문제를 피하기 위해 연산자 주변의 공간을 사용하십시오.) 따옴표 내부에서 유니 코드 문자는 백 슬래시를 작성한 다음 4 자리 육각형 코드 포인트 번호 또는 백 슬래시 뒤에 6 자리 부호가 뒤 따른 후 6 자리 부호를 기록하여 이스케이프 형식으로 지정할 수 있습니다.'데이터'
U & 'D \ 0061T \ +000061'
다음 덜 사소한 예는 러시아어를 씁니다“Slon”(코끼리) 키릴 문자 :
U & '\ 0441 \ 043B \ 043E \ 043D'
백 슬래시와 다른 탈출 문자가 필요하면를 사용하여 지정할 수 있습니다.UESCAPE
토토 이후의 조항 :
u & 'd! 0061T! +000061'UESCAPE '!'
탈출 문자는 16 진수 숫자, 플러스 부호, 단일 인용구, 이중 인용문 또는 공백 문자 이외의 단일 캐릭터 일 수 있습니다..
문자 그대로 끈에 탈출 문자를 포함 시키려면 두 번 쓰십시오.
4 자리 또는 6 자리 탈출 형식은 U+FFFF보다 큰 코드 포인트를 가진 문자를 구성하기 위해 UTF-16 대리 쌍을 지정하는 데 사용될 수 있지만, 6 자리 양식의 가용성은 기술적 으로이 불필요하게 만듭니다. (대리 쌍이 직접 저장되지는 않지만 단일 코드 포인트로 결합됩니다.)
서버 인코딩이 UTF-8이 아닌 경우, 이러한 이스케이프 시퀀스 중 하나에 의해 식별 된 유니 코드 포인트는 실제 서버 인코딩으로 변환됩니다. 불가능한 경우 오류 가보고됩니다.
또한 문자열 상수의 유니 코드 탈출 구문은 구성 매개 변수 일 때만 작동합니다.Standard_Conforming_strings가 켜져 있습니다. 그렇지 않으면이 구문이 SQL 문을 구문 분석하는 클라이언트를 SQL 주입 및 유사한 보안 문제로 이어질 수 있다는 시점까지 혼동 될 수 있기 때문입니다.
문자열 상수를 지정하기위한 표준 구문은 일반적으로 편리하지만 원하는 문자열에 많은 단일 따옴표가 포함되어있을 때 이해하기가 어려울 수 있습니다. 그러한 상황에서 더 읽기 쉬운 쿼리를 허용하려면PostgreSQL다른 방법을 제공합니다“달러 인용”24938_25026$
), 선택 사항“tag”0 개 이상의 캐릭터, 또 다른 달러 표시, 토토 컨텐츠, 달러 표시,이 달러 견적을 시작한 동일한 태그 및 달러 표지판을 구성하는 임의의 캐릭터 시퀀스. 예를 들어, 토토을 지정하는 두 가지 방법이 있습니다“Dianne 's Horse”달러 인용 사용 :
$$ Dianne 's Horse $$
달러에 따른 문자열 내부에서는 탈출 할 필요없이 단일 따옴표를 사용할 수 있습니다. 실제로, 1 달러 규모의 문자열 내부의 문자는 탈출되지 않습니다. 문자열 내용은 항상 문자 그대로 기록됩니다.
각 둥지 레벨에서 다른 태그를 선택하여 달러에 따른 문자열 상수를 중첩 할 수 있습니다. 이것은 작문 기능 정의에 가장 일반적으로 사용됩니다.
$ function $
여기, 시퀀스$ q $ [\ t \ r \ n \ V \\] $ q $
1 달러 규모의 토토을 나타냅니다[\ t \ r \ n \ v \\]
, 기능 본체가 실행될 때 인식 될 것입니다PostgreSQL. 그러나 시퀀스는 Delimiter를 인용하는 외부 달러와 일치하지 않기 때문에$ function $
, 외부 문자열에 관한 한 상수 내에서 더 많은 문자입니다.
1 달러 규모의 문자열의 태그는 달러 표시를 포함 할 수 없다는 점을 제외하고 인용되지 않은 식별자와 동일한 규칙을 따릅니다. 태그는 사례에 민감하므로$ tag $ 문자열 내용 $ tag $
정확하지만$ tag $ string 컨텐츠 $ tag $
is.
키워드 또는 식별자를 따르는 달러 인용 문자열은 공백으로 분리되어야합니다. 그렇지 않으면 Dolimiter를 인용하는 Dolimiter는 이전 식별자의 일부로 간주됩니다.
Dollar Quoting은 SQL 표준의 일부가 아니지만 표준 호환 단일 인용문보다 복잡한 문자 리터럴을 작성하는 것이 더 편리한 방법입니다. 절차 적 기능 정의에 종종 필요한 것처럼 다른 상수 내부의 문자열 상수를 나타낼 때 특히 유용합니다.
비트 스트링 상수는 a의 일반 문자열 상수처럼 보입니다.B
(상단 또는 소문자) 오프닝 견적 직전 (중재 공백 없음), 예를 들어,B'1001 '
. 비트 스트링 상수 내에서 허용되는 유일한 문자는입니다.0
and1
.
대안 적으로, 비트 스트링 상수를 16 진수 표기법으로 지정할 수 있습니다.X
(상단 또는 소문자), 예 :x'1ff '
. 이 표기법은 각 16 진수 숫자에 대해 4 개의 이진 숫자가있는 비트 스트링 상수와 동일합니다.
비트 스트링 상수의 두 가지 형태는 일반 문자열 상수와 같은 방식으로 선을 가로 질러 계속 될 수 있습니다. 달러 인용구는 비트 스트링 상수에서 사용할 수 없습니다.
숫자 상수는 이러한 일반적인 형태로 허용됩니다 :
Digits
Digits
. [Digits
] [E [+-]Digits
]Digits
].Digits
[E [+-]Digits
]Digits
E [+-]Digits
여기서Digits
는 하나 이상의 소수점 숫자 (0 ~ 9)입니다. 하나 이상의 숫자는 사용되는 경우 10 진수 지점 전후에 있어야합니다.e
), 하나가있는 경우. 밑줄을 제외하고는 상수에 내장 된 공백이나 다른 문자가있을 수 없으며, 이는 아래에 설명 된대로 시각적 그룹화에 사용할 수 있습니다.
유효한 숫자 상수의 일부 예입니다.
42
3.5
4.
.001
5E2
1.925E-3
추가로, 비 시세 정수 상수가 이러한 형태로 허용됩니다 :
0xHexDigits
0oOctDigits
0Bbindigits
여기서HexDigits
하나 이상의 16 진수 숫자 (0-9, A-F),OctDigits
는 하나 이상의 옥탈 숫자 (0-7)이고입니다.bindigits
는 하나 이상의 이진 숫자 (0 또는 1)입니다. 16 진수 숫자와 radix 접두사는 상류 또는 소문자 일 수 있습니다.
이들은 유효한 비 시세 정수 상수의 일부 예입니다 :
0B100101
0B10011001
0O273
0o755
0x42F
0xffff
비주얼 그룹화의 경우 숫자를 숫자로 삽입 할 수 있습니다. 이들은 상수의 가치에 더 이상 영향을 미치지 않습니다.
1_500_000_000
0B10001000_00000000
0o_1_755
0xffff_ffff
1.618_034
숫자 상수 또는 숫자 그룹의 시작 또는 끝에 밑줄이 허용되지 않습니다 (즉, 소수점 또는 지수 마커 바로 직전 또는 지수 마커 바로 직전).
소수점이나 지수가 초기에 유형으로 추정되는 숫자 상수Integer
값이 유형에 맞는 경우Integer
(32 비트); 그렇지 않으면 유형으로 추정 됨bigint
값이 유형에 맞는 경우bigint
(64 비트); 그렇지 않으면 유형으로 사용됩니다숫자
. 소수점 및/또는 지수를 포함하는 상수는 항상 처음에는 유형으로 추정됩니다숫자
.
숫자 상수의 처음 지정된 데이터 유형은 유형 해상도 알고리즘의 출발점 일뿐입니다. 대부분의 경우 상수는 컨텍스트에 따라 가장 적절한 유형으로 자동 강요됩니다.예를 들어, 숫자 값을 유형으로 취급하도록 강요 할 수 있습니다Real
(float4
) 쓰기 :
Real '1.23' - 문자열 스타일
실제로 다음에 논의 된 일반 캐스팅 표기법의 특별한 경우입니다.
상수의임의의다음 표기법 중 하나를 사용하여 유형을 입력 할 수 있습니다.
타입
'String
'String
'::타입
캐스트 ( 'String
' 처럼타입
)
문자열 상수의 텍스트는 유형의 입력 변환 루틴으로 전달됩니다.타입
. 결과는 표시된 유형의 상수입니다.
문자열 상수는 일반 SQL 표기법 또는 달러 quoting을 사용하여 작성할 수 있습니다.
함수와 같은 구문을 사용하여 유형 강요를 지정할 수도 있습니다 :
typename
( 'String
' )
그러나 모든 유형 이름을 이런 식으로 사용할 수있는 것은 아닙니다. 보다섹션 4.2.9자세한 내용.
the::
, cast ()
및 함수 콜 구문을 사용하여 사용될 수도 있습니다.섹션 4.2.9. 구문 모호성을 피하기 위해
구문은 단순한 문자 상수의 유형을 지정하는 데만 사용될 수 있습니다. 에 대한 또 다른 제한타입
'String
'
구문은 배열 유형에 대해서는 작동하지 않는다는 것입니다. 사용타입
'String
'::
또는cast ()
배열 상수의 유형을 지정하려면
thecast ()
구문은 SQL을 준수합니다. 그만큼
구문은 표준의 일반화입니다. SQL 은이 구문을 몇 가지 데이터 유형에 대해서만 지정하지만PostgreSQL모든 유형에 대해 허용합니다. 의 구문타입
'String
'::
역사적PostgreSQL기능 전화 구문과 마찬가지로 사용법.
연산자 이름은 최대의 시퀀스입니다.지명 된 ATALEN
-1 (기본적으로 63) 다음 목록에서 문자 :
+-*/<> = ~! @#%^& |
운영자 이름에는 몇 가지 제한 사항이 있습니다.
--
and/*
댓글의 시작으로 취해지기 때문에 연산자 이름의 어느 곳에도 나타날 수 없습니다.
다중 문자 연산자 이름은 끝날 수 없습니다+
또는-
, 이름에 다음 문자 중 하나 이상을 포함하지 않는 한 :
~! @#%^& |
예를 들어@-
허용 된 연산자 이름이지만*-
는 그렇지 않습니다. 이 제한은 허용PostgreSQL토큰 사이의 공간이 필요하지 않고 SQL 호환 쿼리를 구문 분석합니다.
비 SQL 표준 운영자 이름으로 작업 할 때는 일반적으로 인접한 연산자와 모호성을 피하기 위해 공간을 분리해야합니다. 예를 들어, Prefix 연산자라는 이름의를 정의한 경우@
, 당신은 쓸 수 없습니다x*@y
; 당신은 작성해야합니다x* @y
PostgreSQL두 개의 연산자 이름으로 읽습니다.
영숫자가 아닌 일부 문자는 연산자와 다른 특별한 의미를 가지고 있습니다. 사용에 대한 세부 사항은 각 구문 요소가 설명 된 위치에서 찾을 수 있습니다.
달러 표시 ($
) 다음 숫자는 함수 정의 본문 또는 준비된 문의 위치 매개 변수를 나타내는 데 사용됩니다. 다른 맥락에서 달러 표시는 식별자 또는 1 달러 규모의 문자열 상수의 일부가 될 수 있습니다.
괄호 (()
) 그룹 표현과 우선 순위를 집행하는 일반적인 의미가 있습니다. 경우에 따라 특정 SQL 명령의 고정 구문의 일부로 괄호가 필요합니다.
브래킷 ([]
)는 배열의 요소를 선택하는 데 사용됩니다. 보다PostgreSQL : 문서 : 17 : 8.15. 토토 꽁 머니배열에 대한 자세한 정보.
쉼표 (,
) 목록의 요소를 분리하기 위해 일부 구문 구성에 사용됩니다.
세미콜론 (;
) SQL 명령을 종료합니다. 문자열 상수 또는 인용 된 식별자를 제외하고는 명령 내에 어디에도 나타날 수 없습니다.
콜론 (:
) 선택에 사용됩니다“슬라이스”배열에서. (보다PostgreSQL : 문서 : 17 : 8.15. 토토 꽁 머니.) 특정 SQL 방언 (예 : 임베디드 SQL)에서 결장은 변수 이름을 접두하는 데 사용됩니다.
별표 (*
)는 일부 컨텍스트에서 테이블 행 또는 복합 값의 모든 필드를 나타내는 데 사용됩니다. 또한 집계 함수의 인수로 사용될 때 특별한 의미가 있습니다. 즉, 집계에는 명시적인 매개 변수가 필요하지 않습니다..
기간 (.
) 숫자 상수에서 사용되며 스키마, 테이블 및 열 이름을 분리하는 데 사용됩니다.
주석은 이중 대시로 시작하여 줄 끝까지 확장되는 일련의 문자입니다 (예 :
- 이것은 표준 SQL 주석입니다.
또는 C 스타일 블록 댓글을 사용할 수 있습니다 :
/* 멀티 린 댓글
주석이 시작되는 곳/*
그리고 일치하는 발생으로 확장*/
. 이 블록 주석은 SQL 표준에 지정된대로 C와 달리 C와 달리 둥지를 져서 기존 블록 주석을 포함 할 수있는 더 큰 코드 블록을 주석 할 수 있습니다.
추가 구문 분석 전에 입력 스트림에서 주석이 제거되고 공백으로 효과적으로 대체됩니다.
표 4.2운영자의 우선 순위와 연관성을 보여줍니다PostgreSQL. 대부분의 운영자는 동일한 우선 순위를 가지며 좌회전이 있습니다.
표 4.2. 연산자 우선 순위 (가장 높거나 가장 낮음)
연산자/요소 | 연관성 | 설명 |
---|---|---|
. |
왼쪽 | 테이블/열 이름 분리기 |
:: |
왼쪽 | PostgreSQL-스타일 typecast |
[ ] |
왼쪽 | 배열 요소 선택 |
+ - |
오른쪽 | Unary Plus, unary 마이너스 |
Collate |
왼쪽 | Collation 선택 |
at |
왼쪽 | 시간대에서 , AT LOCAL |
^ |
왼쪽 | 지수 |
* / % |
왼쪽 | 곱셈, 분할, 모듈로 |
+ - |
왼쪽 | 추가, 뺄셈 |
(다른 운영자) | 왼쪽 | 다른 모든 기본 및 사용자 정의 연산자 |
사이 in 좋아요 ilike 유사한 |
범위 격리, 설정 멤버십, 토토 일치 | |
< = <= > = < |
비교 연산자 | |
is isnull NOTNULL |
진실 , 거짓 , is null , | 등 |
|
not |
오른쪽 | 논리적 부정 |
및 |
왼쪽 | 논리적 연결 |
또는 |
왼쪽 | 논리적 분리 |
운영자 우선권 규칙은 위에서 언급 한 내장 연산자와 동일한 이름을 가진 사용자 정의 연산자에게도 적용됩니다. 예를 들어, A를 정의하는 경우“+”운영자 일부 사용자 정의 데이터 유형의 경우 내장과 동일한 우선 순위가 있습니다“+”운영자, 당신이 무엇을하든 상관없이.
스키마 자격을 갖춘 연산자 이름이 사용되는 경우운영자
구문, 예를 들어 :
3 연산자 선택 (PG_CATALOG.+) 4;
the운영자
구성은 기본 우선 순위가 표시되어표 4.2for“다른 연산자”. 어떤 특정 연산자가 내부에 나타나든 상관없이Operator ()
.
PostgreSQL9.5 이전의 버전은 약간 다른 연산자 우선 순위 규칙을 사용했습니다. 특히,<=
> =
and<
일반 연산자로 취급되었던 상태;is
우선 순위가 높은 테스트; 그리고및 관련 구성은 일관되지 않게 작용하여 어떤 경우에는의 우선 순위가있는 것으로 간주됩니다.
not
보다는사이
. 이러한 규칙은 SQL 표준을 더 잘 준수하고 논리적으로 동등한 구성의 일관되지 않은 처리로 인한 혼란을 줄이기 위해 변경되었습니다.“그러한 연산자 없음”괄호를 추가하여 해결할 수있는 실패. 그러나 구문 분석 오류 가보고되지 않고 쿼리가 동작을 변경할 수있는 코너 사례가 있습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면