DBのView
元々あるテーブルから任意のデータを取り出したり組み合わせたりして作った仮想的なテーブル
SQLのSELECT文につけたalias
DBに保存して管理される
(tableではなく)SQLのSELECT文自体が保存される
subqueryの一種とも見れる
構文
CREATE VIEW <view名> AS <select文>;
useacses
いつ使う #??
view使わなくても書けるが、nestが深くなって読みにくい時とか?
単純にそのSQLで生成されたtableを再利用したいときとか?
さらに、その仮想的なtableに命名することで、可読性が上がるから、とか?
簡単な例
https://www.db-fiddle.com/f/jg8a6f3iGAfekptfVzc3qJ/0
hogeviewを作ってる
その後、hoge viewからSELECTしてる
更新可能なview
これ名称これで合ってるの #??
どうなる #??
もとのtableに影響を及ぼすのか否か
https://itmanabi.com/db-view/#:~:text=更新可能なビューって?
いろいろ制限があるらしい
Materialized View
権限とかあるらしい
mysql error 1449: The user specified as a definer ('hogehoge'@'%') does not existみたいなエラーが出る..
DEFINERを定義している場合は、このへんで修正できるらしい
https://qiita.com/Ksaka9821/items/8bde9d105f17935ea2d2
https://www.softel.co.jp/blogs/tech/archives/5303
DEFINERを指定していないのにこのerrorが出た
この時は、そのuserhogehogeに対して、権限渡して一応動くようになった
https://stackoverflow.com/a/19707173
https://qiita.com/PallCreaker/items/0b02c5f42be5d1a14adb#いわゆる何でもできる管理者用ユーザ