技術要素 - 9.データベース - 3.データ操作 - 2.データベース言語

Last Update : January 02 2021 16:00:25

     

1 データベース言語の種類

a. データベース言語の種類

データベース言語には、

  • データ定義言語 : DDL ( Data Definition Language )
    データベースを作成するために、データの論理的な構造や物理的な記憶場所などの定義情報(スキーマ)を記述する必要がある。
    スキーマ情報はDBMSに用意された DDL で記述し、データ辞書/登録簿(Data Dictionary / Directory : DD/D)に登録される。
  • データ操作言語 : DML ( Data Manipulation Language )
    データベースを操作するには、DML を使って、データの追加・更新・削除・問い合わせなどを行う。
  • データ制御言語 : DCL ( Data Control Language )
    データベースにおいてデータに対するアクセス制御を行うためのデータベース言語もしくはデータベース言語要素である。

実際に規定されているデーベース言語として以下のものがあります。

  • SQL(Structured Query Language)
    関係データベースを扱うための専用言語。
  • NDL(Network Database Language
    ネットワーク型データベースを扱うための言語。

データ辞書/登録簿(Data Dictionary / Directory : DD/D)
データベースに関するユーザー情報やアクセス方法、登録するデータの定義などを格納する辞書。
属性・名称・相互の関係・物理表現の記述などの情報が登録され、この辞書に基づきデータが管理される。 データの定義のデータの意味でメタデータとも呼ばれる。


2 データベース言語(SQL)

b. データ定義言語 (DDL : Data Definition Language )
  • 概念スキーマと外部スキーマを記述する言語(CREATE・DROP・ALTER文)
    CREATE DATABASE
    DROP DATABASE
    ALTER DATABASE
  • CREATE (データベースオブジェクト(表、インデックス、制約など)の定義)
    CREATE TABLE
    CREATE VIEW
  • DROP (データベースオブジェクトの削除)
    DROP TABLE
  • ALTER (データベースオブジェクトの定義変更)
    ALTER TABLE

c. データ操作言語(SELECT文) (DML : Data Manipulation Language )

概念スキーマで、データ操作のための言語(SELECT・UPDATE・DELETE・INSERT文)
SELECT ~ FROM ~ WHERE (表データの検索、結果集合の取り出し)
INSERT INTO (行データもしくは表データの挿入)
UPDATE ~ SET (表を更新)
DELETE FROM (表から特定行の削除)


d. その他のデータ操作言語

データに対するアクセス制御を行うための言語(GRANT・REVOKE・SET TRANSACTION・BEGIN・ROLLBACK・SAVEPOINT・LOCK文)
GRANT (特定のデータベース利用者に特定の作業を行う権限を与える)
REVOKE (特定のデータベース利用者から既に与えた権限を剥奪する)
SET TRANSACTION (トランザクションモードの設定(並行トランザクションの分離レベル(ISOLATION MODE)など))
BEGIN (トランザクションの開始)
COMMIT (トランザクションの確定) ROLLBACK (トランザクションの取り消し)
SAVEPOINT (任意にロールバック地点を設定する)
LOCK (表などの資源を占有する)


e. 埋込型SQL

SQL は対話型ばかりではなく、COBOL , FORTRAN , PL/1 などのプログラムなかに埋め込んで利用することができる。ただし、プログラムは1行ずつしか処理できないので、特別の指定をする必要がある。

カーソル
SQL で問合せをすると、複数行のデータが取り出される。しかし、プログラミング言語では、1行のデータしか取り扱えない。そこでデータを1行ずつ取り出して、プログラムで扱えるように引き渡す必要がある。この機能を果たすものをカーソルという。

  • DECLARE
    カーソル宣言によりカーソルを定義します。この問合せ式に合致したデータの表が、操作の対象となる。
  • OPEN
    カーソルを開くと上の問合せ式が実行され、表が作成され、カーソルが表の先頭の行の前に位置づけられる。
  • FETCH
    表からカーソルが示す行のデータを取り出し、プログラム中の変数に割り当て、プログラムで処理を行う。これを表のデータが無くなるまで続ける。
  • CLOSE
    カーソルを閉じることによって作成された表が消滅する。

f. SQLの制約

制約とは、テーブルの値に持たせるルールのことです。制約を定義して登録されるデータにルールを持たせることで、データを常に正しい状態に保てます。 制約にはいくつかの種類がありますが、大きく分けて「列制約」と「テーブル制約」の2種類があります。列制約は1つの列に対する制約です。テーブル制約は複数の列にまたがる制約で、テーブルに対する制約です。制約はCREATE TABLE文に記述します。また、ALTER TABLE文でテーブルに対する既存の制約を変更することも可能です。

NOT NULL制約
NOT NULL制約は、列の値でNULLを禁止するものです。入力必須となる列に定義します。NOT NULL制約は列に対する制約なので、列制約でのみ定義できます。

一意制約
一意制約は、列内で同一の値を禁止するものです。ID列など、同一の値を許さない列に定義します。複数個の列の組で同一の値を許さない場合には、テーブル制約で一意制約を指定します。

主キー制約(PRIMARY KEY制約)
主キー制約(PRIMARY KEY制約)は、NOT NULL制約と一意制約を合わせたものと同じですが、テーブルに対して複数個の主キー制約を定義することはできません。主キー制約は、主キーとなる列に定義します。列制約で定義できる主キー制約は、1個の列に対する主キーを定義する場合です。複数の列の組み合わせに対して主キーを定義する場合には、テーブル制約で定義します。

CHECK制約
CHECK制約は、データの値に対する条件を定義するものです。「条件に値の範囲を定義し、値の範囲外のデータは受け入れない」という場合に使用します。例えば、条件に「1 <= 列名 AND 列名 <= 100」と指定すると、その列の値に1~100以外を設定できなくなります。

整合性制約
整合性制約は、2つのテーブルの間でデータの整合性を保つための制約です。2つのテーブルで親子関係を持ち、子テーブルに入力される値が必ず親テーブルに存在しなければならないというものです。例えば、商品テーブルを親テーブル、注文テーブルを子テーブルとします。このとき「注文テーブルの商品ID列の値は、商品テーブルの商品ID列に存在しなければならない」という制約が整合性制約です。




     

www.it-shikaku.jp