Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。読書Oracleは放置(オイ)して、SQL本読書に戻ります。実は一度も作ったことがありません。いうよりクライアント側でVIEWに相当するものを作ってるんですよね。DBMSのVIEWとはなにかをちゃんと勉強していきます。見るサンプルテーブルVIEWって何?VIEWを使うメリットVIEWを使う時の注意点パフォーマンスの低下VIEWの作成と使用・削除方法VIEWの作成VIEWの使用VIEWの削除VIEWに対する更新まとめサンプルテーブル今回もこいつを使わせて頂きます。テーブル名はSampleです。更新で色々いじったせいでちょっとデータが変わってます。未設定VIEWって何?SELECT文が保存されたもの。実際のデータは持たない。プログラミング的に言えば、関数の定義なのかな。イメージはこんな感じです。ACCESSを使ったことがある人なら、クエリのようなものと考えればわかりやすいです。VIEWについて、本書では以下のように書かれています。SQLの観点から見ると、ビューは「テーブルと同じもの」これは、テーブルと同じようにFROM句でビューを指定できることから来ているのかな。VIEWを使うメリット毎日のデータチェック等でいちいちSELECT文を打つ手間が省けます。データそのものは毎日更新されるので、チェックする人はVIEWを使うだけですぐにデータが見れるようになります。簡単なSQL文ならいいですが、複雑なSQL文となると毎回打つのは手間ですし、打ち間違いでウガー!と叫ぶこともなくなります。記憶領域を圧迫しなくなります。VIEWを使う時の注意点パフォーマンスの低下VIEWはテーブルと同じものとして考えられるので、VIEWからVIEWを呼び出す事もできます。いうふうに、階層構造になったVIEWを多段VIEWと呼びます。階層構造が深くなれば、その分処理速度が低下してしまいます。本書では、鉄則としてビューにビューを重ねることは(なるべく)しない。以下の例では、V_sampleというビューを作成しています。Categoryが'文房具'のものを表示するようにしています。sec)VIEWの名称、表示するフィールドのリストの後にASをつけて後は普段通りのSELECT文です。BY句は使えないことに注意。BY文を使うVIEWです。Categoryごとにグループ化し、それぞれのカテゴリ名とVALUEの合計と平均値を表示します。SELECT句で列の別名に使うASとは違うので要注意!VIEWの使用Tableと同じような感覚で使えます。sec)カテゴリでグループに分けるVIEWもこの通り。BY句を使うことで並び替えることになります。sec)VIEWの削除TABLEと同様、DROPで削除できます。INSERT``DELETEがかけられます。以下の制限があります。BYを使わなければHAVINGは使えないので、除外しました。一言でまとめると、データを纏める(集約)しているVIEWに対しては更新不可能ということですね。できない理由は、集約されてしまうと、更新しようとしても集約された元データのどこを更新すればいいのかDBMSが判断できないからですね。上の制限にかからないVIEWに対してなら、更新ができます。先ほどの文房具だけ表示するV_bunboguビューに対してなら更新できます。sec)ちょっと気になったので、V_bunboguに文房具カテゴリ以外のデータを追加してみます。条件などは関係なく、VIEWを経由して元のテーブルに更新がかかる感じなのでしょうか。|+------+--------------------+---------+------------+--------------+ちゃんとデータが追加されています。まとめVIEWに対して更新というのが間違ってないかと思いました。元に、PostgreSQLはデフォルトではVIEWは読み取り専用です。VIEWに対する更新は、テーブルに対する更新を使う場合に比べてどのようなメリットがあるのか、が気になります。ググっても更新の説明ばかりでメリットについての説明はなかったので、ほとんどないのでしょうか。現場で実際にVIEWに対する更新を使うシチュエーションってどんなのがあるんでしょうか。個人的には、「やろうと思えばできるけどあんまり使わない方がいい」という印象です。次回は、サブクエリ・相関サブクエリについてやっていきます。VIEWについてTweet広告を非表示にする関連記事2017-02-02勉強は大変だが役に立つ逃げるは恥だが役に立つみたいなタイトルをつけてみました。今回から基礎RubyOnRailsをやっていきます。今回は引き続きSQLのお勉強、述語を勉強していきます。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。