SQL 構文リファレンス
Zen でサポートされる構文のリファレンス
以下のトピックでは、Zen でサポートされる SQL 文法について説明します。
リテラル値
Zen は、標準のリテラル書式をサポートしています。このトピックでは、最も一般的な例をいくつか示します。
文字列値
文字列定数は、指定する文字列を一重引用符で囲むことによって、SQL ステートメント内に表記できます。文字列自体が一重引用符またはアポストロフィを含んでいる場合は、その文字の前にもう 1 つ一重引用符を付ける必要があります。
文字列リテラルは VARCHAR 型を持ちます。文字は、データベース コード ページを使用してエンコードされます。リテラルの先頭に文字 "N" が付いている場合、そのリテラルは NVARCHAR 型を持ち、文字は UCS-2 を使用してエンコードされます。SQL クエリ文字列に埋め込まれたリテラルは、SQL エンジンで最終的に変換する前に、SQL アクセス方法で追加のエンコード変換の手続きを踏むことがあります。特に、SQL テキストがすべての Unicode 文字をサポートしていないエンコードに変換されている場合は、エンジンが文字列リテラルを NVARCHAR へ変換する前に、SQL テキスト内の文字が失われることがあります。
例
最初の例では、文字列内に含まれるアポストロフィまたは一重引用符は、もう 1 つの一重引用符によってエスケープする必要があります。
SELECT * FROM t1 WHERE c1 = 'Roberta''s Restaurant'
SELECT STREET FROM address WHERE city LIKE 'san%'
数値
日付値
日付定数は、SQL ステートメント内に文字列として表記するか、ベンダー文字列に埋め込むことができます。最初のケースは CHAR 型の文字列として、ベンダー文字列表記は DATE 型の値として扱われます。この違いは変換時に重要になります。
Zen では、この関数で概説しているように、拡張 SQL 文法を一部サポートしています。
Zen でサポートしている日付リテラル書式は 'YYYY-MM-DD' です。
日付は 0 年から 9999 年の範囲で指定できます。
例
次の 2 つのステートメントによって、開始日が 1995 年 6 月 5 日より後のすべての授業が返されます。
SELECT * FROM Class WHERE Start_Date > '1995-06-05'
SELECT * FROM Class WHERE Start_Date > {d '1995-06-05'}
時刻値
Zen でサポートしている時刻リテラル書式は 'HH:MM:SS' です。
時刻定数は、SQL ステートメント内に文字列として表記するか、ベンダー文字列に埋め込むことができます。文字列表記は CHAR 型の文字列として、ベンダー文字列表記は TIME 型の値として扱われます。
Zen では、この関数で概説しているように、拡張 SQL 文法を一部サポートしています。
例
次の 2 つのステートメントによって、Class テーブルから、授業の開始時刻が 14:00:00 のレコードが取り出されます。
SELECT * FROM Class WHERE Start_time = '14:00:00'
SELECT * FROM Class WHERE Start_time = {t '14:00:00'}
タイムスタンプ値
タイムスタンプ定数は、SQL ステートメント内に文字列として表記するか、ベンダー文字列に埋め込むことができます。Zen では、文字列表記は CHAR 型の文字列として、ベンダー文字列表記は SQL_TIMESTAMP 型の値として扱われます。
Zen でサポートしているタイムスタンプ リテラル書式は 'YYYY-MM-DD HH:MM:SS.MMM' です。
例
次の 2 つのステートメントによって、Billing テーブルから、ログの開始日時が 1996-03-28 の 17:40:49 のレコードが取り出されます。
SELECT * FROM Billing WHERE log = '1996-03-28 17:40:49'
SELECT * FROM Billing WHERE log = {ts '1996-03-28 17:40:49'}
Zen の SQL 文法
以下のトピックでは、Zen でサポートされる SQL 文法について説明します。ステートメントおよびキーワードがアルファベット順に記載されています。
メモ:ほとんどの SQL 例は、Zen Control Center に備わっている SQL Editor を使ってテストすることができます。例外については、文法要素の解説に示されています。詳細については、『
Zen User's Guide』の
SQL Editor を参照してください。
メモ:よく使われる SQL エディターのほとんどは、複数のステートメントを実行するためにステートメント区切り文字を使用しません。しかし、ZenCC の SQL Editor は区切り文字を必要とします。ほかの環境で例を実行する場合は、シャープ記号またはセミコロンの区切り文字を取り除く必要があります。