SQL の概要
構造化問い合わせ言語(SQL)の概要
構造化問い合わせ言語(SQL)は、英語に似たステートメントから成るデータベース言語の 1 つで、これを使ってさまざまなデータベース操作を実行できます。ANSI(American National Standards Institute)と IBM は、それぞれ独自の SQL 標準を定義しています。IBM の標準は SAA(Systems Application Architecture)と呼ばれます。Pervasive PSQL 製品では、ANSI SQL と IBM SAA SQL の両方の機能をほとんど実装しているほか、これらの標準では定義されていない独自の拡張機能も提供しています。
Pervasive PSQL では、さまざまな種類の SQL ステートメントを作成できます。次の表に、作成可能な SQL ステートメントの種類と、それぞれを使って実現できるタスクの一覧を示します。
表 1 SQL ステートメントの種類と関連タスク
SQL ステートメントの種類 | 各種作業 |
データ定義 | テーブルを作成、変更、または削除する。 ビューを作成または削除する。 インデックスを作成または削除する。 ストアド SQL プロシージャを作成または削除する。 トリガーを作成または削除する。 ユーザー定義関数を作成または削除する。 |
データ処理 | テーブル内のデータを取得、挿入、更新、および削除する。 トランザクションを定義する。 ビューを定義または削除する。 ストアド SQL プロシージャを実行する。 トリガーを実行する。 |
データ制御 | 辞書のセキュリティを有効または無効にする。 ユーザーを作成または削除する。 グループからユーザーを追加または削除する。 ユーザー パスワードを変更する。 テーブルのアクセス権を付与または取り消す。 |
この章では、SQL ステートメントの概要について分類別に説明します。各ステートメントの詳細については、
SQL 構文リファレンスを参照してください。
この章は、次のセクションから構成されています。
データ定義ステートメント
データ定義ステートメントではデータベースの特性を指定できます。これを使ってデータ定義ステートメントを実行すると、Pervasive PSQL によってデータベースの記述がデータ辞書に格納されます。情報の格納や取得を行う前に、辞書内でデータベースを定義する必要があります。
Pervasive PSQL では、データ定義ステートメントを作成して、次のタスクを実行できます。
•テーブルの作成、変更、および削除
•ビューの作成と削除
•インデックスの作成と削除
•トリガーの作成と削除
•ストアド プロシージャの作成と削除
•ユーザー定義関数の作成と削除
次のセクションでは、これらのタスクに関連する SQL ステートメントの概要について説明します。データベースの特性の定義に関する一般的な情報については、開発者向けリファレンスの『Pervasive PSQL Programmer's Guide』を参照してください。
テーブルの作成、変更、および削除
データベースのテーブルを作成、変更、および削除するには、次のステートメントを使って SQL を構築します。
表 2 データ定義ステートメント - テーブル
| テーブルを定義し、オプションで対応するデータ ファイルを作成します。 |
| テーブル定義に変更を 1 つ追加します。ALTER TABLE ステートメントを使用すると、テーブル定義への列の追加、テーブル定義からの列の削除、列のデータ型やデータ長(あるいは、それ以外の特性)の変更、主キーまたは外部キーの追加や削除、別のデータ ファイルとテーブル定義との関連付けを行うことができます。 |
| データ辞書からテーブルを削除し、オプションで関連するデータ ファイルをディスクから削除します。 |
ビューの作成と削除
データベースのビューを作成および削除するには、次のステートメントを使って SQL を構築します。
表 3 データ定義ステートメント - ビュー
| 新規ビューを定義します。 |
| ビューを削除します。 |
インデックスの作成と削除
データベースのインデックスを作成および削除するには、次のステートメントを使って SQL を構築します。
表 4 データ定義ステートメント - インデックス
| 既存のテーブルに新しいインデックス(名前付きインデックス)を定義します。 |
| 名前付きインデックスを削除します。 |
トリガーの作成と削除
トリガーを作成および削除するには、次のステートメントを使って SQL を構築します。
表 5 データ定義ステートメント - トリガー
| 既存のテーブルにトリガーを定義します。 |
| トリガーを削除します。 |
Pervasive PSQL は、その他の SQL 制御ステートメントも提供しています。これらのステートメントは、トリガー本体内でのみ使用できます。トリガーでは次のステートメントを使用できます。
表 6 データ定義ステートメント - トリガー制御
BEFORE | INSERT、UPDATE、または DELETE オペレーションの前に実行するトリガーを定義します。 |
AFTER | INSERT、UPDATE、または DELETE オペレーションの後で実行するトリガーを定義します。 |
ストアド プロシージャの作成と削除
ストアド プロシージャは、あらかじめコンパイルして辞書に保存されている複数のステートメントから成っています。ストアド プロシージャを作成および削除するには、次のステートメントを使用します。
表 7 データ定義ステートメント - ストアド プロシージャ
| 新しいプロシージャをデータ辞書に保管します。 |
| データ辞書からストアド プロシージャを削除します。 |
Pervasive PSQL は、その他の SQL 制御ステートメントも提供しています。これらのステートメントは、ストアド プロシージャ本体内でのみ使用できます。ストアド プロシージャでは次のステートメントを使用できます。
表 8 データ定義ステートメント - ストアド プロシージャ制御
| 条件の真偽値に基づいたステートメントの実行制御を可能にします。 |
| ブロックまたはループ ステートメントを抜けて実行を継続します。 |
| ステートメントのブロックの実行を繰り返します。 |
| 指定した条件が True である間、ステートメントのブロックの実行を繰り返します。 |
ユーザー定義関数(UDF)の作成と削除
組み込み関数に加えて、Pervasive PSQL では独自にユーザー定義関数(UDF)を作成し、それを Pervasive PSQL ステートメントで使用することができます。
ユーザー定義関数は一種のデータベース オブジェクトで、再使用できる 1 つ以上の Pervasive PSQL ステートメントをカプセル化したものです。ユーザー定義関数は 0 個以上の入力引数を取り、そこから 1 つの戻り値を求めます。これがスカラー値です。
ユーザー定義関数は常に、データベースのコンテキスト内に定義されます。このステートメントの実行が成功すると、特定のデータベースに UDF 定義が格納されます。格納された UDF は変更したり、呼び出したり、また削除したりできます。
Pervasive PSQL はスカラー ユーザー定義関数をサポートしています。
スカラー ユーザー定義関数は、Pervasive PSQL ステートメントの RETURNS 句で指定されたデータ型の単一値を返します。スカラー UDF には複数の Pervasive PSQL ステートメントを含むことができます。戻り値のデータには、text 型、ntext 型、image 型、cursor 型、または timestamp 型以外であれば、どのデータ型の値でも指定できます。
ユーザー定義関数を作成および削除するには、次のステートメントを使用します。
表 9 データ定義ステートメント - ユーザー定義関数
| スカラー ユーザー定義関数をデータベースに作成します。 |
| データベースからスカラー ユーザー定義関数を削除します。 |
データ操作ステートメント
データ操作ステートメントを使用すると、データベースの内容にアクセスして変更を加えることができます。Pervasive PSQL ではデータ操作ステートメントを構築して、次のタスクを実行できます。
•テーブルからのデータの取得
•テーブル内のデータの変更
•トランザクションの定義
•ビューの作成と削除
•ストアド プロシージャの実行
•トリガーの実行
次のセクションでは、これらのタスクに関連する SQL ステートメントの概要について説明します。
データの取得
データベースから情報を取得するために使用するステートメントはすべて SELECT ステートメントに基づきます。
表 10 データ操作ステートメント - データの取得
| データベース内の 1 つまたは複数のテーブルからデータを取得します。 |
SELECT ステートメントを作成する場合、さまざまな句を使って異なるオプションを指定できます(それぞれの句の詳細については、
ODBC エンジン リファレンスの SELECT ステートメントの項を参照)。SELECT ステートメントで使用する句の種類は次のとおりです。
表 11 データ操作ステートメント - データの取得オプション
FROM | データを取得するテーブルまたはビューを指定します。 |
WHERE | SELECT ステートメントで取得するデータを修飾する検索条件を定義します。 |
| 指定した条件に従って行のセットを組み合わせ、グループ内の 1 つ以上の列を対象に集計値を取得できるようにします。 |
| グループの集計値が満たさなければならない条件を指定して、ビューの内容を制限します。 |
ORDER BY | Pervasive PSQL が選択した行を返す順序を決定します。 |
また、UNION キーワードを使って、複数の SELECT クエリから 1 つの結果テーブルを取得することもできます。
データの変更
テーブルやビューのデータを追加、変更、または削除するには、以下の各ステートメントを使用します。
表 12 データ操作ステートメント - データの変更
| 1 つ以上のテーブルまたは 1 つのビューに行を追加します。 |
| テーブルまたはビューのデータを変更します。 |
| テーブルまたはビューから行を削除します。 |
DELETE または UPDATE ステートメントを作成する場合、WHERE 句を使って、目的のデータを制限する検索条件を定義することもできます。
トランザクションの定義
データベース内のデータを更新するには、個別に SQL ステートメントを発行するか、「トランザクション」(関連するステートメントの論理的な単位)を定義します。トランザクションを定義すると、作業単位に含まれるすべてのステートメントが正常に実行されるか、すべてのステ ートメントが実行されないことになります。トランザクションを使用すると、複数のステートメントをグループ化して、データベースの論理的な整合性を確実にできます。
Pervasive PSQL は ODBC API SQLTransact をサポートしています。詳細については、『Microsoft ODBC Programmer's Reference』を参照してください。
ビューの作成と削除
ビューを作成および削除するには、次のステートメントを使って SQL を構築します。
表 13 データ操作ステートメント - ビュー
| データベース ビューを定義し、辞書にその定義を格納します。 |
| データ辞書からビューを削除します。 |
ストアド プロシージャの作成
ストアド プロシージャは、あらかじめコンパイルして辞書に保存されている複数のステートメントから成っています。ストアド プロシージャを実行するには、次のステートメントを使用します。
表 14 データ操作ステートメント - ストアド プロシージャ
| あらかじめコンパイルされたプロシージャを呼び出して実行します。 |
システム ストアド プロシージャの実行
システム ストアド プロシージャは、データ定義言語(DDL)では取り扱われない管理タスクや情報タスクの遂行に利用できます。システム ストアド プロシージャには psp_ プレフィックスが付きます。ストアド プロシージャを実行するには、次のステートメントを使用します。
表 15 データ操作ステートメント - システム ストアド プロシージャ
| システム ストアド プロシージャを呼び出して実行します。 |
詳細については、
システム ストアド プロシージャを参照してください。
トリガーの実行
トリガーは、あらかじめコンパイルして辞書に保存されている複数のステートメントから成っています。トリガーは、指定した条件になると、エンジンにより自動的に実行されます。
データ制御ステートメント
データ制御ステートメントではデータベースのセキュリティを定義できます。辞書を作成する場合、その辞書のセキュリティを明示的に有効にするまで、その辞書のセキュリティは定義されません。Pervasive PSQL では、データ制御ステートメントを作成して、次のタスクを実行できます。
•セキュリティの有効化または無効化
•ユーザーとグループの作成と削除
•アクセス権の付与と取り消し
メモ: 保護されたデータベース内のテーブルであるファイルに Btrieve オーナー ネームが設定されている場合、データベースの Master ユーザーは、そのテーブルに対する権限を任意のユーザー(Master ユーザーを含む)に与える場合、GRANT ステートメントでオーナー ネームを使用する必要があります。
次のセクションでは、これらのタスクに関連する SQL ステートメントの概要について説明します。
セキュリティの有効化と無効化
データベースのセキュリティを有効または無効にするには、次のステートメントを使用します。
表 16 データ制御ステートメント - セキュリティ
| データベースのセキュリティを有効または無効にし、Master パスワードを設定します。 |
ユーザーとグループの作成と削除
データベースのユーザーとユーザー グループを作成または削除するには、次のステートメントを使って SQL を構築します。
表 17 データ制御ステートメント - ユーザーとグループ
ALTER USER | ユーザーの名前またはパスワードを変更します。 |
CREATE USER | パスワードまたはメンバーシップを持つかまたは持たない新規ユーザーをグループに作成します。 |
DROP USER | ユーザーを削除します。 |
ALTER GROUP | ユーザーをグループに追加します。グループからユーザーを削除します。 |
CREATE GROUP | 新しいユーザーのグループを作成します。 |
DROP GROUP | ユーザーのグループを削除します。 |
GRANT LOGIN TO | ユーザーとパスワードを作成するか、ユーザーをグループに追加します。 |
REVOKE LOGIN FROM | 辞書からユーザーを削除します。 |
アクセス権の付与と取り消し
ユーザーやグループにアクセス権を付与または取り消すには、次のステートメントを使用します。
表 18 データ制御ステートメント - アクセス権
GRANT(アクセス権) | 指定した種類のアクセス権をユーザーまたはグループに付与します。GRANT(アクセス権)ステートメントで付与できるアクセス権は、All、Insert、Delete、Alter、Select、Update、および References です。 |
GRANT CREATETAB TO | テーブルを作成するためのアクセス権をユーザーまたはグループに付与します。 |
REVOKE(アクセス権) | アクセス権をユーザーまたはグループから取り消します。 |
REVOKE CREATETAB FROM | テーブルを作成するためのアクセス権をユーザーまたはグループから取り消します。 |