⑨MySQL(創建-查看-修改-刪除視圖、視圖新增-刪除-更新數據)

mysql.exe -h localhost -P 3306 -u root -p

use mydb;?????——???? 進入數據庫

查看:show index from 表名\G

desc:查看表結構

select * from 表名:查詢所有數據?

視圖(view):是一種有結構,但是沒結果的虛擬表

視圖優點:對外提供友好型,不同的視圖對應不同的數據

一、創建視圖

? ??????1)基本語法:create view 視圖名字 as select 語句;

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

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

-- 視圖:單表+多表

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 a left join my_class as

c on s.c_id=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=c.id;


二、查看視圖

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

-- 查看視圖創建語句

show create view my_v3\G????-- \G:橫向查看


三、修改視圖

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

-- 視圖使用

select * from my_v1;

select * from my_v2;

select * from my_v3;

-- 修改視圖

alter view my_v1 as

select id,name,age,sex,height,c_id from my_student;


四、刪除視圖

drop view 視圖名字;

-- 先創建v4

create view my_v4 as

select * from my_student;

-- 刪除視圖

drop view my_v4;


五、新增數據

1)多表視圖不能新增數據

-- 多表視圖不能插入數據

insert into my_v3 values(null,'bc20200008','張三豐','男',150,180,3,'Python1910','A204');

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

-- 將學生表的學號字段設置成不允許為空

alter table my_student modify number char(10) not null unique;

-- 單表視圖插入數據:視圖不包含所有不允許為空的字段

insert into my_v1 values(null,'張三豐',150,'男',180,3);

3)視圖是可以向基表插入數據的

-- 單視圖插入數據

insert into my_v2 values(3,'Python1910','A204');


六、刪除數據

1)多表視圖不能刪除數據

-- 多表示圖不能刪除數據

delete from my_v3 where id=1;

2)單表視圖可以刪除數據

-- 單表視圖刪除數據

delete from my_v2 where id=4;


七、更新數據

更新限制:with check option;

-- 多表視圖更新數據

update my_v3 set c_id=4 where id=6;

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

create view my_v4 as

select * from my_student where age>30 with check

option;

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

-- with check option決定通過視力更新的時候,不能將已經得到的數據age>30的改成<30的


-- 將視圖可以查到的數據改成年齡小于30

update my_v4 set age=29 where id=5;

-- 可以將修改數據讓視圖可以查到:可以改,但是無效果

update my_v4 set age=32 where id=3;

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

推薦閱讀更多精彩內容