第3章 SQL 互換性
Data Virtualization は、SQL-92 DML のほとんどすべての機能を提供します。SQL-99 以降の機能は、コミュニティーのニーズに基づいて常に追加されます。以下では、SQL の網羅的な説明は試行されず、SQL を Data Virtualization 内でどのように使用するかを説明します。Data Virtualization が受け入れる SQL の正確な形式に関する詳細は、BNF for SQL grammar を参照してください。
3.1. 識別子 リンクのコピーリンクがクリップボードにコピーされました!
SQL コマンドには、テーブルと列への参照が含まれます。これらの参照は識別子の形式にあり、コマンドのコンテキストでテーブルと列を一意に識別します。すべてのクエリーは、仮想データベースまたは VDB のコンテキストで処理されます。情報は複数のソースでフェデレーションできるため、競合を回避するためにテーブルと列を何らかの方法でスコープする必要があります。このスコープは、各データソースまたはビューのセットに関する情報が含まれるスキーマによって提供されます。
完全修飾テーブルおよび列名の形式は以下のとおりです。識別子の個別の「パート」はピリオドで区切られます。
- TABLE: <schema_name>.<table_spec>
- COLUMN: <schema_name>.<table_spec>.<column_name>
構文ルール
-
識別子は英数字またはアンダースコア(
_
)文字で構成され、アルファベットで開始する必要があります。Unicode 文字は識別子で使用できます。 -
二重引用符の識別子にはあらゆるコンテンツがあります。二重引用符は、追加の二重引用符でエスケープされている場合に使用できます(例:
「some "" id」
など)。 - データソースは異なる方法でテーブルを整理し、一部の先頭のカタログ、スキーマ、またはユーザー情報を含むため、Data Virtualization ではテーブル仕様をドットで区切られたコンストラクトにすることができます。
テーブル仕様にドット解決機能が含まれる場合、名前の任意の数の終了セグメントに対して部分的な名前が一致します。たとえば、完全修飾名 vdbname."sourceschema.sourcetable"
を持つテーブルが部分的な名前 ソーステーブル
にマッチします。
-
列、列エイリアス、およびスキーマにはドット(
.
)文字を含めることはできません。 - 引用符で囲まれていても、Data Virtualization で大文字と小文字が区別されません。
有効な完全修飾テーブル識別子の例は次のとおりです。
- MySchema.Portfolios
- "MySchema.Portfolios"
- MySchema.MyCatalog.dbo.Authors
有効な完全修飾列識別子の例は次のとおりです。
- MySchema.Portfolios.portfolioID
- "MySchema.Portfolios"."portfolioID"
- MySchema.MyCatalog.dbo.Authors.lastName
完全修飾識別子は常に SQL コマンドで使用できます。コマンドのコンテキストでは、結果となる名前があいまいである限り、部分的にまたは非修飾形式を使用することもできます。同じクエリーで異なる形式の修飾を混在させることができます。
ピリオド(.
)文字を含むエイリアスを使用する場合は、エイリアス名が修飾名と同じ処理され、完全修飾オブジェクト名と競合する可能性があるという既知の問題です。
予約された単語
Data Virtualization の予約された語には、標準の SQL336 Foundation、SQL/MED、および SQL/XML の予約単語と、BIGINTEGER、BIGDECIMAL、MAKEDEP などの Data Virtualization 固有の単語が含まれます。予約されている単語の詳細は、SQL 文法の「BNF for SQL 文法」の 「 Reserved Keywords and Reserved Keywords for Future Use 」の セクションを参照してください。