이 문서는 지원되지 않는 버전의 토토 사이트 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다Postgre배트맨 토토 : 문서 : 17 : 4 장 배트맨 토토 구문버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

1 장. SQL 통사론

이 장에서는 SQL의 토토 사이트을 설명합니다.

1.1. 어휘 구조

SQL 입력은 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다 의토큰, 세미콜론에 의해 종료되었습니다 (";"). 입력 스트림의 끝 또한 명령을 종료합니다. 어떤 토큰이 유효한 지에 따라 다릅니다 특정 명령의 구문.

토큰이 될 수 있습니다키워드, an식별자, a인용 식별자, aLiteral(또는 상수) 또는 특수 캐릭터 상징. 토큰은 일반적으로 공백으로 분리됩니다 (공간, 탭, Newline)이지만 모호성이없는 경우 ( 특수 캐릭터가 인접한 경우에만 해당됩니다. 다른 토큰 유형에).

추가로,댓글SQL 입력. 그들은 토큰이 아니며 효과적으로 동등합니다 공백에.

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

선택 *에서 my_table;
my_table set a = 5 업데이트;
my_table 값에 삽입 (3, 'hi there');

이것은 한 줄 당 1 개의 명령 순서입니다. (이것은 필요하지는 않지만; 둘 이상의 명령이 될 수 있습니다. 한 줄로, 명령은 유용하게 분할 될 수 있습니다. 윤곽).

SQL 구문은 어떤 토큰에 대해서는 그다지 일관되지 않습니다. 명령을 식별하고 피연산자 또는 매개 변수입니다. 그만큼 처음 몇 개의 토큰은 일반적으로 명령 이름이므로 위의 예를 들어 우리는 일반적으로에 대해 말할 것입니다."선택", an"업데이트"및 an"삽입"명령. 그러나 예를 들어업데이트명령은 항상 필요합니다SET특정 위치에 나타나는 토큰 이 특별한 변형의삽입또한 a 필요완벽한. 각 명령에 대한 정확한 구문 규칙은 다음과 같습니다 설명참조 설명서.

1.1.1. 식별자 및 키 단어

select, 업데이트또는위의 예는의 예입니다.키워드, 즉 단어 SQL 언어의 고정 된 의미. 토큰my_tableanda의 예식별자. 그들 테이블, 열 또는 기타 데이터베이스 개체의 이름을 식별하고 그들이 사용하는 명령에 따라 때때로 단순히"이름". 핵심 단어와 식별자는 동일한 어휘 구조를 가지고 있으며 토큰이 식별자인지 알 수 없다는 의미 또는 언어를 알지 못하는 핵심 단어. 전체 목록 핵심 단어를 찾을 수 있습니다부록 B.

SQL 식별자 및 키워드는 편지로 시작해야합니다. (a-Z, 그러나 또한 명성적인 자국과 비 라틴 문자가있는 문자) 또는 밑줄 (_). 후속 식별자 또는 키워드의 문자는 문자 일 수 있습니다. 숫자 (0-916255_16399

시스템은 이상을 사용하지 않습니다.지명-1 식별자의 문자; 더 긴 이름은 명령으로 작성할 수 있지만 잘린. 기본적으로지명IS 32 따라서 최대 식별자 길이는 31입니다 (그러나 당시에는 시스템이 구축되었습니다.paminatalencan 변경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, fooand"foo"토토 사이트그러나"foo"and"foo"are 이 세 가지와 서로 다릅니다.[1]

1.1.2. 상수

4 가지 종류의암시 적으로 유형 된 상수in토토 사이트: 문자열, 비트 문자열, 정수 및 부동 소수점 번호. 상수도 가능합니다 더 정확한 유형으로 지정되며보다 정확하게 가능합니다 시스템에 의한 표현 및보다 효율적인 처리. 그만큼 암시 적 상수는 아래에 설명되어있다. 명백한 상수 나중에 논의됩니다.

1.1.2.1. 끈 상수

문자열 상수 SQL은 임의의 문자 순서입니다 단일 따옴표 (" '"), 예 :'이것은 문자열입니다'. SQL은 허용됩니다 두 개를 입력하여 문자열에 내장 할 단일 따옴표 인접한 단일 따옴표 (예 :'Dianne' 's Horse'). 안에토토 사이트단일 따옴표 5 월 또는 Backslash (로 탈출해야합니다."\", 예 :'Dianne \'s 말').

C 스타일의 백 슬래시 탈출도 사용할 수 있습니다 :\ b백 스페이스,\ f양식 피드입니다.\ n\ r운송 반환,\ t탭입니다. 그리고\xxx, 여기서xxx는 8 월 번호입니다 해당 ASCII 코드를 가진 문자. 다른 것 백 슬래시를 따르는 캐릭터는 문자 그대로 취합니다. 따라서, 문자열 상수에 백 슬래시를 포함 시키려면 2 형 백 슬래시.

코드 0이있는 문자는 문자열에있을 수 없습니다. 끊임없는.

두 개의 문자열 상수에 의해서만 분리됩니다 공백적어도 One Newline는 연결되고 효과적으로 처리됩니다 마치 문자열이 하나의 상수로 작성된 것처럼. 을 위한 예:

'foo'선택
'술집';

'foobar'를 선택하십시오;

그러나

'foo' 'bar'를 선택하십시오.

유효한 토토 사이트이 아니며토토 사이트SQL9X관심.

1.1.2.2. 비트 스트링 상수

비트 스트링 상수는 문자열 상수처럼 보입니다B​​(위 또는 소문자) 오프닝 견적 직전 (개입 없음 Whitespace), 예 :B'1001 '. 그만큼 비트 스트링 상수 내에서 허용되는 문자 만0and1. 비트 스트링 상수는 라인에서 계속 될 수 있습니다 일반 문자열 상수와 마찬가지로.

1.1.2.3. 정수 상수

22929_23148Integer타입 -2147483648에서 +2147483647 범위의 값을 허용합니다. (옵션 플러스 또는 마이너스 부호는 실제로 별도입니다. 정수 상수의 일부가 아닌 단체 운영자.)

1.1.2.4. 부동 소수점 상수

플로팅 포인트 상수 가이 일반에서 허용됩니다 양식 :

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

여기서Digits하나 또는 더 소수점 자리. 적어도 하나의 숫자는 이전 또는 전이어야합니다 소수점 후. 적어도 하나의 숫자는 다음을 따라야합니다 지수 분리기 (​​E) 필드가 있습니다. 따라서 부동 소수점 상수는입니다 존재에 의해 정수 상수와 구별됩니다 소수점 또는 지수 절 (또는 둘 다). 공간이나 다른 캐릭터가 포함되어 있지 않아야합니다. 상수.

이것은 유효한 플로팅 포인트의 일부 예입니다 상수 :

3.5
4.
.001
5E2
1.925E-3

플로팅 포인트 상수는 유형입니다이중 정밀. Real사용하여 명시 적으로 지정할 수 있습니다SQL문자열 표기법 또는토토 사이트유형 표기법 :

Real '1.23' - 문자열 스타일
'1.23':: Real- Postgresql (역사적) 스타일

1.1.2.5. 상수 기타 유형

상수의 상수임의의유형을 입력 할 수 있습니다 다음 표기법 중 하나 사용 :

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

문자열의 텍스트는 입력 변환으로 전달됩니다 라는 유형의 루틴타입. 결과는 상수입니다 표시된 유형. 명시 적 유형 캐스트는 IF를 생략 할 수 있습니다 상수 유형에 대한 모호성은 없습니다. (예를 들어, 논쟁으로 전달 될 때 비 중점 기능),이 경우 자동으로입니다 강제.

함수와 같은 토토 사이트 :

typename( 'String' )

그러나 모든 유형 이름이 이러한 방식으로 사용될 수는 없습니다. 보다섹션 1.3.6자세한 내용.

the::, cast ()및 함수 용액 구문도 할 수 있습니다 임의의 런타임 유형 변환을 지정하는 데 사용됩니다 표현,섹션 1.3.6. 하지만 양식타입'String' 지정하는 데만 사용될 수 있습니다 문자 그대로 상수의 유형. 또 다른 제한타입'String' 작동하지 않는 것입니다 배열 유형; 사용::또는cast ()배열의 유형을 지정합니다 끊임없는.

1.1.2.6. 배열 상수

배열 상수의 일반적인 형식은 다음과 같습니다 수행원:

'val1 delim val2 delim... '

여기서delimis 그 유형의 구분자 문자, 그 유형에 기록 된대로pg_type입력. (모든 내장 유형, 이것은 쉼표 문자입니다",".) 각val는 상수입니다 배열 요소 유형 또는 서브 어레이. An의 예 배열 상수는

'1,2,3, 4,5,6, 7,8,9'

이 상수는 2 차원 3 x 3 어레이입니다 정수의 세 가지 하위 배열로 구성됩니다.

개별 배열 요소는 그 사이에 배치 할 수 있습니다 이중 인용 점수 (") 피하기 공백과 관련된 모호성 문제. 없이 견적 마크, 배열 값 파서는 선두를 건너 뛸 것입니다 공백.

(배열 상수는 실제로 특별한 경우 일뿐입니다. 이전 섹션에서 논의 된 일반 유형 상수. 상수는 처음에 끈으로 취급되어 배열 입력 변환 루틴. 명시 적 유형 사양이 필요할 수 있습니다.)

1.1.3. 연산자

연산자는 최대의 시퀀스입니다.지명 된 ATALEN-1 (기본적으로 31) 문자 다음 목록 :

+-*/< = ~! @#%^& | `? $

거기 그러나 운영자 이름에 대한 몇 가지 제한 사항입니다.
  • $(달러)는 a 단일 문자 연산자이지만 a의 일부일 수 있습니다 다중 문자 운영자 이름.

  • --/*연산자의 어느 곳에서나 나타날 수 없습니다 이름, 그들은 논평.

  • 다중 문자 운영자 이름은 끝날 수 없습니다+또는-, 이름 에도이 중 하나 이상이 포함되지 않는 한 캐릭터 :

    ~! @#%^& | `? $

    예,@-허용됩니다 운영자 이름이지만*-그렇지 않습니다. 이 제한은 허용토토 사이트SQL 준수를 구문 분석합니다 토큰 사이의 공간이 필요없는 쿼리.

비 SQL 표준 운영자 이름으로 작업 할 때, 당신 일반적으로 인접한 연산자와 공간을 분리해야합니다 모호성을 피하기 위해. 예를 들어, 왼쪽을 정의한 경우 단술 조작자 명명@, 당신은 할 수 없습니다 쓰다x*@y; 당신은 작성해야합니다x* @y토토 사이트두 개의 연산자로 읽습니다 이름이 아닙니다.

1.1.4. 특수 문자

영숫자가 아닌 일부 캐릭터에는 특별한 것이 있습니다 연산자와는 다른 의미입니다. 에 대한 세부 사항 사용법은 각각의 위치에서 찾을 수 있습니다. 토토 사이트 요소가 설명되어 있습니다. 이 섹션은 만 존재합니다 존재를 조언하고 이것의 목적을 요약하십시오 캐릭터.

  • 달러 표시 ($) 다음 숫자는 위치 매개 변수를 나타내는 데 사용됩니다 함수 정의의 본문. 다른 맥락에서 달러 표시는 운영자 이름의 일부일 수 있습니다.

  • 괄호 (()) 그룹 표현과 집행에 대한 일반적인 의미 상위. 어떤 경우에는 괄호가 필요합니다 특정 SQL 명령의 고정 구문의 일부.

  • 브래킷 ([])는 익숙합니다 배열의 요소를 선택하십시오. 보다6 장자세한 내용은 배열.

  • 쉼표 (,)는 일부에서 사용됩니다 a의 요소를 분리하기위한 토토 사이트 구성 목록.

  • 세미콜론 (;) 종료됩니다 SQL 명령. a 안에있는 곳에는 나타날 수 없습니다 문자열 상수 또는 인용을 제외하고 명령 식별자.

  • 콜론 (:)는 익숙합니다 선택하다"슬라이스"배열에서. (보다스포츠 토토 결과 PostgreSQL : 문서 : 7.2 : 어레이.) 특정 SQL에서 방언 (예 : 내장 SQL), 결장은 접두사 변수 이름.

  • 별표 (*)가 있습니다 에서 사용될 때 특별한 의미select명령 또는count집계 기능.

  • 기간 (.)가 사용됩니다 부동 소수점 상수 및 분리 테이블 및 열 이름.

1.1.5. 의견

댓글은 임의의 문자 순서입니다 이중 대시와 라인 끝까지 연장되면 예 :

- 이것은 표준 SQL92 댓글입니다

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

/* 멀티 린 댓글
 * 중첩 : / * 중첩 블록 주석 * /
 */

주석이 시작되는 곳/*그리고 일치하는 발생으로 확장*/. 이 블록 주석은 지정된대로 둥지입니다 SQL99이지만 C와 달리 더 큰 블록을 주석 할 수 있습니다. 기존 블록 댓글을 포함 할 수있는 코드.

추가 전에 입력 스트림에서 주석이 제거됩니다. 토토 사이트 분석 및 효과적으로 대체됩니다 공백.

노트

[1]

인용되지 않은 이름을 소문자로 접는토토 사이트호환되지 않습니다 SQL 표준을 사용하여 인용되지 않은 이름은 대문자로 접 힙니다. 따라서,foo와 동일해야합니다"foo"not"foo"표준에 따라. 만약에 당신은 당신이 조언하는 휴대용 응용 프로그램을 작성하고 싶습니다. 항상 특정 이름을 인용하거나 인용하지 마십시오.