一、含義
mysql5.1版本出現的新特性,本身是一個虛擬表,它的數據來自于表,通過執行時動態生成。
好處:
1、簡化sql語句
2、提高了sql的重用性
3、保護基表的數據,提高了安全性
二、創建
create view 視圖名
as
查詢語句;
三、修改
方式一:
create or replace view 視圖名
as
查詢語句;
方式二:
alter view 視圖名
as
查詢語句
四、刪除
drop view 視圖1,視圖2,...;
五、查看
desc 視圖名;
show create view 視圖名;
六、使用
1.插入
insert
2.修改
update
3.刪除
delete
4.查看
select
eg:insert into view2(name,password) value(1,2);//執行時視圖中和表中都會有記錄
//一般視圖用于查詢
注意:視圖一般用于查詢的,而不是更新的,所以具備以下特點的視圖都不允許更新
①包含分組函數、group by、distinct、having、union、
②join
③常量視圖
④where后的子查詢用到了from中的表
⑤用到了不可更新的視圖
七、視圖和表的對比
關鍵字 是否占用物理空間 使用
視圖 view 占用較小,只保存sql邏輯 一般用于查詢
表 table 保存實際的數據 增刪改查
![]()
create table if not exists test001
(
id int(11) PRIMARY key auto_increment,
name varchar(255)
);
create view view1 as select id,`name` from test001 where id<=20;
insert into view1 values(2,'TOM'); 可以插入
insert into view1 values(25,'TOM'); 可以插入 因為沒有檢查選項
create view view2 as select id,`name` from view1 where id>=10 with CASCADED check OPTION;
insert into view2 values(15,'TOM'); 可以插入
insert into view2 values(26,'TOM'); 插入失敗 因為檢查時CASCADED 相當于View1也有Cascaded檢查,但是只針對View2視圖==》View2視圖檢查條件為id>=10 id<=20
insert into view1 values(29,'TOM'); 可以插入
Local的使用只針對本視圖
create view View4 as select id ,`name` from view1 where id>=10 with local check option;
insert into View4 values(22,'TOM'); 可以插入
insert into View4 values(16,'TOM'); 可以插入
insert into View4 values(9,'TOM'); 可以插入
![]()
![]()