2009-07-19 6 views
1

SQLに使用される構文の名前はありますか?SQL構文の表記法の名前は?

例えば)あなたはBOL(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 } ] ] 
[ ; ] 

の構文は、上記の使用構文の名前/用語とは何ですか?示し

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 ] 

LHS(「<table definition>」)他の場所で参照することができる非端末です。 '::='演算子は 'is defined as'演算子です。山括弧 '<>'の用語は、他の場所に定義されているより多くの非終端記号です(この例ではありませんが、時にはLHSと同じです)。角括弧 '[ ... ]'の部分はオプションです(1回だけ存在することもあれば、省略することもできます)。 SQL標準では、繰り返しを示すために表記法:

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

を使用しています。

問題のスニペットは、 'LHS :: = RHS'表記法を使用していないため、直接BNFではありません。それは、LHSが命名される必要がないことを効果的に想定している。 'CURRENT DATABASE''target_server_name'のようなものがターミナルか非ターミナルであるかどうかの表記法からは明らかではありません(元の文書ではもっとわかりやすいかもしれませんが、現在のデータベースはターミナルとターゲットサーバ名ではありません)。 BNFはそれを明確にするだろう)。

+0

-1:ジョナサン、これは本当に「この構文は何か」という質問に対する答えではありません。 –

関連する問題