矢沢久雄 グレープシティ アドバイザリースタッフ

今回のキーワード
・データ型
・スキーマとビュー

図1●SQL文を入力するウインドウ
 SQLでフィールドのデータ型を意識しなければならないのは,DDLでデータベースを作成するときだけです。参考までに,以下にCREATEを使って,図1[拡大表示]のテーブルを定義するSQL文を示します。CHARやINTEGERは,文字列と整数を表すSQLのデータ型です。CHARのカッコ内には,文字数を指定します。SQL文の末尾はセミコロンで明示されるものなので,以下の例のように途中で改行しても問題ありません。

CREATE TABLE MeisiTbl(
Shimei CHAR(50),
Jusho CHAR(50),
Nenrei INTEGER
);

図2●データ型はDBMSのツールで指定する
 CHARやINTEGER以外にもSQLのデータ型はありますが,それらを覚える必要はないでしょう。なぜなら,データベースの作成のようにデータ型を指定するような状況では,SQL文の実行ではなく,DBMSが提供するツールを使うからです。これらのツールでは,生のSQLのデータ型でなく,分かりやすい日本語の表現でデータ型を指定するのが一般的です。図2[拡大表示]は,Accessでテーブルを作成しているところです。ここでは,データ型をリストの中から選択できるようになっています。DBMSの種類によって,指定できるデータ型の種類や名称に若干の違いがあることに注意してください。

スキーマとビュー

 最後に,またまたデータベース関連の用語をいくつか覚えていただきましょう。連載の第1回「SQLを学ぶ前に(3)---リレーショナル・データベースとは」で,列の属性,制約,及びテーブル間のリレーションなどの定義をスキーマと呼ぶと説明しました。ただし実際には,スキーマを3種類に分類して考えます(図3[拡大表示])。前回説明したスキーマは,正確には,概念スキーマに相当するものです。

図3●ANSIの3層スキーマ
 図3のように,スキーマを「内部スキーマ」,「概念スキーマ」,及び「外部スキーマ」の3種類に分類して考える手法を「ANSIの3層スキーマ」と呼びます。これらのスキーマは,同じデータベースを見る人の視点の違いで分類したものです。3層スキーマでデータベースを考えるのが一般的です(そのことを知っておいてほしいので,説明しています)。

 「内部スキーマ」は,ファイル名,ファイルのサイズ,ファイルの分割方法など,物理的な視点からデータベースを見たものです。「概念スキーマは」は,テーブルの定義,テーブル間のリレーションなど,開発者の視点からデータベースを見たものです。「外部スキーマ」は,ユーザーの視点からデータベースを見たものです。

 ユーザーの視点からデータベースを見たものは,「ビュー(view)」とも呼ばれます。ビューは,SELECT命令によって取得されたデータの集合体(データベース本体とは関係ない仮のテーブル)であると考えることができます。さらに,SQLには,データベースの中にあらかじめビューを作成しておくCREATE VIEW命令(これは2単語で1命令です)があります。CREATE VIEW命令によって作成されたビュー(仮のテーブル)は,実際のテーブルと同様にSQL文で操作できます。

 以下は,ShimeiとNenreiだけから構成されたビューを作成するSQL文です。ビューの名前は,MyViewとなっています。AS以下(修飾子です)に,SELECT命令を使ったSQL文が指定されていることに注目してください。このSELECT命令によって取得されたデータがビューとなるのです。SEELCT命令の結果がCREATE VIEW命令の対象になるとは,なかなか面白いですね!

CREATE VIEW MyView AS SELECT Shimei,Nenrei FROM MeisiTbl;

 上記のSQL文を実行したら,MyViewビューを通常のテーブルと同様に扱うことができます。以下は,MyViewビューのすべてのフィールドを取得するSQL文です。これまでテーブル名を指定していたFROMの後にビュー名を指定しています。

SELECT * FROM MyView;

 適切なビューを作成することで,効率的にデータベースを操作することが可能となります。この場合のビューは,ユーザーの視点でなく,開発者の視点にあるものかもしれませんが,実際のテーブル(概念スキーマ)とは異なるので,外部スキーマなのです。ほら,データベースの説明では,3層スキーマの用語がポンポン出てくるでしょう。だからこそ,用語とその意味を知ることは重要なのです。

 SQL文の基本構文をマスターできた皆さんは,実際のDBMSを使ってSQL文を実行してみたいと気持ちでウズウズとしてきたことでしょう。そこで次回は,SELECT命令を中心に,Accessを使って様々なSQL文を実行してみます。お楽しみに!

◎今回の復習
・DBMSの種類によって,指定できるデータ型の種類や名称に若干の違いがある
・ファイル名,ファイルのサイズ,ファイルの分割方法など,物理的な視点からデータベースを見たものを「内部スキーマ」という
・ユーザーの視点からデータベースを見たものを「外部スキーマ」あるいは「ビュー(view)」という