# 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` | テーブルの存在するレコードの更新

`UPDATE`、`DELETE`、`SELECT`の各コマンドは、 更新、削除、検索を行うレコードを制限するために使用する `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 データベース例

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

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

1. `personnel`テーブルは、 従業員番号、従業員名、電話番号、ローンのためのクレジット制限を 含む個人情報のテーブルです。 アトリビュート名は、`number`、`name` `phone`、`credit_limit`になります。 `personnel`テーブルでは、 各従業員に対して 1 レコードを持ちます。
2. `loans`テーブルは、 従業員名、ローン日付、ローン金額を含む 従業員のローン情報のテーブルです。 アトリビュート名は、`number`、 `name`、`date`、 `amount` になります。 `loans`テーブルは、各従業員に対し、 複数レコードが存在する可能性があります。
3. `auto parts`テーブルは、 アトリビュートとして`supplier`、 `phone`、`part name`、`part no.`、 と`price`を持ち、各種の自動車部品の 製造業者のレコードが記録されています。
4. `customers`テーブルは、 アトリビュートとして`name`、 `address`、`address`を持ち、 顧客名、住所、顧客に関するコメントが記録されています。

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.

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

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