SQL 입력은 다음의 시퀀스로 구성됩니다.명령. 명령은 시퀀스로 구성됩니다. 의토큰, 세미콜론으로 종료됨 (";"). 입력 스트림의 끝 또한 명령을 종료합니다. 유효한 토큰은 다음에 따라 다릅니다. 특정 명령의 구문.
토큰은 다음과 같습니다.키워드, an식별자, 아인용된 식별자, 아리터럴(또는 상수) 또는 특수 문자 상징. 토큰은 일반적으로 공백(공백, 탭, 줄 바꿈), 그러나 모호함이 없다면 그럴 필요는 없습니다. 일반적으로 특수 문자가 인접한 경우에만 해당됩니다. 다른 토큰 유형으로).
추가로,댓글다음에서 발생할 수 있습니다. SQL 입력. 그것들은 토큰이 아니며 사실상 동일합니다. 공백으로.
예를 들어, 다음은 (구문적으로) 유효한 SQL입니다. 입력:
SELECT * FROM MY_TABLE; 업데이트 MY_TABLE SET A = 5; MY_TABLE 값에 삽입(3, '안녕하세요');
이것은 한 줄에 하나씩 세 가지 명령의 시퀀스입니다. (필수는 아니지만 두 개 이상의 명령을 사용할 수 있습니다. 한 줄에 명령을 유용하게 분할할 수 있습니다. 라인).
SQL 구문은 어떤 토큰에 관해 일관성이 없습니다. 명령과 피연산자 또는 매개변수를 식별합니다. 는 처음 몇 개의 토큰은 일반적으로 명령 이름이므로 위의 예에서 우리는 일반적으로 a"선택", 안"업데이트"그리고"삽입"명령. 그러나 예를 들어업데이트명령에는 항상 다음이 필요합니다.SET토큰이 특정 위치에 나타나며, 이 특별한 변형은삽입또한 가 필요합니다값되기 위해서는 완료. 각 명령의 정확한 구문 규칙은 다음과 같습니다. 에 설명되어 있습니다.참조 매뉴얼.
다음과 같은 토큰선택, 업데이트또는값위의 예에는 다음의 예가 있습니다.키워드, 즉 다음과 같은 단어가 있습니다. SQL 언어의 고정된 의미입니다. 토큰MY_TABLE그리고A은 예식별자. 그들은 테이블, 열 또는 기타 데이터베이스 개체의 이름을 식별합니다. 사용되는 명령에 따라 다릅니다. 따라서 때로는 간단히 호출됨"이름". 키워드와 식별자는 동일한 어휘 구조를 가지고 있으며, 이는 토큰이 식별자인지 여부를 알 수 없음을 의미합니다. 또는 언어를 모르는 핵심 단어. 전체 목록 키워드는 다음에서 찾을 수 있습니다.부록 B.
SQL 식별자와 키워드는 문자로 시작해야 합니다 (a-z하지만 발음 구별 부호가 있는 문자와 라틴 문자가 아닌 문자도 포함) 또는 밑줄(_). 후속 식별자나 키워드의 문자는 문자일 수 있습니다. 숫자(0-9) 또는 밑줄(SQL 표준이지만) 숫자나 시작 또는 시작을 포함하는 키워드를 정의하지 않습니다. 밑줄로 끝납니다.
시스템은 다음 이상을 사용하지 않습니다.NAMEDATALEN-식별자의 문자 1개. 더 긴 이름은 명령으로 작성할 수 있지만 잘렸습니다. 기본적으로,NAMEDATALEN이다 32이므로 최대 식별자 길이는 31입니다(그러나 당시에는 시스템이 구축되었습니다.NAMEDATALEN할 수 있다 에서 갈아입다src/include/postgres_ext.h).
식별자 및 키 단어 이름은 대소문자를 구분합니다. 그러므로
MY_TABLE 세트 A 업데이트 = 5;
다음과 같이 동등하게 쓸 수 있습니다.
업데이트 my_Table Set a = 5;
자주 사용되는 관례는 주요 단어를 대문자로 쓰는 것입니다. 대소문자 및 이름은 소문자로, 예:
UPDATE my_table SET a = 5;
두 번째 종류가 있습니다 식별자: the구분됨 식별자또는인용된 식별자. 임의의 문자 시퀀스를 포함하여 구성됩니다. 큰따옴표("). 구분된 식별자는 항상 식별자이지 키워드가 아닙니다. 그래서"선택"다음을 참조하는 데 사용될 수 있습니다. 이름이 지정된 열 또는 테이블"선택", 반면에 인용되지 않은선택아마도 키워드로 간주되므로 구문 분석 오류가 발생합니다. 테이블이나 열 이름이 필요한 곳에 사용될 때. 는 예는 다음과 같이 인용된 식별자를 사용하여 작성할 수 있습니다.
업데이트 "my_table" SET "a" = 5;
인용된 식별자에는 다음을 제외한 모든 문자가 포함될 수 있습니다. 큰 따옴표 자체. 이를 통해 테이블이나 열을 구성할 수 있습니다. 다른 방법으로는 불가능할 이름(예: 공백이나 앰퍼샌드를 포함합니다. 길이 제한은 여전히 적용됩니다.
식별자를 인용하면 대소문자도 구분됩니다. 따옴표가 없는 이름은 항상 소문자로 접혀집니다. 에 대한 예, 식별자FOO, foo그리고"foo"다음과 같은 것으로 간주됩니다.토토 사이트하지만"푸"그리고"FOO"은 이 세 가지와 서로 다릅니다.[1]
네 가지 종류가 있습니다암시적으로 유형이 지정된 상수에토토 사이트: 문자열, 비트 문자열, 정수 및 부동 소수점 숫자. 상수는 다음과 같을 수도 있습니다. 명시적 유형으로 지정하면 더 정확한 결과를 얻을 수 있습니다. 시스템에 의한 표현 및 보다 효율적인 처리. 는 암시적 상수는 아래에 설명되어 있습니다. 명시적 상수 나중에 논의하겠습니다.
문자열 상수 SQL은 다음으로 둘러싸인 임의의 문자 시퀀스입니다. 작은따옴표("'"), 예:'이것은 문자열입니다'. SQL은 다음을 허용합니다. 두 개를 입력하여 문자열에 삽입할 작은따옴표 인접한 작은따옴표(예:'다이앤'의 말'). 에서토토 사이트작은따옴표는 다음과 같습니다. 또는 백슬래시()를 사용하여 이스케이프할 수도 있습니다."\", 예:'다이앤'' 말').
C 스타일 백슬래시 이스케이프도 사용할 수 있습니다.\b백스페이스입니다.\f폼피드입니다.\n개행 문자입니다.\r캐리지 리턴입니다.\t탭입니다. 그리고\xxx, 여기서xxx은 8진수입니다. 해당 ASCII 코드가 있는 문자입니다. 기타 백슬래시 뒤에 오는 문자는 문자 그대로 간주됩니다. 따라서, 문자열 상수에 백슬래시를 포함하려면 2를 입력하십시오. 백슬래시.
코드 0이 있는 문자는 문자열에 포함될 수 없습니다. 상수.
다음으로만 구분되는 두 개의 문자열 상수 공백적어도 개행 하나연결되어 효과적으로 처리됩니다. 마치 문자열이 하나의 상수로 쓰여진 것처럼 말입니다. 에 대한 예:
'foo' 선택 '바';
다음과 동일함
'foobar' 선택;
하지만
'foo' '바' 선택;
유효한 토토 사이트이 아니며토토 사이트일치함SQL9x이 안에 존경합니다.
비트 문자열 상수는 a가 있는 문자열 상수처럼 보입니다.B(대문자 또는 소문자) 시작 인용문 직전(중재 없음) 공백), 예:B'1001'. 는 비트 문자열 상수 내에서 허용되는 문자만 다음과 같습니다.0그리고1. 비트 문자열 상수는 다음 라인에서 계속될 수 있습니다. 일반 문자열 상수와 같은 방식입니다.
SQL의 정수 상수는 십진수 시퀀스입니다. (0~9) 소수점과 지수가 없습니다. 는 유효한 값의 범위는 정수 데이터 유형에 따라 달라집니다. 사용되었지만 일반정수유형 -2147483648에서 +2147483647 범위의 값을 허용합니다. (선택적인 더하기 또는 빼기 기호는 실제로 별도의 기호입니다. 단항 연산자이며 정수 상수의 일부가 아닙니다.)
부동 소수점 상수는 다음과 같은 일반적으로 허용됩니다. 양식:
숫자.[숫자][e[+-]숫자] [숫자].숫자[e[+-]숫자] 숫자e[+-]숫자
어디에서숫자하나 또는 더 많은 소수 자릿수. 또는 앞에 숫자가 하나 이상 있어야 합니다. 소수점 이하. 뒤에는 최소한 한 자리 이상의 숫자가 있어야 합니다. 지수 구분 기호(e) 그렇다면 필드가 존재합니다. 따라서 부동 소수점 상수는 다음과 같습니다. 다음의 존재로 정수 상수와 구별됩니다. 소수점 또는 지수 절(또는 둘 다)입니다. 공백이나 다른 문자가 포함되어서는 안 됩니다. 상수.
부동 소수점 상수 유형입니다.이중 정밀도. 진짜다음을 사용하여 명시적으로 지정할 수 있습니다.SQL문자열 표기법 또는토토 사이트유형 표기법:
REAL '1.23' -- 문자열 스타일 '1.23'::REAL -- 토토 사이트(기록) 스타일
an의 상수임의의유형을 입력할 수 있습니다. 다음 표기법 중 하나를 사용합니다.
유형 '문자열'
'문자열'::유형캐스트('문자열' 그대로유형 )
문자열의 텍스트가 입력 변환으로 전달됩니다 라는 유형의 루틴유형. 결과는 표시된 유형. 명시적인 유형 캐스트는 다음과 같은 경우 생략될 수 있습니다. 상수의 유형에 대해서는 모호함이 없습니다. (예를 들어 인수로 전달되는 경우 과부하되지 않은 기능), 이 경우 자동으로 강제로요.
다음을 사용하여 유형 강제를 지정하는 것도 가능합니다. 함수형 구문:
유형이름 ( '문자열' )
그러나 모든 유형 이름이 이런 방식으로 사용될 수 있는 것은 아닙니다. 참조섹션 1.3.6자세한 내용은.
그::, 캐스트()및 함수 호출 구문도 가능합니다. 임의의 런타임 유형 변환을 지정하는 데 사용됩니다. 에서 논의된 표현,섹션 1.3.6. 하지만 형식은유형 '문자열' 지정하는 데에만 사용할 수 있습니다. 리터럴 상수의 유형입니다. 또 다른 제한 사항은 다음과 같습니다.유형 '문자열' 그것은 작동하지 않는다는 것입니다 배열 유형; 사용::또는캐스트()배열 유형 지정 상수.
배열 상수의 일반적인 형식은 다음과 같습니다. 다음:
'{ 발1 삭제 발2 삭제 ... }'
어디에서삭제이것은 해당 유형에 대한 구분 기호 문자(에 기록됨)pg_type항목. (모든 내장 유형, 이것은 쉼표 문자입니다.",".) 각발다음 중 하나의 상수입니다. 배열 요소 유형 또는 하위 배열. 의 예 배열 상수는
'{{1,2,3},{4,5,6},{7,8,9}}'
이 상수는 2차원 3x3 배열입니다. 세 개의 정수 하위 배열로 구성됩니다.
개별 배열 요소는 사이에 배치될 수 있습니다. 큰따옴표(") 방지 공백과 관련된 모호성 문제. 없이 따옴표를 사용하면 배열 값 파서가 선행을 건너뜁니다. 공백.
(배열 상수는 실제로 배열의 특별한 경우일 뿐입니다. 이전 섹션에서 설명한 일반 유형 상수입니다. 상수는 처음에 문자열로 처리되어 다음으로 전달됩니다. 배열 입력 변환 루틴. 명시적 유형 사양이 필요할 수 있습니다.)
연산자는 최대의 시퀀스입니다NAMEDATALEN-1(기본적으로 31) 문자 다음 목록:
+ - * / < = ~ ! @ # % ^ & | ` ? $
거기 그러나 연산자 이름에는 몇 가지 제한 사항이 있습니다.$(달러)는 다음이 될 수 없습니다. 단일 문자 연산자(단일 문자 연산자의 일부일 수 있음) 여러 문자로 된 연산자 이름입니다.
--그리고/*연산자 어디에도 나타날 수 없습니다 이름은 시작으로 간주되므로 댓글.
여러 문자로 된 연산자 이름은 다음으로 끝날 수 없습니다.+또는-, 이름에 다음 중 하나 이상이 포함되어 있지 않은 경우 문자:
~ ! @ # % ^ & | ` ? $
용 예@-허용됩니다 운영자 이름이지만*-그렇지 않습니다. 이 제한은 다음을 허용합니다.포스트그레SQLSQL 규격을 구문 분석하기 위해 토큰 사이에 공백이 필요 없는 쿼리입니다.SQL 표준이 아닌 연산자 이름으로 작업할 때, 일반적으로 인접한 연산자를 공백으로 구분해야 합니다. 모호함을 피하기 위해. 예를 들어, 왼쪽을 정의한 경우 이름이 지정된 단항 연산자@, 넌 할 수 없어 쓰다X*@Y; 당신은 작성해야합니다X* @Y이를 보장하기 위해포스트그레SQL두 개의 연산자로 읽습니다. 이름이 하나도 없습니다.
영숫자가 아닌 일부 문자에는 특수 문자가 있습니다. 즉, 운영자와는 다르다는 뜻이다. 세부정보 사용법은 해당 위치에서 찾을 수 있습니다. 구문 요소가 설명됩니다. 이 섹션은 다음 목적으로만 존재합니다. 이들의 존재를 조언하고 목적을 요약합니다. 문자.
달러 기호($) 다음에 숫자는 위치 매개변수를 나타내는 데 사용됩니다. 함수 정의의 본문. 다른 맥락에서는 달러 기호는 연산자 이름의 일부일 수 있습니다.
괄호 (())는 표현을 그룹화하고 시행하는 일반적인 의미 우선순위. 어떤 경우에는 괄호가 필요합니다. 특정 SQL 명령의 고정 구문의 일부입니다.
괄호([])는 다음과 같은 용도로 사용됩니다. 배열의 요소를 선택합니다. 참조6장자세한 내용은 배열.
쉼표(,)는 일부에서 사용됩니다. 요소를 분리하는 토토 사이트 구조 목록.
세미콜론(;) 종료 SQL 명령. 내의 어느 곳에도 나타날 수 없습니다. 명령(문자열 상수 또는 인용부호 제외) 식별자.
콜론(:)은 다음과 같은 용도로 사용됩니다. 선택"슬라이스"배열에서. (참조스포츠 토토 결과 PostgreSQL : 문서 : 7.2 : 어레이.) 특정 SQL에서 방언(예: Embedded SQL)에서는 콜론을 사용하여 접두사 변수 이름.
별표(*)에는
에 사용될 때 특별한 의미선택명령 또는 다음을 사용하여개수집계 함수.
기간(.)는 다음에서 사용됩니다. 부동 소수점 상수, 테이블과 열 이름.
댓글은 시작하는 임의의 문자 시퀀스입니다. 이중 대시가 있고 줄 끝까지 확장됩니다. 예:
-- 이것은 표준 SQL92 주석입니다.
또는 C 스타일 블록 주석을 사용할 수 있습니다:
/* 여러 줄 주석 * 중첩 있음: /* 중첩된 블록 주석 */ */
댓글이 다음으로 시작하는 곳/*그리고 일치하는 항목으로 확장됩니다.*/. 이러한 블록 주석은 다음에 지정된 대로 중첩됩니다. SQL99는 C와 달리 더 큰 블록을 주석 처리할 수 있습니다. 기존 블록 주석이 포함될 수 있는 코드입니다.
댓글은 다음 단계를 진행하기 전에 입력 스트림에서 제거됩니다. 구문 분석으로 효과적으로 대체됩니다. 공백.
| [1] |
따옴표가 없는 이름을 소문자로 접기토토 사이트호환되지 않습니다 인용되지 않은 이름은 SQL 표준을 사용하여 대문자로 접혀야 합니다. 따라서,foo다음과 동일해야 합니다"FOO"아님"foo"표준에 따르면. 만약에 휴대용 애플리케이션을 작성하려는 경우 다음을 수행하는 것이 좋습니다. 항상 특정 이름을 인용하거나 절대 인용하지 마세요. |
| PostgreSQL : 문서 : 7.2 : 토토 사이트 순위 문 | 집 | 다음 |
| Y2K 선언문 | 위로 | 열 |