視圖,視圖數據操作

視圖(view)

定義:是一種有結構,但是沒有結果的虛擬表

創建視圖

基本語句? create view 視圖名字 as select 語句;

創建單表視圖? 基表只有一個?

創建多表視圖? 基表來源至少兩個



--視圖: 單表+ 多表

? ?create view my_v1 as? ? ? ?select * from my_student

create view my_v2 as? ? ? ? ?select * from my_class?

create view my_v3? as? ? ? select * from my_student as s left join my_class as c on s.c_id? ? -----錯誤, id重復


-----多表視圖

create view my_v3? as? ? ? select s.*,c.c_name,c.room? from my_student as s join my_class as c on s.c_id?

外鏈接? 不符合條件不放入

內鏈接? 符合條件放入

--查看視圖創建語句? ? show create view my_v3\G


查看視圖

show tables[like] / desc 視圖名/ show create table 視圖名

show create view my_v3\G? --查看視圖創建語句

show views? 不可以v查看所有視圖

show * from my_v1

show * from my_v2

show * from my_v3

修改視圖

alter view 視圖名字? as 新的select語句

alter view my_ v1 as? ? ? ? ? ? ? ? ? select id,name,age,sex,height,c_id from my_student


刪除視圖

drop view? 視圖名字

create view my_v4 as? ? ? ? ? ? ? ? select * from my_student? ? ? ? ? ? ? ? ---刪除視圖v4? ? ? ? ? ? ? ? ? drop table my_v4? ?--刪除失敗(不能刪表)? ?drop? view my_v4? - -- 刪除成功

新增數據

{ 1 }多表視圖不能新增數據

---多表視圖不能插入數據? ?insert into my_v3 value(null,'bc20200008','張山','男',15,180,3,'Python1910','A204')? ? ? -----插入失敗

--將學生表的學號字段設置成不允許為空? ?alter tabel my_student modify number char(10) not null? unique? ??

{ 2 }? 可以向單表視圖插入數據,但是視圖中包含的字段必須有基表中所不能為空,或沒默認值的字段

---單表視圖插入數據? : 視圖不包含所有不允許為空的字段? insert into my_v1 values(null,'張山','男',15,180,3)

--單表視圖插入數據? ?insert? into my_v2 values(2,'Python1903','A204')

{ 3 }? 視圖是可以向基表插入數據的


刪除數據

多表視圖不能刪除數據

單表視圖可以刪除數據

更新數據

更新限制? with check option




---視圖? age 字段限制更新

create view my_v4 as?

select * from? my_student where age>30 with cheak option

--表示視圖的數據來源都是年齡大于30歲 是由where age 》30 的



--將視圖可以查到數據改成年齡小與30? ?update my_v4 set? age = 29 where id = 5??

---可以修改數據源讓視圖可以查到 可以該? ? 但是無效果

uodate my_v4 set? age = 32 where id=3

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容