←講義のツボメニューへ
格納したデータを引き出すしくみ(続)
【2000.06.16 1限 第9回】
今回(資料中2〜4)の主な参照箇所:文献[3]の第7回「リレーショナルデータベース言語(2)」のP.123〜134。
前回の復習〜SQL文の作成演習
以下を行うSQL文を記述せよ。
- 以下の3つのリレーションに対応するテーブル作成。なお、データ型は各自で判断せよ。
また、属性’運転日’のドメインは、’平日のみ’、’休日のみ’、’毎日’のいずれかである。
- リレーション’東北新幹線(下り)’は、属性として、’列車番号’、’列車名’、’運転日’、’東京時刻’、’大宮時刻’、’福島時刻’、’仙台時刻’、’盛岡時刻’を持ち、’列車番号’が主キーである。
- リレーション’秋田新幹線(下り)’は、属性として、’列車番号’、’列車名’、’運転日’、’盛岡時刻’、’大曲時刻’、’秋田時刻’を持ち、’列車番号’が主キーである。
- リレーション’山形新幹線(下り)’は、属性として、’列車番号’、’列車名’、’運転日’、’福島時刻’、’山形時刻’、’新庄時刻’を持ち、’列車番号’が主キーである。
- 次の列車の登録
- 秋田新幹線(下り)の列車で、’列車番号’=3001M、’列車名’=こまち1号、’運転日’=毎日、’盛岡時刻’=10:28、’大曲時刻’=11:24、’秋田時刻’=11:55
- 東北新幹線(下り)の列車で、’列車番号’=(03001、09001)、’列車名’=(やまびこ1号、こまち1号)、’運転日’=毎日、’東京時刻’=8:00、’大宮時刻’=8:23、’福島時刻’=null(通過の意)、’仙台時刻’=9:39、’盛岡時刻’=10:26。
- 検索
- 東北新幹線の平日下りの時刻表。
- 東北新幹線下りで福島を通過する列車の列車名。
- 東北、秋田新幹線直通下り「こまち号」の東京、盛岡、秋田の時刻表
- 山形新幹線で、7:00より前に福島を発車する新庄行きの列車名。
- 秋田新幹線(下り)で、休日のみ運転される列車の本数。
- 平日に東北新幹線(下り)で福島を通過する列車の本数(SQL2通り)
- 自分で検索内容を3つ考え、対応するSQL文。
ビュー表
- ビュー表(view table)=実際に格納されている表(=「実表(base table)」自身、または複数の実表の演算によって導出される仮想的な表のこと。実表が物理的実体がある(ディスク上にデータが格納されている)のに対して、ビュー表は物理的実体はなく、ビュー定義(図7−2)をしておくことにより、フィルタを通じて実表のデータを見ることになる。
SELECT-FROM-WHEREなどのSQL文の他、集約関数(AVG,MAX,など)、数式(例:税込み価格=値段×1.05)などがビュー表ではよく使われる。
- ビュー表のメリット:ユーザが操作のたびごとに実表からの導出を行わなくとも、DBS側でビュー(=実表から得られるユーザなりのデータの見方/データの使い方)を自動生成。
- ビュー表の定義は、実表と同様、データ辞書/システムカタログに書かれる。
- ビュー表を基にビュー表を定義することも可能。
- ビュー表内のタプルを物理的実体にしない理由:更新が波及するから。
- 実表に対するアクセス権限の分離にビュー表を使うこともある。
ビューの更新問題
- ここでは「更新」として、広義の更新を考える。すなわち、挿入、削除も含む。
- 実表での更新内容が一意に特定可能な場合を除いて、ビュー表のタプルの更新は認められない。
- 一般には、タプルの更新は実表において行う。
親言語インターフェース
- SQL:ループ制御文(while,forなど)や一般的変数、構造体、配列などははないので、細かい処理を記述しようとすると限界が生じる。
ex)100万件のデータをデータ値に応じて更新する、など。
- このようなSQLの昨日の脆弱さを補うために使われる一般のプログラム言語の事を、「親言語」あるいは「ホスト言語」と呼ぶ。
- 通常は、一般のプログラム言語でのプログラムの中にSQL文を埋め込んで(「埋め込みSQL」と呼ばれる)、SQL文が関数呼び出しのように処理される形式が採用されることが多い。(例:図7−5)
- [SQL文を含むプログラム]→[親言語のみのプログラム]→[アセンブラまたは機械語]という変換過程を経て、実行される。
SQLの解答は次の回で。
←講義のツボメニューへ
←鈴木研究室ホームへ