Transcript 第5章

5章 データベース言語SQL
p.79-90
1組
051019
1
5章 データベース言語SQL
P79~82
H102065 高埜直樹
H102086 外松真一
2
SQLとは
• SQLは関係モデルに基づく標準のデータ
ベース言語。
• データ定義からデータ操作まで1つの言語
体系で構成されている。
• ISO(国際標準化機構)によって標準化さ
れたデータベース言語。
3
SQLの規格
• 最初のSQLの国際規格
(ISO/IEC 9075)1987年に出版。
• 日本工業規格(JIS X 3005)1987年に制定。
これまでに出版されたSQLは、1987年度1989年度、
1992年度版がある。
SQL-87
SQL-89
SQL-92
と呼ばれている。
JIS X 3005規格もSQLに対応し、改訂されている。
4
SQL-87
• 関係モデルに基づくデータ定義
(スキーマ定義)
• データベース操作の基本的な機能を
データベース言語として規定。
5
SQL-89
• 参照制約を含む整合性機能の拡張が
行なわれた。
6
SQL-92
•
•
•
•
•
SQL2とも呼ばれる。
整合性制約の拡張
データ定義の操作(スキーマ操作)
動的SQLなど大幅な機能拡張が行なわれた。
クライアントサーバ環境での機能をサポートする
ため
SQL/CLI(call level interface)
SQL/PMS(persistent stored modules)
2つの機能が別冊パートで追加されている。
7
SQL/CLI(call level interface)
• SQL/CLIは
クライアントサーバ間で、
SQL文を実行するための
1つの結合形態を提供する
呼び出しインターフェース。
この仕組みは、動的SQLと類似した仕組み。
8
SQL/PMS
(persistent stored modules)
SQL/PMSは
SQLで記述されたプログラムを
データベースに格納、呼び出す機能
を持っている
• プログラムは、フロー制御を行なう文も提
供されている。
●
9
水準
• SQLー87, SQL-89は
SQLー92により置き換えられた。
• SQL-92には
初級SQL
中級SQL
完全SQL
という水準が設けられている。
10
新しいSQL
• SQLでは、SQL-92よりオブジェクト指向拡張
などを行うSQL3の開発が行われている。
• SQLを用いて
フルテキスト(全文情報)
地理情報
など
マルチメディアデータベース
アプリケーションパッケージ
の標準を開発するSQL/MM
(SQL multimedia and application packages)
の検討が行われている。
11
SQLのデータ構造
12
• SQLのデータベースのデータの構造
表
行
列
•SQLの表(table)、行
(row)、列(column)は関
係モデルのリレーション
タプル、属性に対応す
る。
13
14
• 関係モデルのリレーション
→タプルの非同値性という制約。
• SQL
・制約無し。
・マルチ集合から構成できる。
※マルチ集合・・・必ずしも異ならない対象の
順序付けられていない集まり。
15
表
• 表には・・・
・実表(base table)
→永続的または一時的に実在。
・ビュー表(viewed table)
→ある視点からとらえ仮想的。
・導出表(derived table)
→問合せの評価によって他の表から生成。
がある。
16
行、列
• 行
・表に挿入または削除できるデータの最小単位。
• 列
・マルチ集合
・同じデータ型(data type)または定義域でなくて
はならない。
・一つの列の一つの値は表から選択できて、更
新できるデータの最小単位。
17
データ型
• 表現可能な値の集まり。
・データ列型(文字列型(CHARACTER,CHARACTER VARYING)
・漢字列型(NATIONAL CHAR)
・ビット列型(BIT,BIT VARYING)
・数型(真数型
(NUMERIC,DECIMAL,INTEGER,SMALLINT)
・概数型(FLOAT,REAL,DOUBLE PRECISION))
・日時型(DATA,TIME,TIMESTAMP)
18
データベース論
テキストP83~P85のプレゼンテーション
発表日:平成16年11月17日(水)
H102137 山田 雄大
H102021 大島 翔太
19
SQLのデータ定義(スキーマ定義)(1)
スキーマ定義
定義域
表(列)
ビュー
権限
表名
文字集合
照合順
文字変換
などの定義と制約を記述
スキーマ操作
変 更
削 除
20
SQLのデータ定義(2)
[定義域](店名)
定義域名店名を定義
主キー
[実表1](支店)
支店名、所在地、
代表電話番号
を列名として定義
[実表2](社員)
社員番号、社員名、
所属支店、入社日
を列名として定義
「所属支店」は支店の
「支店名」を参照し、
参照元が削除、更新
されたら同様に更新
[ビュー表](みなと支店社員)
みなと支店だけの社員
21
からなる表を生成
SQLのデータ定義(3)
ビュー表とは
「社員」実表の列「所属支店」が
“みなと”のものだけを取り出し、
仮想的な表(ビュー表)を作成
ある条件を満たすタプルだけを
取り出して作成された仮想的な表
22
SQLのデータ定義(4)
図5・2のスキーマ定義を元に表を作成した例
[定義域](店名)
[実表1](支店)
[実表2](社員)
[ビュー表](みなと支店社員)
23
SQL-92で追加されたスキーマ操作
• スキーマ削除文(スキーマの破壊)
• 表変更文(列定義の追加・変更・削除・表制約定義の
追加・削除など)
• 表削除文(表の破壊)
• ビュー削除文(ビューの破壊)
• 定義域変更文(定義域制約定義の追加・削除など)
• 定義域削除文(定義域の破壊)
• 文字集合削除文(文字集合の破壊)
• 照合順削除文(照合惇の破壊)
• 文字変換削除文(文字変換の破壊)
• 表名削除文(表明の破壊)
• REVOKE文(権限の破壊)
24
データベース論
SQLのトランザクション
P88-90
H102008 池上直隆
H102403 花岡智史
25
SQLのトランザクション
• トランザクションはデータベースの処理単位
26
ACID特性
• ACID特性
– 原子性(Atomicity)
• 正常に完了(コミット)
• すべて無効(ロールバック)
– 一貫性(Consistency)
– 隔離性(Isolation)
– 持続性(Durability)
27
SQL-92
• SQLのトランザクションはSQL文の並びで構
成
– 正常に完了→COMMIT文で終了
– すべて無効→ROLLBAKC文で終了
• SQL-92はSETーTRANSACTION文が導入
– アクセスモード
– 隔離性水準
28
隔離性水準
• 隔離性水準には四つの
水準があり、次の三つ現
象の可能性がある
P1:汚れのある読み出し
(dirty read)
P2:繰り返し不可能読み出
し(non-repeatable read)
P3:幻(phantom)
29
P1: 汚れのある読み出し(dirty read)
トランザクションT1
トランザクションT2
トランザクションT1で行を更新
↓
T1がCOMMITされない状態
トランザクションT2がT1で
↓
更新した行を読み込む
T1がROLLBACKを実行
↓
T2が存在しなかった行を
読み込むことになる
30
P2: 繰り返し不可能読み出し
(non-repeatable read)
トランザクションT1
トランザクションT1で行を
読み込む
トランザクションT2
T2がT1の読み込んだ行
を更新や削除しCOMMIT
T1が再びその行を読み込む
と以前の呼び出しと異なる
31
P3: 幻(phantom)
トランザクションT1
トランザクションT1である
検索条件を満たす行の集合
を読み出す
トランザクションT2
T2がT1の検索条件を満
たす新しい行を生成する
T1が再び同じ検索条件で
読み込むと以前の呼び出し
と異なる
32
隔離性水準と現象
33