「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

データベースとSQL(10/20)

はじめに

 データ分析を行う場合、データの管理運用、蓄積も重要な論点となる。そのためにはSQLやデータベースの知識が求められる。そこでまずは

を基にSQLの勉強をしていく。

7. 複雑な問い合わせ

  • \mathrm{SQL}の観点ではビューはテーブルと同じである。両者の違いはテーブルの中には「実際のデータ」が保存され、ビューの中には\mathrm{SELECT}文が保存されている点が相違する。ビュー自体はデータを持たない。
  • ビューを用いると必要なデータが複数のテーブルにまたがる場合などの複雑な集約を楽に行うことができる。
  • 頻用する\mathrm{SELECT}文をビューにすることで使いまわすことができる。
  • ビューを作るには\mathrm{CREATE} \mathrm{VIEW}文を用いる。
  • ビューには「\mathrm{ORDER} [tex:\mathrm{BY}句は使えない」「ビューに対する更新は不可能ではないものの制限がある」という2つの制約がある。
  • ビューを削除するには\mathrm{DROP} \mathrm{VIEW}文を用いる。

7.1 ビューとテーブル

 ビューは\mathrm{SQL}の観点ではテーブルと同じものである。実際\mathrm{SELECT}文においては相違しない。しかし実際にデータを保存しているか否かという点で相違する。
 ビューは\mathrm{SELECT}文そのものを呼び出して一時的に仮想テーブルを構成する。

7.2 ビューのメリット

 ビューには3つのメリットがある。

  1. データを保存しないため、記憶装置の容量を節約できる。
  2. 頻繁に用いる\mathrm{SELECT}文を毎回書かなくとも使いまわすことができる。
  3. 元のテーブルと連動して最新状態へ自動的に更新される。

7.3 ビューの構成方法

 ビューを作成するには\mathrm{CREATE} \mathrm{VIEW}文を用いる。

CREATE VIEW ビュー名(<ビューの列名1>,<ビューの列名2>,……)
AS
<SELECT文>

\mathrm{SELECT}文の列とビューの列は並び順で一致し、\mathrm{SELECT}文の最初の列はビューの1番目の列、\mathrm{SELECT}文の2番目の列は…、と一致する。ビューの列名はビュー名の後ろのリストで定義する。

7.4 ビューに対する検索

 ビューを\mathrm{FROM}句に指定したときの検索は、

   (1) 最初にビューに定義された\mathrm{SELECT}文が実行される。
   (2) その結果に対して、ビューを\mathrm{FROM}句に指定した\mathrm{SELECT}文が実行される。

という2段階を踏む。すなわちビューに対する検索では常に2つ以上の\mathrm{SELECT}文を実行する。
 ただしビューを重ねることは可能であるものの、パフォーマンス低下を招くため推奨しない。

7.5 ビューの制限事項

  • ビュー定義で\mathrm{ORDER} \mathrm{BY}句を用いることはできない。
  • ビューでの更新は基本的にできない。ただしいくつかの条件を満たしていれば可能である。
7.5.1 ORDER BY句

 ビューについても行に順序が与えられていない。そのため一部許容するDBMSは存在するものの、ほとんどでは許容しない。

7.5.2 ビューに対する更新

 いくつかの条件を満たしていれば、\mathrm{INSERT}\mathrm{DELETE}\mathrm{UPDATE}などの更新系\mathrm{SQL}を許容する。

  (1) \mathrm{}句に\mathrm{}が含まれていない。
  (2) \mathrm{}句に含まれるテーブルが1つのみである。
  (3) \mathrm{GROUP} \mathrm{BY}句を使用していない。
  (4) \mathrm{HAVING}句を使用していない。

しかし集約したビューは、元になるテーブルのデータとの整合が取れなくなるため、更新できない。

7.6 ビューを削除する

 ビューを削除するには\mathrm{DROP} \mathrm{VIEW}文を用いる。

DROP VIEW ビュー名
プライバシーポリシー お問い合わせ