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