IT学問所
忍者ツール様の広告です→
DATABASE
データモデリング(工事中)
Oracle(工事中)
第2章 RDBMSの基礎(工事中)

2.1.RDBMSの定義
現在、最も普及しているのがデータを2次元の表で表現する関係データベース(Relational DataBase)です。 RDBはIBMの研究員であったE.M.Coddが1970年にA Relational Model of Data for Large Shared Data Banks という論文で発表したのが始まりと言われるモデルで、

(1)全てのデータを2次元のテーブルで表現する

(2)テーブルとテーブルは互いに関連を持ち、一つの集合として表現される

(3)SQLを用いてデータベースの定義、操作を行う

といった特徴を持ちます。 Coddはその後、更にDBMSがRDBMS足る基準を明確にすべく「コッドの12の規則」を提唱しましたが、 この規則は大変厳格なもので、全てを満たすRDBMSは現在存在しないといっても過言ではありません。 よって、RDBMSとは前述の3つの要件を満たすものと考えて差し支えないでしょう。

2.2.SQL
本項では、「SQLとは何か」「SQLはどのようにしてDBに理解されるのか」などを中心に 実例を交えながら、SQLについて解説していきたいと思います。

実は規格化されているSQL

皆さんはSQLがそもそもどのように策定されているかご存知でしょうか?実は、ISO(国際標準化機構) 及び ANSI(アメリカ国家規格協会)で制定されます。現在最も普及している仕様は1992年に制定された SQL92(別名:SQL2)で、過去のバージョンも含めると実に多くの規格が策定されています。

SQL92をはじめとする主要バージョンの規格概要は以下の通りです。

図:主なSQL規格(概要)

NO 制定年 通称 制定概要
1 1986年 SQL87 既に発表されていた多くのベンダの商用リレーショナル型データベースに実装されていた SQL の中でも、共通の基本部分だけに限定された最小限の規格。
2 1989年 SQL89 外部キーリレーションシップを適用するメカニズムのサポートが追加された。
3 1992年 SQL92 埋め込み SQL や動的 SQL などをはじめとする多様な機能が追加された。
4 1999年 SQL99 オブジェクト指向のアプローチによる統合や、プログラミングの拡張といった機能が盛り込まれている。
尚、各バージョンの詳細はこちらです

さて、これらISOの規定している標準のSQL仕様(以下、標準SQLと呼びます)を理解している事は非常に大切です。 なぜなら、「製品に左右されない根本的なデータベーススキルを習得できるから」です。標準SQL(特にSQL92)は 多くの商用、オープンソースのデータベースに(実装方法こそ違えど)実装されています。つまり「SQL92対応」と 記載があるだけで、標準SQLの知識があれば「これとこれは出来る/出来ない」という判断が出来るのです。SQLは データベースの操作・定義言語ですから、「SQLに出来ること=RDBMSに出来ること」といっても過言ではありません。 よって、本項では標準SQLにターゲットを絞ってSQLとは何かを解説して行きたいと思います(製品依存のSQLはまた 別掲載いたします)。

SQLは3つに分類される

SQLはその文法の性質上、大きく3つに分類できます。

(1)データ定義言語(DDL:Data Definition Language)

表(table)、行(Row)、列(column)、属性(type)、識別子(key)などデータベースの構成要素を定義するための言語です。

主な命令として、

CREATE(データベースオブジェクト(表、インデックス、制約など)の定義)

DROP (データベースオブジェクトの削除)

ALTER (データベースオブジェクトの定義変更)

があります。

(2)データ操作言語(DML:Data Manipulation Language)

データベースのデータの参照、追加、更新、削除を行うための言語です。

主な命令として、

SELECT - 検索する

INSERT - 挿入する (新規登録する)

UPDATE - 更新する

DELETE - 削除する

があります。

(3)データ制御言語(DCL:Data Control Language)

データに対するアクセス制御を行うための言語です。 主な命令として、

GRANT - アクセス権限の付与

REVOKE - アクセス権限の削除

があります。

その他に、これらの命令の適用範囲を補完するための機能として、SQL文を実行時に解釈する「動的SQL」や、 埋め込みSQLのための命令などが用意されています。次項からは最も良く利用するSELECT文を中心に一つ一つ の命令を確認して行きたいと思います。

Powered by RSSリスティング