2009-07-19 8 views
1

SQL에 사용되는 구문의 이름이 있습니까?SQL 구문 표기법의 이름은 무엇입니까?

일예로) 당신은
그것이 BEGIN DIALOG CONVERSION

BEGIN DIALOG [ CONVERSATION ] @dialog_handle 
    FROM SERVICE initiator_service_name 
    TO SERVICE 'target_service_name' 
     [ , { 'service_broker_guid' | 'CURRENT DATABASE' } ] 
    [ ON CONTRACT contract_name ] 
    [ WITH 
    [ { RELATED_CONVERSATION = related_conversation_handle 
     | RELATED_CONVERSATION_GROUP = related_conversation_group_id } ] 
    [ [ , ] LIFETIME = dialog_lifetime ] 
    [ [ , ] ENCRYPTION = { ON | OFF } ] ] 
[ ; ] 

의 구문은 구문의 이름/용어 위에서 사용되는 무엇이다) BOL (SQL 온라인 설명서에서이 페이지로 이동하면?

Transact-SQL Syntax Conventions (Transact-SQL)에는 "구문 표기법"의 이름이 없습니다.

답변

0

나는 Liao에 동의합니다.

더 있습니다. 이것은 SQL 구문뿐만 아니라 다양한 인공 언어 (여기에 속한 프로그래밍 언어)의 grammars을 정의/정의하는 데 사용됩니다.

0

이 표기법이 특정 이름을 가지고 있는지 여부는 모르지만 BNF - Backus-Naur Form이 아니며 EBNF (확장 BNF, 일명 ISO/IEC 14977:1996)도 아닙니다. 느슨하게 관련되어 있지만 느슨하게 관련되어 있습니다. 특히, BNF는 비 터미널 이름이 일부 값 목록으로 정의됨을 지정합니다. example이는 SQL 2003 표준에서 CREATE TABLE 문을 다음과 같습니다

<table definition> ::= 
    CREATE [ <table scope> ] TABLE <table name> <table contents source> 
    [ ON COMMIT <table commit action> ROWS ] 

좌변을 ('<table definition>이')에서 참조 할 수있는 비 단자입니다. '::='연산자는 'is defined as'연산자입니다. 꺾쇠 괄호 '<>'은 더 많은 비 터미널 (이 예에서는 LHS와 동일 함)이며 다른 곳에서는 정의가 있습니다. 대괄호 '[ ... ]'의 부품은 선택 사항입니다 (한 번만 있거나 한 번 생략 될 수도 있음). SQL 표준은 표기법을 사용합니다 :

<non-terminal> { [ , <non-terminal> ] }... 

반복을 나타냅니다.

문제의 스 니펫은 'LHS :: = RHS'표기법을 사용하지 않기 때문에 직접 BNF가 아닙니다. LHS를 명명 할 필요가 없다고 가정합니다. 또한 'CURRENT DATABASE''target_server_name'과 같은 것이 표기법 (터미널과 터미널 서버가 아닌 경우)에서 표기법으로 명확하지 않습니다 (원래 문서에서는 더 명확하게 나타낼 수 있습니다). BNF는 그것을 분명히 할 것입니다.)

+0

-1 : Jonathan,이 질문은 "이 구문이 무엇인가"라는 질문에 대한 답변이 아닙니다. –