Postgre토토 베이 8.0.26 문서 | ||||
---|---|---|---|---|
토토 커뮤니티 : 문서 : 8.0 : SQL 언어 | 빠른 뒤로 | 빠른 전달 | 다음 |
이 장에서는 토토 베이의 구문을 설명합니다. 그것은 형성된다 다음 장을 이해하기위한 재단 토토 베이 명령이 정의 및 데이터 수정.
우리는 또한 이미 토토 베이에 익숙한 사용자에게 읽을 권고합니다. 이 장은 여러 규칙이 있기 때문에 신중하게 토토 베이 데이터베이스 중에서 일관되지 않은 개념 또는에 따라Postgre토토 베이.
토토 베이 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다 의토큰, 세미콜론에 의해 종료되었습니다 (";"). 입력 스트림의 끝 또한 명령을 종료합니다. 어떤 토큰이 유효한 지에 따라 다릅니다 특정 명령의 구문.
토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, a리터럴(또는 상수) 또는 특수 캐릭터 상징. 토큰은 일반적으로 공백으로 분리됩니다 (공간, 탭, Newline)이지만 모호성이없는 경우 ( 특수 캐릭터가 인접한 경우에만 해당됩니다. 다른 토큰 유형에).
추가로댓글가 발생할 수 있습니다 토토 베이 입력. 그들은 토큰이 아니며 효과적으로 동등합니다 공백에.
예를 들어, 다음은 (구문 적으로) 유효한 토토 베이입니다 입력:
my_table에서 선택 *; my_table set a = 5 업데이트; my_table 값에 삽입 (3, 'hi there');
이것은 한 줄에 하나씩 세 가지 명령의 순서입니다. 이것은 필요하지 않습니다. 둘 이상의 명령이 줄에있을 수 있습니다. 그리고 명령은 유용하게 선을 가로 질러 분할 될 수 있습니다).
토토 베이 구문은 어떤 토큰에 대해서는 그다지 일관되지 않습니다. 명령을 식별하고 피연산자 또는 매개 변수입니다. 그만큼 처음 몇 개의 토큰은 일반적으로 명령 이름이므로 위의 예를 들어 우리는 일반적으로에 대해 말할 것입니다."선택", an"업데이트"및 an"삽입"명령. 그러나 예를 들어업데이트명령은 항상 필요합니다SET토큰이 특정에 나타납니다 위치 및이 특별한 변형의삽입a도 필요합니다.값완료되기 위해. 정확한 구문 각 명령에 대한 규칙은에 설명되어 있습니다.Part VI.
select, 업데이트또는값위의 예는의 예입니다.키 단어, 즉, 고정 된 의미가있는 단어 토토 베이 언어. 토큰my_tableanda의 예식별자. 그들은 테이블의 이름을 식별하고 명령에 따라 열 또는 기타 데이터베이스 개체 그들은 사용됩니다. 따라서 때로는 단순히라고 불립니다."이름". 핵심 단어 및 식별자 동일한 어휘 구조를 가지고 있습니다. 즉, 알 수 없습니다. 토큰이 식별자인지 또는 핵심 단어가 없는지 언어를 알고 있습니다. 핵심 단어의 전체 목록이 될 수 있습니다 에서 발견스포츠 토토 PostgreSQL.
토토 베이 식별자 및 키워드는 편지로 시작해야합니다. (a-Z그러나 또한 명성적인 자국과 비 라틴 문자가있는 문자) 또는 밑줄 (_). 후속 식별자 또는 키워드의 문자는 문자 일 수 있습니다. 밑줄, 숫자 (0-9) 또는 달러 표시 ($). 달러 표시는 허용되지 않습니다 토토 베이 표준의 편지에 따른 식별자 그들의 사용은 응용 프로그램을 휴대용 덜 휴대용으로 만들 수 있습니다. 토토 베이 표준은 숫자가 포함 된 핵심 단어를 정의하지 않습니다. 밑줄로 시작하거나 종료하므로 이것의 식별자 형태는 미래와의 충돌 가능성에 대해 안전합니다 표준 확장.
시스템은 no를 사용합니다 이상지명-1 문자 식별자; 더 긴 이름은 명령으로 작성할 수 있지만 그들은 잘릴 것입니다. 기본적으로paminatalen는 64이므로 최대 식별자입니다 길이는 63입니다.이 한계가 문제가되면 제기 될 수 있습니다. 를 변경하여paminatalen상수 안에src/include/postgres_ext.h.
my_table set a = 5; 업데이트
동등하게 칭찬 할 수 있습니다
my_table set a = 5; 업데이트
자주 사용되는 협약은 상단에 핵심 단어를 작성하는 것입니다. 소문자의 사례 및 이름 (예 :
my_table set a = 5; 업데이트
두 번째 종류가 있습니다 식별자 :구분 식별자또는인용 식별자. 그것은 임의의 캐릭터 순서를 둘러싸고 형성됩니다. 이중 인용문 ("). 구분 식별자는 항상 식별자이며 결코 키 단어가 아닙니다. 그래서"선택"a를 참조하는 데 사용될 수 있습니다 열 또는 테이블이라는 열"선택", 인용되지 않은 반면select키 단어로 취해서 구문 분석 오류가 발생합니다. 테이블 또는 열 이름이 예상되는 곳에서 사용하면 그만큼 예제는 다음과 같은 인용 된 식별자로 작성할 수 있습니다.
업데이트 "my_table"set "a"= 5;
견적 된 식별자는 a 이외의 다른 문자를 포함 할 수 있습니다 이중 인용 자체. (이중 인용문을 포함하려면 두 가지를 쓰십시오 이중 따옴표.) 이것은 테이블이나 열을 만들 수 있습니다 그렇지 않으면 불가능한 이름과 같이 공간 또는 앰퍼 샌드를 포함합니다. 여전히 길이 제한 적용.
식별자 인용은 또한 대소 문자에 민감하게 만듭니다. 인용되지 않은 이름은 항상 소문자로 접 힙니다. 을 위한 예, 식별자foo, foo및"foo"postgre토토 베이그러나"foo"and"foo"이 세 가지와 서로 다릅니다. (접는 로어 케이스에 대한 인용되지 않은 이름Postgre토토 베이토토 베이과 호환되지 않습니다 표준, 인용되지 않은 이름을 접어야한다고 말합니다. 대문자. 따라서,foo동등한"foo"not"foo"표준에 따라. 원한다면 휴대용 응용 프로그램을 작성하려면 항상 권장됩니다 특정 이름을 인용하거나 인용하지 마십시오.)
세 종류의암시 적으로 유형 된 상수inPostgre토토 베이: 문자열, 비트 줄 및 숫자. 상수는 명시 적 유형으로 지정할 수도 있습니다. 보다 정확한 표현 등을 가능하게 할 수 있습니다 시스템에 의한 효율적인 처리. 이러한 대안은 다음과 같습니다 다음 하위 섹션에서 논의 됨
문자열 상수 토토 베이은 임의의 문자 순서입니다 단일 따옴표 ('), 예를 들어'이것은 문자열입니다'. 그만큼 단일 쿼트 캐릭터를 작성하는 표준 준수 방법 문자열 상수 내에서 인접한 두 개의 싱글을 작성하는 것입니다. 인용문, 예 :'Dianne' 's Horse'. postgre토토 베이또한 허용됩니다 백 슬래시로 탈출 할 단일 따옴표 (\), 예를 들어 동일한 문자열이 될 수 있습니다 쓴'Dianne \'s Horse '.
다른Postgre토토 베이Extension은 C 스타일의 백 슬래시 탈출이 가능하다는 것입니다 :\ b백 스페이스,\ f양식 피드입니다.\ n는 Newline,입니다.\ r캐리지 리턴입니다.\ t탭입니다. 그리고\xxx, 여기서xxx는 10 대 숫자이며 바이트입니다 해당 코드와 함께. (그것은 당신의 책임입니다 당신이 만든 바이트 시퀀스는 유효한 문자입니다. 서버 문자 세트 인코딩.) 다른 문자 백 슬래시를 따르는 것은 문자 그대로 취합니다. 따라서 포함합니다 문자열 상수의 백 슬래시, 2를 씁니다 백 슬래시.
코드 0이있는 문자는 문자열에있을 수 없습니다. 끊임없는.
분리 된 두 개의 문자열 상수 공백적어도 One Newline는 연결되고 효과적으로 처리됩니다 마치 문자열이 하나의 상수로 작성된 것처럼. 을 위한 예:
'foo'선택 '술집';
'foobar'를 선택하십시오;
하지만
'foo' 'bar'; 선택
유효한 구문이 아닙니다. (이 약간 기괴한 행동입니다 지정토토 베이;Postgre토토 베이표준.)
문자열 지정을위한 표준 구문 상수는 일반적으로 편리하며 어려울 수 있습니다 원하는 문자열에 많은 싱글이 포함 된시기를 이해하십시오 각각은 두 배가되어야하기 때문에 따옴표 또는 백 슬래시. 그러한 상황에서 더 읽기 쉬운 쿼리를 허용하려면Postgre토토 베이제공 다른 방법,"달러 인용 ", 문자열 상수를 작성합니다. 1 달러 인용 문자열 상수는 1 달러 표시로 구성됩니다 ($), 선택 사항"tag"0 개 이상의 문자, 다른 문자 달러 표시, 임의의 캐릭터 순서 문자열 내용, 달러 표시, 같은 태그와 같은 태그 이 달러 견적과 1 달러 표시를 시작했습니다. 예를 들어, 문자열을 지정하는 두 가지 방법은 다음과 같습니다."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 $a 달러에 따른 문자 그대로[\ t \ r \ n \ v \\]기능 본문은에 의해 실행됩니다.Postgre토토 베이. 그러나 시퀀스 이후 Delimiter를 인용하는 외부 달러와 일치하지 않습니다$ function $, 그것은 조금 더 있습니다 외부 줄까지 상수 내의 문자 걱정됩니다.
1 달러 규모의 문자열의 태그는 다음을 따릅니다. 할 수 없다는 점을 제외하고 인용되지 않은 식별자와 동일한 규칙 달러 표시를 포함합니다. 태그는 사례에 민감하므로$ tag $ 문자열 내용 $ tag $IS 정확하지만$ tag $ string 컨텐츠 $ 태그 $is.
키워드를 따르는 달러 인용 문자열 식별자는 공백으로 분리되어야합니다. 그렇지 않으면 Dolimiter를 인용하는 달러는 다음과 같이 받아 들일 것입니다 이전 식별자의 일부.
Dollar Quoting은 토토 베이 표준의 일부가 아니지만 IT 종종 복잡한 문자열을 작성하는 더 편리한 방법입니다. 표준 호환 단일 견적 구문보다 리터럴. 문자열을 나타낼 때 특히 유용합니다 다른 상수 내부의 상수 절차 기능 정의. 단일 쿼트 구문으로 위의 예의 각 백 슬래시는 4 개의 백 슬래시로 작성되어 2로 줄어 듭니다. 원래 문자열 상수를 구문 분석 할 때의 백 슬래시 그런 다음 내부 문자열 상수가 다시 표시 될 때 기능 실행 중.
비트 스트링 상수는 일반 문자열 상수처럼 보입니다 A와 함께B(위 또는 소문자) 오프닝 견적 직전 (개입 없음 Whitespace), 예 :B'1001 '. 그만큼 비트 스트링 상수 내에서 허용되는 문자 만0and1.
또는 비트 스트링 상수를 지정할 수 있습니다 선두를 사용하는 16 진전 표기법x(위 또는 소문자), 예 :x'1ff '. 이 표기법은 a와 같습니다 각각 4 개의 이진 숫자로 비트 스트링 상수 16 진수 숫자.
비트 스트링 상수의 두 가지 형태가 계속 될 수 있습니다 일반 문자열 상수와 같은 방식으로 라인을 가로 질러. 달러 인용구는 비트 스트링 상수에서 사용할 수 없습니다.
숫자 상수는이 일반적인 것으로 허용됩니다 양식 :
숫자 Digits. [숫자] [E [+-]Digits] [숫자].숫자[E [+-]Digits]DigitsE [+-]Digits
여기서Digits하나 또는 더 많은 소수점 숫자 (0-9). 적어도 하나의 숫자가 있어야합니다 소수점 전후에 사용되는 경우. ~에 최소 1 자리는 지수 마커를 따라야합니다 (e), 하나가있는 경우. 아무것도 없을 수 있습니다 상수에 내장 된 공백 또는 기타 문자. 메모 선행 플러스 또는 마이너스 부호가 실제로 상수의 일부로 간주됩니다. 적용되는 연산자입니다 상수에.
유효한 숫자 상수의 일부 예입니다.
42
3.5
4.
.001
5E2
1.925E-3
a 소수점이 아닌 숫자 상수 지수는 처음에 유형으로 추정됩니다정수값이 유형에 맞는 경우정수(32 비트); 그렇지 않으면 그것은 추정됩니다 형성bigint값이 맞는 경우 유형bigint(64 비트); 그렇지 않으면 유형으로 촬영됩니다숫자. 소수점 및/또는 지수를 포함하는 상수 항상 처음에는 유형으로 추정숫자.
숫자 상수의 초기에 할당 된 데이터 유형 유형 해상도의 출발점 일뿐입니다 알고리즘. 대부분의 경우 상수가 될 것입니다 가장 적절한 유형으로 자동 강요됩니다 상황에 따라. 필요한 경우 강제 a 특정 데이터 유형으로 해석 할 숫자 값 캐스팅.예를 들어, 숫자 값을 유형으로 취급하도록 강요 할 수 있습니다Real(float4) 쓰기
Real '1.23' - 문자열 스타일 1.23 :: Real -Postgresql (역사적) 스타일
실제로 장군의 특별한 경우입니다 다음에 논의 된 캐스팅 표기법.
상수의 상수임의의유형을 입력 할 수 있습니다 다음 표기법 중 하나 사용 :
타입'String' 'String'::타입캐스트 ( 'String' 처럼타입)
문자열 상수의 텍스트가 입력으로 전달됩니다 유형에 대한 변환 루틴타입. 결과는 상수입니다 표시된 유형. 명시 적 유형 캐스트는 IF를 생략 할 수 있습니다 상수 유형에 대한 모호성은 없습니다. (예를 들어, 테이블에 직접 할당 될 때 열),이 경우 자동으로 강요됩니다.
문자열 상수는 정기적으로 사용하여 작성할 수 있습니다 토토 베이 표기법 또는 달러 인용.
함수와 같은 구문 :
typename( 'String' )
그러나 모든 유형 이름이 이런 식으로 사용될 수는 없습니다. 보다섹션 4.2.8자세한 내용.
the::, cast ()및 함수 콜 구문도 할 수 있습니다 임의의 런타임 유형 변환을 지정하는 데 사용됩니다 표현,섹션 4.2.8. 하지만 양식타입'String'에만 익숙해 질 수 있습니다 문자 그대로 상수의 유형을 지정하십시오. 또 다른 제한 에타입'String'배열 유형에 대해서는 작동하지 않습니다. 사용::또는cast ()to 배열 상수의 유형을 지정합니다.
운영자 이름은 최대의 시퀀스입니다.지명 된 ATALEN-1 (기본적으로 63) 문자 다음 목록 :
+-*/< = ~! @#%^& | `?
거기 그러나 운영자 이름에 대한 몇 가지 제한 사항입니다.--and/*연산자의 어느 곳에도 나타날 수 없습니다 이름, 그들은 논평.
다중 문자 운영자 이름은 끝날 수 없습니다+또는-, 이름 에도이 중 하나 이상이 포함되지 않는 한 캐릭터 :
~! @#%^& | `?
예,@-허용됩니다 운영자 이름이지만*-그렇지 않습니다. 이 제한은 허용Postgre토토 베이토토 베이 준수를 구문 분석합니다 토큰 사이의 공간이 필요없는 쿼리.비 토토 베이 표준 운영자 이름으로 작업 할 때, 당신 일반적으로 인접한 연산자와 공간을 분리해야합니다 모호성을 피하기 위해. 예를 들어, 왼쪽을 정의한 경우 단술 조작자 명명@, 당신은 할 수 없습니다 쓰다x*@y; 당신은 작성해야합니다x* @yPostgre토토 베이두 개의 연산자로 읽습니다 이름이 아닙니다.
영숫자가 아닌 일부 문자는 특별합니다 연산자와는 다른 의미입니다. 에 대한 세부 사항 사용법은 각각의 위치에서 찾을 수 있습니다. 구문 요소가 설명되어 있습니다. 이 섹션은 만 존재합니다 존재를 조언하고 이것의 목적을 요약하십시오 캐릭터.
달러 표시 ($) 숫자는 위치 매개 변수를 나타내는 데 사용됩니다. 함수 정의 또는 준비된 진술의 본문. ~ 안에 다른 상황은 달러 표시가 식별자 또는 1 달러 규모의 문자열 상수.
괄호 (()) 그룹 표현과 집행에 대한 일반적인 의미 상위. 어떤 경우에는 괄호가 필요합니다 특정 토토 베이 명령의 고정 구문의 일부.
브래킷 ([])는 익숙합니다 배열의 요소를 선택하십시오. 보다섹션 8.10자세한 내용은 배열.
쉼표 (,)는 일부에서 사용됩니다 a의 요소를 분리하기위한 구문 구성 목록.
세미콜론 (;) 종료됩니다 토토 베이 명령. a 안에있는 곳에는 나타날 수 없습니다 문자열 상수 또는 인용을 제외하고 명령 식별자.
콜론 (:)는 익숙합니다 선택하다"슬라이스"배열에서. (보다PostgreSQL : 문서 : 8.0 : 토토 커뮤니티.) 토토 베이 방언 (예 : 임베디드 토토 베이), 결장은 접두사 변수 이름.
별표 (*)가 사용됩니다
테이블 행의 모든 필드를 나타내는 일부 컨텍스트 또는
복합 가치. 또한 사용될 때 특별한 의미가 있습니다
의 주장으로count
집계 기능.
기간 (.)가 사용됩니다 숫자 상수 및 스키마, 테이블 및 열 이름.
댓글은 임의의 문자 순서입니다 이중 대시와 라인 끝까지 연장되면 예 :
- 이것은 표준 토토 베이 주석입니다.
또는 C 스타일 블록 댓글을 사용할 수 있습니다 :
/* 멀티 린 댓글 * 중첩 : / * 중첩 블록 주석 * / */
주석이 시작되는 곳/*그리고 일치하는 발생으로 확장*/. 이 블록 주석은 지정된대로 둥지입니다 토토 베이 표준이지만 C와 달리 댓글을 달 수 있습니다. 기존 블록을 포함 할 수있는 더 큰 코드 블록 댓글.
추가 전에 입력 스트림에서 주석이 제거됩니다. 구문 분석 및 효과적으로 대체됩니다 공백.
테이블 4-1의 우선 순위와 연관성을 보여줍니다 운영자Postgre토토 베이. 대부분의 운영자는 동일한 우선 순위를 가지고 있습니다 좌심 관련성. 의 우선 순위와 연관성 운영자는 파서에 딱딱 해져 있습니다. 이것은 이어질 수 있습니다 비 직관적 행동; 예를 들어 부울 연산자<및와 다른 우선 순위가 있습니다 부울 운영자<=및 =. 또한 때때로 필요할 것입니다 이진의 조합을 사용할 때 괄호를 추가합니다 단독 운영자. 예를 들어
5를 선택하십시오! -6;
|
5를 선택하십시오! (-6);
파서는 전혀 모르기 때문에 - 너무 늦을 때까지 - 저것!Postfix로 정의됩니다 운영자, 디스 픽스가 아닙니다. 원하는 행동을 얻기 위해 이 경우, 당신은 작성해야합니다
select (5!) -6;
이것은 확장 성을 위해 지불하는 가격입니다.
표 4-1. 연산자 우선 순위 (감소)
연산자/요소 | 연관성 | 설명 |
---|---|---|
. | 왼쪽 | 테이블/열 이름 분리기 |
:: | 왼쪽 | Postgre토토 베이-스타일 typecast |
[ ] | 왼쪽 | 배열 요소 선택 |
- | 오른쪽 | Unary 마이너스 |
^ | 왼쪽 | 지수 |
* / % | 왼쪽 | 곱셈, 분할, 모듈로 |
+ - | 왼쪽 | 추가, 뺄셈 |
is | 진실, 거짓, IS 알려지지 않은, is null | |
isnull | null 테스트 | |
NOTNULL | 널 테스트 | |
(다른) | 왼쪽 | 다른 모든 기본 및 사용자 정의 연산자 |
in | 멤버십 설정 | |
사이 | 범위 격리 | |
오버랩 | 시간 간격 겹침 | |
Like ilike 유사한 | 문자열 패턴 매칭 | |
< | | | |
= | 오른쪽 | 평등, 과제 |
not | 오른쪽 | 논리적 부정 |
and | 왼쪽 | 논리적 연결 |
또는 | 왼쪽 | 논리적 분리 |
운영자 우선권 규칙도 적용됩니다 이름과 동일한 이름을 가진 사용자 정의 연산자 위에서 언급 한 내장 작업자. 예를 들어, 당신이 있다면 A 정의"+"일부 운영자 사용자 정의 데이터 유형은 내장"+"운영자, 상관없이 당신의 일.
스키마 자격 연산자 이름이 사용되는 경우운영자구문 안에
3 연산자 선택 (PG_CATALOG.+) 4;
the운영자구성이 취해졌습니다 기본 우선 순위를 표시하려면표 4-1for"다른"연산자. 이것은 사실입니다 어떤 특정 운영자 이름이 내부에 나타나든 상관 없습니다Operator ().
토토 커뮤니티 : 문서 : 8.0 : SQL 언어 | 홈 | 다음 |
토토 베이 언어 | up | 값 표현 |