1 视图的定义
1 视图是一种虚拟的表,是一个或者多个表导出来的表
2 数据库中只存放视图的定义,并没有存放视图的数据,这些数据存放在原表中
3 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。
2 视图作用及缺点
作用
(1)、方便用户操作
要求所见即所需,无需添加额外的查询条件,直接查看
(2)、增加数据的安全性
通过视图,用户只能查看或修改指定的数据。
(3)、提高表的独立逻辑性
原有数据表结构的变化,不会影响视图,如果修改原有列,则只需修改视图即可。
缺点
1 能相对较差,简单的查询也会变得稍显复杂
2 修改不方便,特变是复杂的聚合视图基本无法修改
3 视图应用场景
权限控制的时候,不希望用户访问表中某些含敏感信息的列,比如salary...
关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息,简化操作;
4 视图基本操作
-- 视图的基本操作
/*#########创建单表视图#########*/
create view v1 as select * from product ;
create view v2 as select p_name ,P_price from product;
create view v3 (a,b) as select p_name ,P_price from product;
-- 创建多表视图
create view v4 as select e.e_name,d.d_name from emp e,dept d where e.d_id = d.d_id;
-- 查询视图中的数据
select * from v1 ;
/*#########查看视图#########*/
desc v4;
-- 查看视图的基本信息
show table status like 'v4';
-- 查看视图的详细信息
show create view v4;
/*#########修改视图#########*/
create or replace view v1 as select e_name from emp;
-- alter 语句来修改视图
alter view v1 as select d_name from dept;
-- 在视图中对原表数据 update insert delete 时 原表数据都会更新
-- 用update来更新
update v1 set d_name='测试2' where d_name='测试'
-- 在原来的表中插入一条数据视图也会变化
insert dept values(null,'运维',33);
-- 在视图删除数据
delete from v1 where d_name='运维';
/*#########删除视图#########*/
drop view v1;