データベース 第2部 データベース 2 データベース言語


 

2 データベース言語

2.1 データベース言語とは

データベースのスキーマを定義したり、実際にデータを参照するときに使用されるのがデータベース言語です。代表的なデータベース言語としては、SQL(Structured Query Language)と NDL があります。

SQL
関係データベース用のデータベース言語である。ISO(International Organization for Standardization; 国際標準化機構)により、標準仕様が制定され、日本でもJIS X3005として規格化されている。
NDL
CODASYL型(ネットワーク)データベース用のデータベース言語である。CODASYLにより制定されたが、日本でも、JIS X3004として規格化されている。

なお、ここでは、SQL について説明します。

2.2 SQLの構成

SQLは、関係データモデルで構築されたデータベースを操作する言語です。

データが表形式で表現されている関係データベース(Relational Database; RDB)を処理するためのSQLは、表の作成から表の操作、更新および削除まで可能です。この言語は、手続きを一つひとつプログラムで記述する必要がない非手続型言語なので、指示が単純で理解しやすいという特徴があります。

また、SQLは表にアクセスする具体的な命令を指示できるだけでなく、表示隊の定義および表を操作できる人の制限も指示できます。

SQLは、IBM社が開発したもので、ANSI(アメリカ規格協会)やISO(国際標準化機構)によって標準として規格化されています。ただし、「SQL:2003」や「SQL:2008」といった標準規格はあるものの、個々のRDBMSによる独自拡張が数多くあり、互換性の確保はなかなか進んでいません。なお、「Structured Query Language」という名称はIBM社の言語についてのものであり、標準規格のSQLの方は公式には何の略でもないということになっています。

2.2.1 データベース言語の分類

SQLは、関係データモデルで構築されたデータベースを操作する言語です。

関係データベースを処理するためのSQLは、表の作成から操作・更新および削除まで可能な、完結したデータベース言語で、

  • データ定義言語(DDL:Data Definition Language)
  • データ制御言語(DCL:Data Control Language)
  • データ操作言語(DML:Data Manipulation Language)

から構成されています。

(1) データ定義言語(DDL)

データ定義言語(DDL)は、データベースを使う準備として、データ群の構造であるスキーマを定義するための言語です。使用できる主なコマンドは次の通りです。

機能
CREATE DATABASE
CREATE SCHEMA
データベース名を定義する
CREATE TABLEテーブルを定義する
CREATE VIEWビューを定義する

(2) データ制御言語(DCL)

データ制御言語(DCL)は、データの読み込み、登録、変更、削除などを行なう権限を与えたり奪ったり、トランザクション(関連する複数の処理)の制御などを行います。使用できる主なコマンドは次の通りです。

機能
GRANT権限を与える
REVOKE権限を奪う
BEGINトランザクションを開始する
COMMITトランザクションを確定する
ROLLBACKトランザクションを破棄する

(3) データ操作言語(DML)

データ操作言語(DML)は、データの新規登録や、既存のデータの上書きや削除、条件に合致するデータの検索や抽出などを行うための言語です。使用できる主なコマンドは次の通りです。

機能
SELECTデータの読取り
INSERTデータの挿入
UPDATEデータの更新
DELETEデータの削除

2.2.2 言語方式

データベースに対してある処理をしようとするとき、その利用法は次のような方式があります。

独立言語方式

プログラムを作成する際に利用するプログラム言語とは別に用意された言語です。会話形でコマンドを入力して結果が出てくる形で利用します。特にこのように利用される言語を会話形SQL(Structure Query Language)と呼んでいます。クエリーとは問合せという意味で、データベースに問合せていろいろな操作(更新、検索、削除、追加等)をするという意味になります。

Microsoft社のAccessなどでは、利用者が指示した内容はクエリー機能(QBE方式:Query By Example)により、DBMS内でSQL文に変換・実行されます。

親言語方式

高水準言語(COBOL、FORTRAN、Cなど)にDMLを組み込んで利用する方式です。高水準言語を親言語と呼びます。親言語方式には組み込み方の違いにより2種類あります。

モジュール方式

プログラム内からDML部分をサブルーチンとして呼びだす方式です。

埋め込み方式

プログラム内にDMLを直接書き込んでしまう(埋め込む)方式です。