Postgresql 9.0.23 문서화 | ||||
---|---|---|---|---|
Postgre젠 토토 : 문서 : 9.0 : 젠 토토 구문 | up | 4 장 SQL 통사론 | PostgreSQL : 문서 : 9.0 : 값 스포츠 토토 결과식 |
SQL 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다.토큰, 세미콜론에 의해 종료되었습니다 (";"). 입력 스트림의 끝 또한 명령을 종료합니다. 유효한 토큰은 다음에 따라 다릅니다 특정 명령의 구문.
토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, a리터럴(또는 상수) 또는 특수 캐릭터 상징. 토큰은 일반적으로 공백 (공간, 탭, Newline), 그러나 모호성이 없다면 (이것은 일반적으로 특수 캐릭터가 인접한 경우에만 다른 토큰 유형).
예를 들어, 다음은 (구문 적으로) 유효한 SQL입니다 입력:
my_table에서 * 선택 *; my_table set a = 5 업데이트; my_table 값에 삽입 (3, 'hi there');
이것은 한 줄에 하나씩 세 가지 명령의 시퀀스입니다. 이것은 필요하지 않습니다. 둘 이상의 명령이 한 줄에있을 수 있으며 명령은 유용하게 선을 통해 분할 될 수 있습니다).
추가로댓글가 발생할 수 있습니다 SQL 입력. 그들은 토큰이 아니며 효과적으로 동등합니다 공백에.
SQL 구문은 어떤 토큰에 대해서는 그다지 일관되지 않습니다. 명령을 식별하고 피연산자 또는 매개 변수입니다. 첫 번째 일반적으로 명령 이름이 거의 없으므로 위에서 예를 들어 우리는 일반적으로에 대해 말할 것입니다."선택", an"업데이트", 그리고 A"삽입"명령. 그러나 인스턴스업데이트항상 명령하십시오 a 필요SET토큰이 나타납니다 특정 위치 및이 특별한 변형의삽입또한 a값완료되기 위해. 정확한 구문 각 명령에 대한 규칙은에 설명되어 있습니다.Part VI.
select, 업데이트또는값위의 예는의 예입니다.키 단어, 즉 SQL에 고정 된 의미를 가진 단어 언어. 토큰my_tableanda의 예입니다식별자. 그들은 테이블의 이름을 식별하고 명령에 따라 열 또는 기타 데이터베이스 개체 그들은 사용됩니다. 따라서 때로는 단순히라고 불립니다."이름". 핵심 단어 및 식별자 동일한 어휘 구조를 가지고 있습니다. 즉, 알 수 없습니다. 토큰이 식별자인지 또는 알지 못하는 핵심 단어 여부 언어. 키워드의 전체 목록은에서 찾을 수 있습니다.부록 C.
SQL 식별자 및 키워드는 편지로 시작해야합니다. (a-Z그러나 또한 명성적인 자국과 비 라틴 문자가있는 문자) 또는 밑줄 (_). 후속 식별자 또는 키워드의 문자는 문자 일 수 있습니다. 밑줄, 숫자 (0-9) 또는 달러 표시 ($). 달러 표시는 허용되지 않습니다 SQL 표준의 편지에 따른 식별자 그들의 사용은 응용 프로그램을 덜 휴대용으로 만들 수 있습니다. SQL 표준은 숫자가 포함 된 핵심 단어를 정의하지 않습니다. 밑줄로 시작하거나 종료 하므로이 양식의 식별자 향후 확장과의 충돌 가능성에 안전합니다 표준.
시스템은 이상을 사용합니다.지명-1 식별자의 바이트; 더 길게 이름은 명령으로 작성 될 수 있지만 잘립니다. 기본적으로지명는 64입니다 최대 식별자 길이는 63 바이트입니다. 이 한도라면 문제가 있습니다.를 변경하여 제기 할 수 있습니다.paminatalen상수src/include/pg_config_manual.h.
키워드 및 인용되지 않은 식별자는 대체 무감각입니다. 그러므로:
my_table set a = 5; 업데이트
동등하게 다음과 같이 작성할 수 있습니다.
my_table set a = 5; 업데이트
자주 사용되는 협약은 대문자로 핵심 단어를 작성하는 것입니다. 및 소문자의 이름 (예 :
my_table set a = 5; 업데이트
두 번째 종류의 식별자가 있습니다 :구분 식별자또는인용 식별자. 그것은 둘러싸여 형성됩니다 이중 인용물의 임의의 문자 순서 ("). 구분 된 식별자는 항상 an입니다 식별자, 키 단어가 아닙니다. 그래서"선택"열을 참조하는 데 사용될 수 있습니다 표명"선택"인용되지 않은select따라서 핵심 단어는 사용될 때 구문 분석 오류를 유발합니다. 테이블 또는 열 이름이 예상되는 경우. 예는 될 수 있습니다 다음과 같이 인용 된 식별자로 작성되었습니다.
업데이트 "my_table"set "a"= 5;
견적 된 식별자는 다음을 제외한 모든 문자를 포함 할 수 있습니다 코드 0이있는 문자. (이중 인용문을 포함하려면 두 가지를 쓰십시오 이중 따옴표.) 이것은 테이블 또는 열 이름을 구성 할 수 있습니다 그렇지 않으면 불가능할 것입니다. 공백 또는 앰퍼 샌드. 길이 제한은 여전히 적용됩니다.
인용 된 식별자의 변형은 탈출을 포함 할 수 있습니다 코드 포인트로 식별 된 유니 코드 문자. 이것 변형은로 시작합니다.u &(상단 또는 소문자 u 뒤에 앰퍼 샌드) 직전 그 사이에 공간이없는 이중 견적을 열어줍니다 예u & "foo". (이것에 유의하십시오 연산자와 모호함을 만듭니다&. 연산자 주변의 공간을 사용하여 피하십시오 이 문제는 인용문 내부에서 유니 코드 문자 일 수 있습니다 Backslash를 작성한 다음 네 자리 16 진 코드 포인트 번호 또는 대안 a 백 슬래시 뒤 플러스 기호 다음 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을 지정하는 데 사용될 수 있습니다. 코드 포인트가 더 큰 문자를 구성하는 대리 쌍 6 자리 형태의 가용성이지만 U+FFFF보다 기술적으로 이것을 불필요하게 만듭니다. (대리 쌍이있을 때 서버 인코딩이있을 때 사용UTF8, 그들은 먼저 단일 코드 포인트로 결합됩니다. UTF-8에서 인코딩.)
식별자 인용은 또한 대소 문자를 인정합니다 인용되지 않은 이름은 항상 소문자로 접습니다. 예를 들어, 식별자foo, foo및"foo"are 동일하게 고려토토 캔그러나"foo"and"foo"are 이 세 가지와 서로 다릅니다. (접는 로어 케이스에 대한 인용되지 않은 이름토토 캔SQL과 호환되지 않습니다 표준, 인용되지 않은 이름을 접어야한다고 말합니다. 대문자. 따라서,foo동등한"foo"not"foo"표준에 따라. 원한다면 휴대용 응용 프로그램을 작성하십시오. 항상 인용하는 것이 좋습니다. 특정 이름이나 인용하지 마십시오.)
세 종류의암시 적으로 유형 된 상수in토토 캔: 문자열, 비트 문자열 및 숫자. 상수는 명시 적 유형으로 지정할 수도 있습니다. 보다 정확한 표현 등을 가능하게 할 수 있습니다 시스템에 의한 효율적인 처리. 이러한 대안은 다음과 같습니다 다음 하위 섹션에서 논의 됨
SQL의 문자열 상수는 임의의 순서입니다. 단일 인용문에 의해 제한되는 문자 ('), 예를 들어'이것은 a입니다 끈'. a 내에 단일 쿼트 문자를 포함합니다 문자열 상수, 인접한 단일 인용문 두 개 (예 :'Dianne' 's Horse'. 이것은입니다.nota와 동일합니다 이중 인용 문자 (").
공백에 의해서만 분리되는 두 개의 문자열 상수하나 이상 Newline| 문자열은 하나의 상수로 작성되었습니다. 예를 들어:
'foo'선택 '술집';
'foobar'를 선택하십시오;
그러나 :
'foo' 'bar'; 선택
유효한 구문이 아닙니다. (이 약간 기괴한 행동입니다 지정SQL;토토 캔기준.)
토토 캔또한 수락"탈출"문자열 상수 SQL 표준으로의 확장입니다. 탈출 문자열 상수는 편지를 작성하여 지정됩니다e(위 또는 소문자) 직전 단일 견적 열기 (예 :e'foo '. (라인을 가로 질러 탈출 토토 캔을 계속할 때 쓰다e첫 번째 전기 전에만 개방 견적.) 탈출 토토 캔 내에서 백 슬래시 성격 (\) C와 같은 시작Backslash Escape시퀀스 백 슬래시와 다음 문자의 조합 와 같이 특수 바이트 값을 나타냅니다테이블 4-1.
표 4-1. 백 슬래시 탈출 시퀀스
Backslash Escape Sequence | 해석 |
---|---|
\ b | 백 스페이스 |
\ f | 양식 피드 |
\ n | Newline |
\ r | 캐리지 리턴 |
\ t | 탭 |
\O, \oo, \ooo(O= 0-7) | 옥탈 바이트 값 |
\ xH, \ xHH(H= 0-9, a- 에프) | 육각형 바이트 값 |
\ uxxxx, \ uxxxxxxxx(x= 0-9, a -f) | 16 또는 32 비트 16 진 유니 코드 문자 값 |
백 슬래시 후의 다른 캐릭터가 가져옵니다 문자 그대로. 따라서 백 슬래시 문자를 포함 시키려면 두 가지를 씁니다 백 슬래시 (\\). 또한 싱글 견적은 글을 통해 탈출 문자열에 포함될 수 있습니다\ ', 정상적인 방법 외에''.
바이트가 당신을 시퀀싱하는 것은 당신의 책임입니다 특히 옥탈 또는 16 진수를 사용할 때 생성하십시오 탈출, 서버 문자 세트에서 유효한 문자를 작성하십시오 부호화. 서버 인코딩이 UTF-8이면 유니 코드입니다 탈출 또는 대체 유니 코드 탈출 구문이 설명했다 안에섹션 4.1.2.3대신 사용해야합니다. (대안은 UTF-8 인코딩을 손으로하고 바이트, 매우 번거로운 것입니다.)
유니 코드 이스케이프 구문은 서버가있을 때만 완전히 작동합니다. 인코딩은UTF8. 다른 서버 인코딩은 ASCII 범위의 코드 포인트 만 사용됩니다 (UP 에게\ u007f)를 지정할 수 있습니다. 둘 다 4 자리 및 8 자리 양식은 지정하는 데 사용될 수 있습니다. UTF-16 대리 쌍 쌍은 코드 포인트로 문자를 구성합니다 8 자리의 가용성이지만 U+FFFF보다 큽니다 형태는 기술적으로 이것을 불필요하게 만듭니다. (대리 할 때 쌍은 서버 인코딩이있을 때 사용됩니다UTF8, 그들은 먼저 단일로 결합됩니다 그런 다음 UTF-8에서 인코딩 된 코드 포인트.)
주의 |
구성 매개 변수 인 경우Standard_Conforming_stringsisOFF,토토 캔백 슬래시를 인식합니다 일반 및 탈출 문자열 상수에서 탈출합니다. 이것은 다음과의 뒤로 호환성을위한 것입니다 백 슬래시 탈출이 있었던 역사적 행동 항상 인식했습니다. 하지만Standard_Conforming_strings현재 기본값으로OFF, 기본값 로 변경됩니다ona 개선 된 표준 준수를위한 향후 릴리스. 따라서 응용 프로그램은 마이그레이션을 권장합니다 Backslash Escapes를 사용하는 것입니다. 사용해야하는 경우 a 특수 캐릭터를 대표하기위한 백 슬래시 탈출, 로 문자열 상수를 작성하십시오.e그것이 처리 될 것입니다 향후 릴리스에서도 마찬가지입니다. 외에Standard_Conforming_strings, 구성 매개 변수Escape_string_warningandbackslash_quote문자열의 백 슬래시 처리를 통제합니다 상수. |
코드 0이있는 문자는 토토 캔에있을 수 없습니다. 끊임없는.
토토 캔도 지원합니다 허용하는 문자열에 대한 또 다른 유형의 탈출 구문 코드 포인트별로 임의의 유니 코드 문자를 지정합니다. 에이 유니 코드 탈출 문자열 상수는로 시작합니다.u &(상단 또는 소문자 u가 따랐습니다 Ampersand에 의해) 오프닝 견적 직전에 예를 들어 사이의 모든 공간u & 'foo'. (이것은 an을 만듭니다 연산자와의 모호성&. 이 문제를 피하기 위해 운영자 주변의 공간을 사용하십시오.) 내부 따옴표, 유니 코드 문자는 이스케이프에 지정 될 수 있습니다 백 슬래시를 쓰고 네 자리를 작성하여 양식 16 진 코드 포인트 번호 또는 대안으로 백 슬래시 그 다음에 플러스 표지판에 이어 6 자리 헥사드가 뒤 따릅니다. 코드 포인트 번호. 예를 들어, 문자열'데이터'|
U & 'D \ 0061T \ +000061'
다음 덜 사소한 예는 러시아어를 씁니다"Slon"(코끼리) 키릴 릭 편지 :
U & '\ 0441 \ 043B \ 043E \ 043D'
백 슬래시와 다른 탈출 문자가 필요하다면, 를 사용하여 지정할 수 있습니다.UESCAPE토토 캔 이후 조항 예:
U & 'D! 0061T! +000061'UESCAPE '!'
이스케이프 캐릭터는 단일 캐릭터가 될 수 있습니다 16 진수 숫자, 플러스 부호, 단일 인용문, 이중 견적 또는 공백 문자.
유니 코드 탈출 구문은 서버시에만 작동합니다 인코딩은UTF8. 다른 서버 인코딩은 ASCII 범위의 코드 포인트 만 사용됩니다 (UP 에게\ 007f)를 지정할 수 있습니다. 둘 다 4 자리 및 6 자리 양식은 UTF-16을 지정하는 데 사용될 수 있습니다. 코드 포인트가 더 큰 문자를 구성하는 대리 쌍 6 자리 형태의 가용성이지만 U+FFFF보다 기술적으로 이것을 불필요하게 만듭니다. (대리 쌍이있을 때 서버 인코딩이있을 때 사용UTF8, 그들은 먼저 단일로 결합됩니다 그런 다음 UTF-8에서 인코딩 된 코드 포인트.)
또한 문자열 상수에 대한 유니 코드 탈출 구문 구성 매개 변수가 작동 할 때 작동합니다.Standard_Conforming_strings가 켜져 있습니다. 이건 때문입니다 그렇지 않으면이 구문은 구문 분석하는 고객을 혼동 할 수 있습니다 SQL로 이어질 수 있다는 점에 대한 SQL 문 주사 및 유사한 보안 문제. 매개 변수가있는 경우 꺼짐으로 설정하면이 구문은 오류로 거부됩니다. 메시지.
문자 그대로 토토 캔에 탈출 문자를 포함 시키려면 두 번 쓰십시오.
문자열 상수를 지정하기위한 표준 구문 일반적으로 편리하고 언제 이해하기 어려울 수 있습니다. 원하는 문자열에는 많은 단일 따옴표가 포함되어 있습니다 각각은 배가가되어야합니다. 허용합니다 그러한 상황에서 더 읽기 쉬운 쿼리,토토 캔다른 방법을 제공합니다."달러 인용", 문자열을 씁니다 상수. 1 달러 규모의 문자열 상수는 a로 구성됩니다 달러 표시 ($), 선택 사항"tag"32047_32333"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 $는 달러 인용을 나타냅니다 문자 그대로[\ t \ r \ n \ v \\]기능 본체가에 의해 실행될 때 인식됩니다토토 캔. 그러나 이후 시퀀스는 Delimiter를 인용하는 외부 달러와 일치하지 않습니다$ function $, 그것은 조금 더 있습니다 외부 줄이 관심 있는.
1 달러 규모의 문자열의 태그가 할 수 없다는 점을 제외하고 인용되지 않은 식별자와 동일한 규칙 달러 표시를 포함합니다. 태그는 사례에 민감하므로$ tag $ string 컨텐츠 $ tag $정확하지만$ tag $ string 컨텐츠 $ tag $is.
키워드를 따르는 달러 인용 문자열 식별자는 공백으로 분리되어야합니다. 그렇지 않으면 Delimiter를 인용하는 달러는 선행 식별자.
Dollar Quoting은 SQL 표준의 일부가 아니지만 종종 복잡한 문자열을 작성하는보다 편리한 방법입니다 표준 호환 단일 견적 구문보다 리터럴. 그것 문자열 상수를 나타낼 때 특히 유용합니다 다른 상수 내부에서는 절차에 종종 필요합니다 기능 정의. 단일 쿼트 구문으로 각각 위의 예에서 Backslash는 다음과 같이 작성해야합니다. 4 개의 백 슬래시 원래 문자열을 구문 분석 할 때 내부 문자열 상수는 기능 중에 다시 파열됩니다 실행.
비트 스트링 상수는 일반 문자열 상수처럼 보입니다 A와 함께B(위 또는 소문자) 오프닝 견적 직전 (개입 없음 Whitespace), 예 :B'1001 '. 유일한 비트 스트링 상수 내에서 허용되는 문자0and1.
또는 비트 스트링 상수를 지정할 수 있습니다 선두를 사용하는 16 진전 표기법x(위 또는 소문자), 예 :x'1ff '. 이 표기법은 a와 같습니다 각각 4 개의 이진 숫자로 비트 스트링 상수 16 진수 숫자.
비트 스트링 상수의 두 가지 형태를 계속 진행할 수 있습니다 일반 문자열 상수와 같은 방식으로 선. 달러 인용문은 비트 스트링 상수에서 사용할 수 없습니다.
숫자 상수는 이러한 일반적인 형태로 허용됩니다.
Digits Digits. [Digits] [E [+-]Digits] [Digits].Digits[e [+-]Digits]숫자E [+-]Digits
여기서Digits하나 또는 더 많은 소수점 숫자 (0-9). 적어도 하나의 숫자가 있어야합니다 소수점 전후에 사용되는 경우. 적어도 한 자리는 지수 마커를 따라야합니다 (e), 하나가있는 경우. 아무것도 없습니다 상수에 내장 된 공백 또는 기타 문자. 메모 선행 플러스 또는 마이너스 부호가 실제로 상수의 일부로 간주됩니다. 적용되는 운영자입니다 상수.
유효한 숫자 상수의 일부 예입니다.
42
3.5
4.
.001
5E2
1.925E-3
소수점을 포함하지 않는 숫자 상수 또한 지수는 처음에 유형으로 추정됩니다정수값이 유형에 맞는 경우정수(32 비트); 그렇지 않으면 그것은 추정됩니다 유형bigint값이 유형에 맞는 경우bigint(64 비트); 그렇지 않으면 복용됩니다 유형숫자. 상수 소수점 및/또는 지수는 항상 초기에 포함됩니다 유형으로 추정숫자.
숫자 상수의 초기에 할당 된 데이터 유형은 IS 유형 해상도 알고리즘의 시작점입니다. ~ 안에 대부분의 경우 상수는 자동으로 강요됩니다. 컨텍스트에 따라 가장 적절한 유형. 필요한 경우 숫자 값을 구체적으로 해석하도록 강요 할 수 있습니다. 캐스팅하여 데이터 유형. 예를 들어, 숫자를 강제 할 수 있습니다 유형으로 취급 될 값Real(float4) 서면으로 :
Real '1.23' - 문자열 스타일 1.23 :: Real -Postgresql (역사적) 스타일
실제로 장군의 특별한 경우입니다 다음에 논의 된 캐스팅 표기법.
an의 상수임의의유형을 입력 할 수 있습니다 다음 표기법 중 하나 사용 :
타입'String' 'String'::타입캐스트 ( 'String' 처럼타입)
문자열 상수의 텍스트가 입력으로 전달됩니다 유형에 대한 변환 루틴타입. 결과는 상수입니다 표시된 유형. 명시 적 유형 캐스트는 다음에 생략 할 수 있습니다 상수 유형에 대한 모호성은 없습니다. (예를 들어, 테이블에 직접 할당 될 때 열),이 경우 자동으로 강요됩니다.
문자열 상수는 정기적으로 어느 쪽이든 작성할 수 있습니다 SQL 표기법 또는 달러 인용.
함수와 같은 구문 :
typename( 'String' )
그러나 모든 유형 이름을 이러한 방식으로 사용할 수있는 것은 아닙니다. 보다섹션 4.2.9자세한 내용.
the::, cast ()및 함수 콜 구문도 가능합니다 임의의 런 타임 유형 변환을 지정하는 데 사용됩니다 표현,섹션 4.2.9. 구문 모호성을 피하기 위해타입'String'구문 만 사용될 수 있습니다 간단한 문자 상수의 유형을 지정하십시오. 또 다른 에 대한 제한타입'String'구문은 그렇지 않다는 것입니다 배열 유형에 대한 작업; 사용::또는cast ()an의 유형을 지정합니다 배열 상수.
thecast ()구문을 준수합니다 SQL. 그만큼타입'String'구문은 일반화입니다 표준 : SQL 은이 구문을 몇 명에 대해서만 지정합니다. 데이터 유형이지만토토 캔모든 유형에 대해 허용합니다. 의 구문::역사적토토 캔사용 가능 함수 콜 구문.
운영자 이름은 최대의 시퀀스입니다.paminatalen-1 (기본적으로 63) 문자 다음 목록 :
+-*/< = ~! @#%^& | `?
거기 그러나 운영자 이름에 대한 몇 가지 제한 사항입니다.--및/*연산자의 어느 곳에서나 나타날 수 없습니다 이름, 그들은 논평.
다중 문자 운영자 이름은 끝날 수 없습니다+또는-, 이름 에도이 중 하나 이상이 포함되지 않는 한 캐릭터 :
~! @#%^& | `?
for 예,@-허용 연산자입니다 이름, 그러나*-그렇지 않습니다. 이것 제한 허용토토 캔SQL 준수를 구문 분석합니다 토큰 사이의 공간이 필요없는 쿼리.비 SQL 표준 운영자 이름으로 작업 할 때는 그렇습니다 일반적으로 인접한 연산자와 공간을 분리해야합니다 모호성을 피하십시오. 예를 들어, 왼쪽 단체를 정의한 경우 운영자 이름@, 쓸 수 없어x*@y; 당신은 작성해야합니다x* @y토토 캔두 개의 연산자 이름으로 읽습니다 하나가 아닙니다.
영숫자가 아닌 일부 문자는 특별합니다 연산자와는 다른 의미입니다. 에 대한 세부 사항 사용법은 각각의 위치에서 찾을 수 있습니다. 구문 요소가 설명되어 있습니다. 이 섹션은 조언하기 위해서만 존재합니다 이들의 존재와 요약 캐릭터.
달러 표시 ($) 다음 숫자는 위치 매개 변수를 나타내는 데 사용됩니다. 함수 정의 또는 준비된 진술의 본문. ~ 안에 다른 상황은 달러 표시가 식별자의 일부가 될 수 있습니다. 또는 1 달러 규모의 문자열 상수.
괄호 (()) 그룹 표현과 우선 순위 시행에 대한 일반적인 의미. 경우에 따라 고정 된 것의 일부로 괄호가 필요합니다. 특정 SQL 명령의 구문.
브래킷 ([])는 익숙합니다 배열의 요소를 선택하십시오. 보다섹션 8.14자세한 내용은 배열.
쉼표 (,)는 일부에서 사용됩니다 a의 요소를 분리하기위한 구문 구성 목록.
세미콜론 (;) 종료 an SQL 명령. 명령 내에서 어디에도 나타날 수 없습니다. 문자열 상수 또는 인용 식별자를 제외하고.
콜론 (:)) 선택에 사용됩니다"슬라이스"배열에서. (보다PostgreSQL : 문서 : 9.0 : 토토.) 특정 SQL에서 방언 (예 : 내장 SQL), 결장은 접두사 변수 이름.
별표 (*)가 사용됩니다 테이블 행의 모든 필드를 나타내는 일부 컨텍스트 또는 복합 가치. 또한 사용될 때 특별한 의미가 있습니다 골재 기능의 인수, 즉 집계는 명시적인 매개 변수가 필요하지 않습니다.
기간 (.)가 사용됩니다 숫자 상수 및 스키마, 테이블 및 열 이름.
댓글은 더블로 시작하는 일련의 문자입니다. 대시 및 줄의 끝까지 확장 (예 :
- 이것은 표준 SQL 주석입니다.
또는 C 스타일 블록 댓글을 사용할 수 있습니다 :
/* 멀티 린 댓글 * 중첩 : / * 중첩 블록 주석 * / */
주석이 시작되는 곳/*그리고 일치하는 발생으로 확장*/. 이 블록 주석은 지정된대로 둥지입니다 SQL 표준이지만 C와 달리 댓글을 달 수 있습니다. 기존 블록을 포함 할 수있는 더 큰 코드 블록 댓글.
추가 전에 입력 스트림에서 주석이 제거됩니다. 구문 분석 및 효과적으로 공백으로 대체됩니다.
테이블 4-2운영자의 우선 순위와 연관성을 보여줍니다 안에토토 캔. 대부분의 운영자 우선 순위가 동일하고 좌회전 적입니다. 그만큼 운영자의 우선 순위와 연관성은 유용합니다 파서로. 이것은 비 직관적 행동으로 이어질 수 있습니다. ~을 위한 부울 연산자 예<및와 다른 우선 순위가 있습니다 부울 운영자<=and =. 또한 때때로 필요할 것입니다 이진과 단시의 조합을 사용할 때 괄호를 추가하려면 운영자. 예를 들어:
5를 선택하십시오! -6;
:로 구문 분석됩니다.
5를 선택하십시오! (-6);
파서가 너무 늦을 때까지 파서가 전혀 모르기 때문에!는 Postfix 연산자로 정의됩니다 디스 픽스 하나. 이 경우 원하는 동작을 얻으려면, 당신은 당신입니다 필기해야합니다 :
select (5!) -6;
이것은 확장 성을 위해 지불하는 가격입니다.
표 4-2. 연산자 우선 순위 (감소)
연산자/요소 | 연관성 | 설명 |
---|---|---|
. | 왼쪽 | 테이블/열 이름 분리기 |
:: | 왼쪽 | 토토 캔-스타일 typecast |
[ ] | 왼쪽 | 배열 요소 선택 |
- | 오른쪽 | unery 마이너스 |
^ | 왼쪽 | 지수 |
* / % | 왼쪽 | 곱셈, 분할, 모듈로 |
+ - | 왼쪽 | 추가, 뺄셈 |
is | 진실, 거짓, IS 알려지지 않은, is null | |
isnull | null 테스트 | |
notnull | 널 테스트 | |
(다른) | 왼쪽 | 다른 모든 기본 및 사용자 정의 연산자 |
in | 멤버십 설정 | |
사이 | 범위 격리 | |
오버랩 | 시간 간격 중복 | |
좋아요 ilike 유사한 | 토토 캔 패턴 매칭 | |
< | 보다 | |
= | 오른쪽 | 평등, 과제 |
not | 오른쪽 | 논리적 부정 |
및 | 왼쪽 | 논리적 연결 |
또는 | 왼쪽 | 논리적 분리 |
운영자 우선권 규칙도 적용됩니다 내장 이름과 동일한 이름을 가진 사용자 정의 연산자 위에서 언급 한 운영자. 예를 들어, A를 정의하는 경우"+"일부 사용자 정의 데이터에 대한 연산자 유형은 내장과 동일한 우선 순위를 갖습니다"+"운영자, 당신의 내용에 상관없이 하다.
스키마 자격 운영자 이름이 사용되는 경우운영자구문 안에:
3 연산자 (PG_CATALOG.+) 4; 선택
the운영자구성이 가져옵니다 에 기본 우선 순위가 표시됩니다.표 4-2for"다른"운영자. 이것은 어떤 특정 연산자가 내부에 나타나더라도OPERATOR ().