構文規則¶
このマニュアルの後続のセクションでは、VQL を使用して実行できる、さまざまな演算について説明します。この説明で使用される表記法と構文規則は以下のとおりです。
言語は大文字と小文字を区別しません。つまり、「CREATE VIEW」は「create view」と同じです。
<rule>
文法ルールの名前。構文が後から指定されるエレメントを示します。区切り文字:
が表示される場合 (たとえば<name:element-definition>
)、代表エレメントの名前に続いて、それを定義するエレメントの名前が示されます。::=
記号の左辺にあるエレメントは、右辺のコンストラクトによって定義されます。[...]
ルールの定義では、角かっこ内のエレメントはオプションです。アスタリスク (
*
) は、エレメントを 0 回以上指定できることを示します。たとえば、[ <search_method_clause> ]*
は、エレメント<search_method_clause>
が出現しない、または 1 回以上出現することを示しています。プラス記号 (
+
) は、エレメントを 1 回以上指定できることを示します。たとえば、[<field>]+
は、<field>
エレメントが少なくとも 1 回は必ず出現し、必要な回数だけ繰り返せることを示しています。文字
|
で区切られ、場合により中かっこ ({}
) でグループ化されたエレメントは、代替エレメントを示します。たとえば、{ BASIC | <authentication> }
は、トークンBASIC
または文法ルールauthentication
がこの位置に発生する必要があることを示しています。カンマ (
,
) は、リストのエレメントを区切るための構文構造で使用されます。かっこ (
( )
) は、通常、式をグループ化し、優先度を高めるために使用されます。ステートメントの特定の構文の一部として必須の場合があります。空白文字は、空白、水平タブ、または改行のいずれかとなります。
識別子 (
<identifier>
) はカタログのエレメントの名前です。識別子の文字の少なくとも 1 つが数字以外、または「a」~「z」の範囲外の場合は、<quoted identifier>
になります。そのため、二重引用符で囲む必要があります (例 :"identifier with space"
)。特定の単語は識別子として使用できません。後述する Basic elements of VQL statements で<reserved VQL words>
の定義を参照してください。数値 (
<number>
): 数値は-
記号を先頭に付加できる数字の組み合わせで、10 進数の小数点としてピリオド、オプションで指数 (実数の場合) を含めることができます。論理値 (
<boolean>
):true
およびfalse
論理値の表現。リテラル (
<literal>
): リテラルは一重引用符で囲まれた一連の文字です。一重引用符は別の一重引用符 (''
) でエスケープする必要があります。演算子 (
<operator>
): システム内の演算子を表します。
<identifier> ::=
<basic identifier>
| <quoted identifier>
<basic identifier> ::=
[A-Za-z][A-Za-z_0-9]*
; The first character of a basic identifier has to be in the ranges from "a" to "z" or from "A" to "Z".
; The following characters have to be in the ranges from "a" to "z", from "A" to "Z", a digit or the underscore ("_").
<quoted identifier> ::=
".*"
; Identifiers surrounded with double quotes can contain any character.
; A double quote within an identifier has to be escaped with another double quote. E.g. "identifier""with quote".
<view identifier> :: =
<identifier with database>
<identifier with database> ::=
<element:identifier> (assumes that the element exists in the current database)
| <database:identifier>.<view:identifier>
<integer> ::=
[-][0-9]+
<number> ::=
<integer>
| (([0-9]*\.[0-9]+)|([0-9]+\.[0-9]*)) ((([0-9]*\.[0-9]+)|([0-9]+\.[0-9]*)|([0-9]+))([Ee][-+][0-9]+))
<boolean> ::=
TRUE
| FALSE
<literal> ::= '.*' (a single quote in a literal has to be escaped with another single quote. E.g. 'literal''with a quote')
<operator> ::=
<unary operator>
| <binary operator>
<operator symbol> ::=
[~!@#^&|?<>=]+
<unary operator> ::=
is null
| is not null
| is true
| is false
<binary operator> ::=
=
| <identifier>
| <operator symbol>
| IN
<reserved words> ::=
ADD | ALL | ALTER | AND | ANY | AS | ASC | BASE | BOTH
| CASE | CONNECT | CONTEXT | CREATE | CROSS | CURRENT_DATE | CURRENT_TIMESTAMP
| CUSTOM | DATABASE | DEFAULT | DESC | DF | DISTINCT | DROP | EXISTS | FALSE
| FETCH | FLATTEN | FROM | FULL | GRANT | GROUP BY | HASH | HAVING
| HTML | IF | INNER | INTERSECT,INTO | IS | JDBC | JOIN | LDAP | LEADING
| LEFT | LIMIT | LOCALTIME | LOCALTIMESTAMP | MERGE | MINUS | MY | NATURAL | NESTED | NOS | NOT | NULL
| OBL | ODBC | OF | OFF | OFFSET | ON | ONE | OPT | OR | ORDER BY | ORDERED
| PRIVILEGES | READ | REVERSEORDER | REVOKE | RIGHT | ROW | SELECT | SWAP
| TABLE | TO | TRACE | TRAILING | TRUE | UNION | USER | USING | VIEW | WHEN
| WHERE | WITH | WRITE | WS | ZERO