SQL の概要
構造化問い合わせ言語(SQL)および SQL に対する PSQL サポートの概要
以下のトピックでは、SQL の概要を提示し、SQL に対する PSQL サポートの詳細について説明します。
SQL 構文リファレンスへ移動して、PSQL でサポートされる特定の SQL 文法を調べることもできます。
PSQL で SQL を使用した作業
構造化問い合わせ言語(SQL)は、英語に似たステートメントを使用してデータベース操作を実行する、データベース言語の 1 つです。ANSI(American National Standards Institute)と IBM は、それぞれ独自の SQL 標準を定義しています。IBM の標準は SAA(Systems Application Architecture)と呼ばれます。PSQL 製品では、ANSI SQL と IBM SAA SQL の両方の機能をほとんど実装しているほか、これらの標準では定義されていない独自の拡張機能も提供しています。
PSQL では、さまざまな種類の SQL ステートメントを作成できます。次の表に、作成可能な SQL ステートメントの種類と、それぞれを使って実現できるタスクの一覧を示します。
このトピックでは、SQL ステートメントの概要について分類別に説明します。各ステートメントの詳細については、SQL 構文リファレンスを参照してください。
このセクションは、次のステートメント カテゴリから構成されています。
データ定義ステートメント
データ定義ステートメントではデータベースの特性を指定できます。これを使ってデータ定義ステートメントを実行すると、PSQL によってデータベースの記述がデータ辞書に格納されます。情報の格納や取得を行う前に、辞書内でデータベースを定義する必要があります。
PSQL では、データ定義ステートメントを作成して、次のタスクを実行できます。
次のセクションでは、これらのタスクに関連する SQL ステートメントの概要について説明します。データベースの特性の定義に関する一般的な情報については、開発者向けリファレンスの『PSQL Programmer's Guide』を参照してください。
テーブルの作成、変更、および削除
データベースのテーブルを作成、変更、および削除するには、次のステートメントを使って SQL を構築します。
ビューの作成と削除
データベースのビューを作成および削除するには、次のステートメントを使って SQL を構築します。
インデックスの作成と削除
データベースのインデックスを作成および削除するには、次のステートメントを使って SQL を構築します。
トリガーの作成と削除
トリガーを作成および削除するには、次のステートメントを使って SQL を構築します。
PSQL は、その他の SQL 制御ステートメントも提供しています。これらのステートメントは、トリガー本体内でのみ使用できます。トリガーでは次のステートメントを使用できます。
ストアド プロシージャの作成と削除
ストアド プロシージャは、あらかじめコンパイルして辞書に保存されている複数のステートメントから成っています。ストアド プロシージャを作成および削除するには、次のステートメントを使用します。
PSQL は、その他の SQL 制御ステートメントも提供しています。これらのステートメントは、ストアド プロシージャ本体内でのみ使用できます。ストアド プロシージャでは次のステートメントを使用できます。
IF...THEN...ELSE
ユーザー定義関数(UDF)の作成と削除
組み込み関数に加えて、PSQL では独自にユーザー定義関数(UDF)を作成し、それを PSQL ステートメントで使用することができます。
ユーザー定義関数は一種のデータベース オブジェクトで、再使用できる 1 つ以上の PSQL ステートメントをカプセル化したものです。ユーザー定義関数は 0 個以上の入力引数を取り、そこから 1 つの戻り値を求めます。これがスカラー値です。
ユーザー定義関数は常に、データベースのコンテキスト内に定義されます。このステートメントの実行が成功すると、特定のデータベースに UDF 定義が格納されます。格納された UDF は変更したり、呼び出したり、また削除したりできます。
PSQL はスカラー ユーザー定義関数をサポートしています。
スカラー ユーザー定義関数は、PSQL ステートメントの RETURNS 句で指定されたデータ型の単一値を返します。スカラー UDF には複数の PSQL ステートメントを含むことができます。戻り値のデータには、text 型、ntext 型、image 型、cursor 型、または timestamp 型以外であれば、どのデータ型の値でも指定できます。
ユーザー定義関数を作成および削除するには、次のステートメントを使用します。
データ操作ステートメント
データ操作ステートメントを使用すると、データベースの内容にアクセスして変更を加えることができます。PSQL ではデータ操作ステートメントを構築して、次のタスクを実行できます。
次のセクションでは、これらのタスクに関連する SQL ステートメントの概要について説明します。
データの取得
データベースから情報を取得するために使用するステートメントはすべて SELECT ステートメントに基づきます。
SELECT ステートメントを作成する場合、さまざまな句を使って異なるオプションを指定できますSELECT ステートメントで使用する句の種類は次のとおりです。
また、UNION キーワードを使って、複数の SELECT クエリから 1 つの結果テーブルを取得することもできます。
データの変更
テーブルやビューのデータを追加、変更、または削除するには、以下の各ステートメントを使用します。
DELETE または UPDATE ステートメントを作成する場合、WHERE 句を使って、目的のデータを制限する検索条件を定義することもできます。
ビューの作成と削除
ビューを作成および削除するには、次のステートメントを使って SQL を構築します。
ストアド プロシージャの作成
ストアド プロシージャは、あらかじめコンパイルして辞書に保存されている複数のステートメントから成っています。ストアド プロシージャを実行するには、次のステートメントを使用します。
CALL または EXEC[UTE]
システム ストアド プロシージャの実行
システム ストアド プロシージャは、データ定義言語(DDL)では取り扱われない管理タスクや情報タスクの遂行に利用できます。システム ストアド プロシージャには psp_ プレフィックスが付きます。ストアド プロシージャを実行するには、次のステートメントを使用します。
CALL または EXEC[UTE]
詳細については、システム ストアド プロシージャを参照してください。
トリガーの実行
トリガーは、あらかじめコンパイルして辞書に保存されている複数のステートメントから成っています。トリガーは、指定した条件になると、エンジンにより自動的に実行されます。
データ制御ステートメント
データ制御ステートメントではデータベースのセキュリティを定義できます。辞書を作成する場合、その辞書のセキュリティを明示的に有効にするまで、その辞書のセキュリティは定義されません。PSQL では、データ制御ステートメントを構築して、次のタスクを実行できます。
メモ: 保護されたデータベース内のテーブルであるファイルに Btrieve オーナー ネームが設定されている場合、データベースの Master ユーザーは、そのテーブルに対する権限を任意のユーザー(Master ユーザーを含む)に与える場合、GRANT ステートメントでオーナー ネームを使用する必要があります。
次のセクションでは、これらのタスクに関連する SQL ステートメントの概要について説明します。
セキュリティの有効化と無効化
データベースのセキュリティを有効または無効にするには、次のステートメントを使用します。
ユーザーとグループの作成と削除
データベースのユーザーとユーザー グループを作成または削除するには、次のステートメントを使って SQL を構築します。
アクセス権の付与と取り消し
ユーザーやグループにアクセス権を付与または取り消すには、次のステートメントを使用します。
PSQLメタデータ
PSQL のリレーショナル インターフェイスでは、メタデータでバージョン 1(V1)とバージョン 2(V2)という 2 つのバージョンをサポートします。
メタデータのバージョンはデータベース プロパティの 1 つで、データベースの作成時に指定します。デフォルトは "メタデータ バージョン 1" です。"メタデータ バージョン 2" にする場合は、データベースを作成する際に指定する必要があります。
メタデータのバージョンは、そのデータベース内のすべてのデータ辞書ファイル(DDF)に適用されます。単独のデータベースで、メタデータ バージョン 1 を使用する DDF とメタデータ バージョン 2 を使用する DDF を一緒に使用することはできません。2 つのバージョンの DDF はそれぞれ情報をやり取りすることができません。
ただし、データベース エンジンで複数のデータベースへ同時にアクセスすれば、そのデータベースごとにメタデータ バージョン 1 またはメタデータ バージョン 2 を使用することができます。
PSQL v10 より前の PSQL バージョンで作成されたデータベースはすべてメタデータ バージョン 1 を使用します。PSQL v10 以降を使って作成されたデータベースは、データベースの設定に応じてどちらかのメタデータ バージョンを使用しています。
メタデータのバージョンの比較
メタデータ バージョン 2 では、多くの識別子名に最大 128 バイトの名前を付けることができます。追加情報については、PSQL 機能の制限/条件を参照してください。またメタデータ バージョン 2 では、ビューおよびストアド プロシージャに対する権限が認められます。ビューおよびストアド プロシージャに対する権限を参照してください。
メタデータ バージョン 2 のデータ辞書ファイル(DDF)には、バージョン 1 用とは異なる名前が付けられます。多くの場合、バージョン 2 の DDF には追加フィールドや既存フィールドへの変更が含まれています。システム テーブルを参照してください。
リレーショナル エンジン制限
次の表は、リレーショナル エンジンの機能に適用される制限または条件を示します。PSQL データベースには、40 億のオブジェクトをさまざまに組み合わせて含むことができます。オブジェクトはデータ辞書ファイルに保存されます。
PSQL Programmer's Guide』の名前付け規則も参照してください。
「文字列値を参照してください。
1 CHAR、NCHAR、VARCHAR、または NVARCHAR 列で、完全にインデックス化できる列の最大サイズは 255 バイトです。
2Advanced Operations Guide』の識別子の制限も参照してください。
完全修飾オブジェクト名
完全修飾されたオブジェクト名は、ドット表記を使用してデータベース名とオブジェクト名を結合します。たとえば、データベース mydbase に myview というビューがある場合、完全修飾オブジェクト名は mydbase.myview となります。
完全修飾オブジェクト名はデータベース内で一意である必要があります。たとえば、データベース mydbase にテーブル acctpay とユーザー定義関数 acctpay がある場合、PSQL は名前 mydbase.acctpay を解決できません。
SQL ステートメント内のデリミター付き識別子
テーブル、列、およびインデックスにスペースや非標準の文字が含まれている場合や、識別子がキーワードである場合は、デリミターを付ける必要があります。デリミター文字は二重引用符です。
SELECT "last-name" FROM "non-standard-tbl"
ハイフンは標準文字ではありません。
SELECT "password" FROM my_pword_tbl
"password" は SET PASSWORD ステートメントのキーワードです。