原文鏈接http://zhhll.icu/2021/01/02/%E6%95%B0%E6%8D%AE%E5%BA%93/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E8%A7%86%E5%9B%BE/
MySQL視圖
視圖的概念
視圖是一種虛擬存在的表,行和列的資料來自于定義的視圖的查詢中使用的表,并且是在使用視圖中動態生成的,只保存sql邏輯,不保存資料
應用場景
- 多個地方使用同樣的查詢結果
- 該查詢結果使用的sql陳述句較為復雜
視圖
創建視圖
#語法結構
create view 視圖名
as 查詢陳述句
create view my_view as select s.name as student_name,c.name as class_name from student s join class c on s.classid = c.id;
#查看視圖 此時視圖里只有兩個欄位
desc my_view;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| student_name | varchar(20) | NO | | NULL | |
| class_name | varchar(20) | NO | | NULL | |
+--------------+-------------+------+-----+---------+-------+
使用視圖查詢
#注意:查詢時只可以使用視圖中的欄位進行查詢
select * from my_view where student_name = '張三';
修改視圖
有兩種方式修改視圖
方式一:有則修改,沒有則創建
create or replace view 視圖名
as 查詢陳述句
方式二:
alter view 視圖名 as 查詢陳述句
洗掉視圖
drop view 視圖名,視圖名,...
視圖中資料更新
在使用簡單地查詢陳述句作為視圖時,可以對視圖進行增刪改操作,而且對視圖的操作也會同樣使資料表完成相應的變化
但是包含以下特點的視圖不允許更新
- 分組函式、distinct、group by、having、union、union all
- 常量視圖
- select中包含子查詢
- join陳述句(可以update但是不可以insert和delete)
- 資料來自于一個不可更新的視圖
- Where 子句的子查詢參考了from子句中的表
由于本身的博客百度沒有收錄,博客地址http://zhhll.icu
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/259677.html
標籤:其他
下一篇:MySQL事務隔離級別
