データベースのスキーマを定義したり、実際にデータを参照するときに使用されるのがデータベース言語です。代表的なデータベース言語としては、SQL(Structured Query Language)と NDL があります。
なお、ここでは、SQL について説明します。
SQLは、関係データモデルで構築されたデータベースを操作する言語です。
データが表形式で表現されている関係データベース(Relational Database; RDB)を処理するためのSQLは、表の作成から表の操作、更新および削除まで可能です。この言語は、手続きを一つひとつプログラムで記述する必要がない非手続型言語なので、指示が単純で理解しやすいという特徴があります。
また、SQLは表にアクセスする具体的な命令を指示できるだけでなく、表示隊の定義および表を操作できる人の制限も指示できます。
SQLは、IBM社が開発したもので、ANSI(アメリカ規格協会)やISO(国際標準化機構)によって標準として規格化されています。ただし、「SQL:2003」や「SQL:2008」といった標準規格はあるものの、個々のRDBMSによる独自拡張が数多くあり、互換性の確保はなかなか進んでいません。なお、「Structured Query Language」という名称はIBM社の言語についてのものであり、標準規格のSQLの方は公式には何の略でもないということになっています。
SQLは、関係データモデルで構築されたデータベースを操作する言語です。
関係データベースを処理するためのSQLは、表の作成から操作・更新および削除まで可能な、完結したデータベース言語で、
から構成されています。
データ定義言語(DDL)は、データベースを使う準備として、データ群の構造であるスキーマを定義するための言語です。使用できる主なコマンドは次の通りです。
| 文 | 機能 |
|---|---|
| CREATE DATABASE CREATE SCHEMA | データベース名を定義する |
| CREATE TABLE | テーブルを定義する |
| CREATE VIEW | ビューを定義する |
データ制御言語(DCL)は、データの読み込み、登録、変更、削除などを行なう権限を与えたり奪ったり、トランザクション(関連する複数の処理)の制御などを行います。使用できる主なコマンドは次の通りです。
| 文 | 機能 |
|---|---|
| GRANT | 権限を与える |
| REVOKE | 権限を奪う |
| BEGIN | トランザクションを開始する |
| COMMIT | トランザクションを確定する |
| ROLLBACK | トランザクションを破棄する |
データ操作言語(DML)は、データの新規登録や、既存のデータの上書きや削除、条件に合致するデータの検索や抽出などを行うための言語です。使用できる主なコマンドは次の通りです。
| 文 | 機能 |
|---|---|
| SELECT | データの読取り |
| INSERT | データの挿入 |
| UPDATE | データの更新 |
| DELETE | データの削除 |
データベースに対してある処理をしようとするとき、その利用法は次のような方式があります。
プログラムを作成する際に利用するプログラム言語とは別に用意された言語です。会話形でコマンドを入力して結果が出てくる形で利用します。特にこのように利用される言語を会話形SQL(Structure Query Language)と呼んでいます。クエリーとは問合せという意味で、データベースに問合せていろいろな操作(更新、検索、削除、追加等)をするという意味になります。
Microsoft社のAccessなどでは、利用者が指示した内容はクエリー機能(QBE方式:Query By Example)により、DBMS内でSQL文に変換・実行されます。
高水準言語(COBOL、FORTRAN、Cなど)にDMLを組み込んで利用する方式です。高水準言語を親言語と呼びます。親言語方式には組み込み方の違いにより2種類あります。
プログラム内からDML部分をサブルーチンとして呼びだす方式です。
プログラム内にDMLを直接書き込んでしまう(埋め込む)方式です。