CHAPTER 1: Empress SQL




1.1 はじめに

データベース管理システム (DBMS)は、 相互関係があるデータの集合を格納、整理し、またアクセスするために 使用することが可能なコンピュータプログラムです。 このデータの集合は通常、データベースとして関連付けられます。 DBMSの第1のゴールとして、 容易さ、効率的な格納方法、データベースからのデータ検索 を提供することです。 データベースには複数のデータモデル(データモデルは、データベース構造を 説明するために用いられる用語です。)があり、 Empressは、リレーショナルデータベースマネージメントシステム(RDBMS) です。 Empressは、複数のデータベースのデータを管理することが可能で、 各データベースに格納されたデータは、テーブルとして行と列に整理されます。 リレーショナルデータベースの用語では、 これらのテーブルはリレーションとして 行はレコードして、また 列はアトリビュートとして関連付けられています。

Empressは、データベースのデータを操作するための 構造化紹介言語(SQL)コマンドセットを提供します。 Empress SQL言語は、オペレーションの 3 つレベルを持っています。

  1. データ管理コマンドをプロンプトなしに入力する基礎レベルの操作。 データ管理コマンド全般は、このレベルで使用可能です。

    データ定義言語(DDL)は、データベースおよびテーブルの構造に 関連したコマンド。

    データ操作言語(DML)は、 メンテナンスおよびデータの検索、データベーステーブルへの格納に 関連したコマンド。

    データ制御言語(DCL)は、 整合性の保証およびデータ保護機能を提供するコマンド。

  2. 管理インターフェイスは、 Empressの特定のセッション内の コマンド管理に関連したコマンド。 このインターフェイスは、コマンド履歴を保持し、 コマンド行を編集するためのラインエディタを提供します。 加えて、Empressセッションを終了することなしに オペレーティングシステムへの移行、および オペレーティングシステムコマンドを発行することが可能です。

  3. 対話型インターフェイスは、 プロンプト表示とそれに対する応答による 対話形式のインターフェイスを提供します。 基本的なデータ管理コマンドのサブセットが利用可能です。 また、対話型インターフェイスは、対話を制御するコマンドを 含んでいます。



1.2 データ定義言語コマンド

データベースの全体の構造はデータ定義コマンド(DDL)によって定義されています。 DDLコマンドを実行した場合、データ定義はコンパイルされ、 データ辞書に格納されます。 Empressの DDLコマンドの詳細な説明は Empress SQL: リファレンスマニュアル に提供されています。 使用可能なDDLコマンドの要約は以下のとおりです。

表 1-1 データ定義言語コマンド

コマンド 説明
ALTER TABLE 既存のテーブルの構造の変更。 対象となるテーブルにレコードが存在する場合、 そのレコードに対し、手動でダンプおよびリロードすることなしに 変更ができます。 また、ALTER TABLEはトリガーの有効・無効化、 リプリケーションのためのテーブルタイプの定義、 リプリケーションリレーションの無効化、 テーブルに対してのチェックサムの設定を含みます。
CREATE COMMENT テーブルおよびアトリビュートに対してのコメントの作成
CREATE INDEX アトリビュートに対する検索支援機構(インデックス)のセットアップ
CREATE MODULE データ辞書へ パーシステントストアードモジュールの定義の作成
CREATE RANGE CHECK アトリビュートのデータ有効性チェックのセットアップ
CREATE REFERENTIAL アトリビュートのデータ参照制約のセットアップ
CREATE REPLICATION MASTER リプリケーションマスター割り当てをリプリケーションテーブルへ登録
CREATE REPLICATION REPLICATE リプリケーションリプリケート割り当てをリプリケーションテーブルへ登録
CREATE REPLICATE TABLE リプリケーションマスターテーブルからリプリケートテーブルの作成
CREATE TABLE テーブル名、アトリビュートの名前、アトリビュートのデータタイプを 含んだ新しいテーブルおよびリプリケートテーブルの作成
CREATE TRIGGER データ辞書へトリガーイベントのセットアップ
CREATE VIEW 1 つ以上のテーブルの 1 部から論理テーブルを作成
DISPLAY DATABASE データベース内のテーブルの表示
DISPLAY GRANT PRIVILEGE テーブルに対しての特権許可オプションの表示
DISPLAY MODULE パーシステントストアードモジュール定義の表示
DISPLAY PRIVILEGE テーブルに対してのアクセス特権の表示
DISPLAY TABLE テーブル構造の表示
DROP COMMENT テーブルまたはアトリビュートのコメントの削除
DROP INDEX アトリビュート上のインデックスの削除
DROP MODULE データ辞書のパーシステントストアードモジュール定義の削除
DROP RANGE CHECK アトリビュートのデータ有効性チェックの削除
DROP REFERENTIAL アトリビュートのデータ参照制約の削除
DROP REPLICATION MASTER リプリケーションテーブルのリプリケーションマスターエントリの削除
DROP REPLICATION REPLICATE リプリケーションテーブルのリプリケーションリプリケートエントリの削除
DROP TABLE 存在しているテーブルの削除
DROP TRIGGER データ辞書のトリガーイベントの削除
DROP VIEW 論理データベースの削除
GRANT PRIVILEGE テーブルまたはアトリビュートに対してのアクセス特権の変更
LOCK LEVEL テーブル上のロックレベルの設定
RENAME テーブルまたはアトリビュートの名前の変更
REVOKE PRIVILEGE テーブルまたはアトリビュートのアクセス特権の削除
UPDATE MODULE シェアードライブラリモジュールに パーシステントストアードモジュール定義をリンク


1.3 データ操作言語コマンド

データ操作言語コマンド (DML)は、データへのアクセスおよび操作することが可能です。 Empress DMLコマンドの構文および説明は、 Empress SQL: リファレンスマニュアルに 提供されています。 使用可能な DMLコマンドの要約は以下のとおりです。

表 1-2 データ操作言語コマンド

コマンド 説明
CALL ストアードプロシジャーまたは式の呼び出し
DELETE テーブルの不要なレコードの削除
EMPTY テーブルの全レコードの削除
INSERT テーブルへ新しいレコードを追加
LOCK TABLE トランザクションの間、テーブルをロック
SELECT テーブルからのデータ検索。 条件は1テーブル以上のジョインを含んだ 非常に複雑なものである可能性があります。
SORT 1つ以上のアトリビュートのテーブルソート
UPDATE テーブルの存在するレコードの更新

UPDATEDELETESELECTの各コマンドは、 更新、削除、検索を行うレコードを制限するために使用する WHERE句を指定することができます。

WHERE句は、テーブルから 設定した条件を満たすレコードに制限します。



1.4 データ制御言語コマンド

データ制御言語コマンド (DCL)は、データ整合性およびデータ保護 機能を提供します。 Empress DCLコマンドの構文および説明は、 Empress SQL: リファレンスマニュアルに 提供されています。 使用可能な DCLコマンドの要約は以下のとおりです。

表 1-3 データ制御言語コマンド

コマンド 説明
COMMIT WORK 現在のトランザクション中のデータベースに対する すべての変更を永続的に保存し、トランザクションを終了します。
DISPLAY WORK 現在のトランザクションのステータスを表示。また、 データベースに影響しているトランザクションのプロセスのステータスの表示。
ROLLBACK 現在のトランザクション中のコマンドの影響を戻します。 考えの変更や誤りから回復することを可能にします。
SAVEPOINT ネストしたトランザクションを起動し、トランザクションのセーブポイントを 設定します。 ROLLBACKコマンドによってセーブポイントにトランザクションを 戻すことが可能です。
START WORK COMMIT WORKコマンドが発行されるか、 ROLLBACKコマンドでキャンセルされない限り、 データベースに永続的に影響しないコマンドセットの開始。


1.5 管理インターフェイスコマンド

Empressは、SQLインターフェイスセッション内で 指定されたDDL、DML、DCLコマンドを 管理するためのコマンドセットを提供します。 管理インターフェイスコマンドの構文と説明は Empress SQL: リファレンスマニュアル に提供されています。 使用可能な管理インターフェイスコマンドの要約は以下のとおりです。

表 1-4 管理インターフェイスコマンド

コマンド 説明
CHANGE WORD コマンドを素早く、簡単に変更します。
DATABASE 現在のデータベースを表示。 また、コマンドの後に別のデータベース名を指定することで Empressを終了することなしにデータベースを変更することが可能です。
DO Empressを終了することなしに システムユーティリティやエディタなどを使用することで オペレーティングシステムとのコミュニケーションを取ることが可能です。
EDIT コマンドを変更するための簡単なラインエディタの起動
EXIT Empress SQLセッションの終了
HELP 現在のインターフェイスで使用可能なSQL言語の要約した オンラインリファレンスを提供します。
HOLD コマンドの構文エラーやテーブル名およびアトリビュート名によるエラーの チェックし、実行することなくコマンドの構文解析を行います。 HOLDは、コマンド履歴のリストから以前のコマンドを 現在のコマンドとして実行することも可能です。
RECALL コマンド履歴リストの検証および直前のコマンドの表示
RUN 再入力なしにコマンド履歴リストから直前のコマンドを再実行します。 RUNコマンドの後にファイル名を指定した場合、 その名前のファイルに格納されているコマンドを実行します。
RUN REPORT リポートスクリプトを指定することで Empressリポートライターを起動します。
SET 変数の設定をする。 特別なシステム変数は、 作業環境のカスタマイズすることが可能です。
SHOW 変数の値を表示
STORE オペレーティングシステムファイルにコマンド履歴リストを保存
UNSET 変数の解除


1.6 対話型インターフェイスコマンド

対話型インターフェイス コマンドは プロンプト表示とそれに対する応答による 対話形式のインターフェイスを提供します。 詳細な説明は、 Empress SQL: リファレンスマニュアルの 対話型インターフェイスコマンドに提供されています。 使用可能なEmpress 対話型インターフェイスコマンドの要約は以下のとおりです。

表 1-5 対話型インターフェイスコマンド

コマンド 説明
ALTER TABLE 既存のテーブルの構造の変更
CREATE TABLE アトリビュート名、アトリビュートのデータタイプなどの テーブル属性の入力を促すプロンプトが表示され、 対話的にテーブルを作成します。
INSERT テーブルに新しいデータを追加
UPDATE テーブル中の既存のデータの更新


1.7 データベース例

このマニュアルはチュートリアルではないことに注意してください。 このセクションで使用する例は、personnelloansauto partsおよびcustomersテーブルに基づき 説明されています。また、コマンドの出力例を示す場合、前のコマンドの影響を考慮していません。 コマンド構文の表記法は Empress SQL リファレンスマニュアル Empress 規約 を参照してください。

例において、4つのテーブルを含んだrepairsと呼ばれる データベースをこのマニュアルでは扱います。

  1. personnelテーブルは、 従業員番号、従業員名、電話番号、ローンのためのクレジット制限を 含む個人情報のテーブルです。 アトリビュート名は、numbername phonecredit_limitになります。 personnelテーブルでは、 各従業員に対して 1 レコードを持ちます。

  2. loansテーブルは、 従業員名、ローン日付、ローン金額を含む 従業員のローン情報のテーブルです。 アトリビュート名は、numbernamedateamount になります。 loansテーブルは、各従業員に対し、 複数レコードが存在する可能性があります。

  3. auto partsテーブルは、 アトリビュートとしてsupplierphonepart namepart no.、 とpriceを持ち、各種の自動車部品の 製造業者のレコードが記録されています。

  4. customersテーブルは、 アトリビュートとしてnameaddressaddressを持ち、 顧客名、住所、顧客に関するコメントが記録されています。

4つの各テーブルには以下のデータが収録されています。

*** Table: personnel ***

number name phone credit_limit
10 Kilroy 426-9681 $500.00
5 Mosca 544-2243 $750.00
17 Wladislaw 723-6073 $50.00
3 Jones 667-2951 $500.00
8 Peterson 978-6060 $250.00
4 Scarlatti 961-7363 $100.00
9 Jordan 964-3335 $250.00

*** Table: loans ***

number name date amount
5 Mosca 2 February 1990 $150.0
3 Jones 7 February 1990 $33.95
10 Kilroy 16 February 1990 $250.00
17 Wladislaw 27 February 1990 $55.00
3 Jones 3 April 1990 $25.00
5 Mosca 4 May 1990 $200.00
17 Wladislaw 12 May 1990 $25.00
8 Peterson 6 June 1990 $50.00
17 Wladislaw 25 June 1990 $75.00
3 Jones 12 August 1990 $300.00
4 Scarlatti 9 September 1990 $150.00
4 Scarlatti 14 October 1990 $125.00

*** Table: auto parts ***

supplier phone part name part no. price
AAA Automotive 922-8624 Hubcap 9836653 $18.40
AAA Automotive 922-8624 Fender rubber 9837521 $47.95
AAA Automotive 922-8624 Fender chrome 9837522 $67.95
Rick's Repairs 675-4436 Spark plugs 243 $1.25
Speedy Body Shop 643-8994 Rear wing 87003 $75.00
Speedy Body Shop 643-8994 Front wing 87005 $79.99
Rick's Repairs 675-4436 Radiator 493 $175.00
Auto Wholesalers 922-6219 Spray paint 2198 $1.25
Auto Wholesalers 922-6219 Chrome paint 3286 $1.99

*** Table: customers ***

name address comments
Mr. R. Lucas 1423 Beach Drive, Bayville, CA 92308

Can always be sold something new and flashy - like chrome and colored stuff, also little gadgets.

Mr. J. Phillips 63 Shore Bvde., Gull Point, CA 92309

Pays bills 2 months late -- needs to be threatened with a collection agency.

Mr. B. Wilson 14 Valley View Drive, Bayville, CA 92308 Good customer -- give credit if he asks for it.

Ms. C. Marshall 12 Berkeley St., Gull Point, CA 92309

Suggest vacuum & wash; she keeps 3 dogs. Look for dog hair collecting in engine.

Mr. J. Lee 3260 Church St., Gull Point, CA 92309

Father pays bills -- check with R. Lee before accepting a job, but don't let Johnny know you're doing so.

次の章では、personnelloansauto partsauto partsテーブルを使用し、 Empressの特徴およびコマンドについての広範囲にわたる 様々な解説を行います。

テーブルを作成するために使用したコマンドおよび構文は、 Empress SQL リファレンスマニュアルの CREATE TABLE セクションで参照することができます。