ビューとは
ビュー VIEW = 仮想表
1つあるいは幾つかのテーブルを組み合わせてSELECTで作成した一時的な表(selectの実行結果)のことをビューと呼ぶ。
ビューを作成するSQLに名前を付けて保存するとビューをテーブルとして利用することが可能になる。
データベースで実際にレコードを記録するテーブルを実表と呼ぶ。
ビューは実表からselect文で作成された仮想表である。
2つの実表を商品番号フィールドで結合して1つの表にした例
学生名簿 と 科目名リスト と 受講登録 の例)
MySQLでビューに名前を付けて保存する方法:
create veiw ビュー名 (表示項目,....) as SELECT文
キーワードasに続けて SELECT 文を記述
(表示項目,.... )はSELECTの実行結果のビュー用のフィールド名を記述
例)
students 表の firstname と lastname を結合し id と name と age のフィールドを持つ myview としてビューを作成するSQL
CREATE VIEW myview ( id , name , age ) AS SELECT id , firstname & " " & lastname , age FROM students
データベースで実際に表示したり印刷する表は主にビューである。では、なぜビューをテーブル(実表)として最初からDBMSに用意しないのだろうか?
以下の様なビューを実表としてDBMSに用意しておくとデータの重複を生じ無駄であるばかりでなくデータの追加・更新・削除で関連する実表の修正が必要となり余分に処理コストがかかる。
・テーブルを結合したビュー
・テーブル(の結合結果を含む)から不要な部分を削除したビュー
基本的にDBMSには必要最小限の実表だけを用意し実表以外のテーブルが必要な場合はビューとしてその都度クエリーで実表から組み立てなおして表示する。
例外:テーブルの非正規化について調べよ。
select や delete や update コマンドにおいてテーブルを指定する部分でビュー名を記述することができる。
DBMSの設計と運用に関する概念。外部スキーマ・概念スキーマ・内部スキーマのレイヤー(階層)に分けた設計と運用を可能とするDBMSの構造。あるレイヤーの設計や運用の変更は他のレイヤーに影響を与えないようになっている。
準備:
スタート メニュー → xampp → xampp control
Apache Webサーバと MySQL データベースサーバ を start ボタンで起動する。
phpMyAdminの画面から以下を行う。
この演習では 主に SQL コマンド を利用して進める。
SQLの実行画面を開いてコマンドを入力し 実行ボタンで実行する。
新しいコマンドを実行するには入力済みのコマンドを削除して再入力すること。
手順:
SQL タブから、コマンド入力フォームを表示して以下を入力し実行ボタンを押す。
番号の部分は自分の学籍番号に置き換える。
create database db3120888
新しくデータベース db3120888が作成されていることをphpMyAdminの画面で確認する。
コマンドを以下のものに入れ替えて実行。
・phpMyAdminの画面からデータベース db3120888 をクリック
・SQLのタブをクリック
コマンド入力画面の上部が「サーバ 'localhost' 上でクエリを実行する」 から 「データベース db3120888 上でクエリを実行する」 になったことを確認する。
学籍簿を作成する。主キーの設定はこの時点では省略。後半の演習2で ID にインデックスを設定する。
create table STUDENT ( ID integer , NAME char(12) )
次のinsertコマンドでは、番号1、名前1は自分のものを利用する。名前はアルファベットを利用する。
insert into STUDENT values (1, '名前1' )
もう一名、適当にデータを追加しておく
insert into STUDENT values (2, '名前2' )
科目表を作成する。CLASS_IDを主キーに設定する。
create table CLASS ( CLASS_ID integer primary key, NAME char(12) )
insert into CLASS values ( 1, 'DataBase' )
履修表を作成する
create table STUDIES ( ID integer, CLASS_ID integer)
自分のSTUDENTテーブルの登録番号で科目番号1の科目の履修を記録する
insert into STUDIES values ( 1 , 1 )
ビューを作成する(名前と科目名の表)コンマやピリオドの打ち間違いに注意する。
※途中に入力ミスがあった場合は、create view の部分からやり直すこと。
create view STUDY_LIST (name , class) as
select student.name, class.name
from student, studies, class
where student.id=studies.id and studies.class_id=class.class_id
作成したビューを表示する。
select * from STUDY_LIST
1件科目を追加する(データは適当でよい)
insert into class values (2 , 'Program1' )
新規科目の CLASS_ID(studiesテーブルの2つ目のフィールド)を使って履修登録を追加する。学生は適当に何人か選ぶ。
insert into studies values ( 1 , 2 )
insert into studies values ( 2 , 1 )
先程登録したビューSTUDY_LISTを表示して履修状況を確認する。
select * from study_list
次のコマンドでstudy_listビュー経由でclassテーブルの科目名(name)を修正する。
update study_list set class = 'DataBase2' where class = 'DataBase'
修正結果がclassテーブルとstudy_listビューにも反映されることを確認する。
select * from study_list
select * from class
上記演習の実行結果:
テーブルが3つ、ビューが1つ作成されている。
phpMyAdminの画面のスクリーンショットを撮る。
3つのテーブルと1つのビューが左サイドメニューに表示されている。
ビューを表示するSQLの実行結果が画面に表示されている。
上記2点に注意してスクリーンショットを撮ること。
提出先はWebclass参照。