day13:视图

视图:MySQL从5.0.1版本开始提供视图功能。一种虚拟 存在的表,行和列的数据来自定义视图的查询中使用的表 ,并且是在使用视图时动态生成的,只保存了sql逻辑,不 保存查询结果 

 

应用场景:

  – 多个地方用到同样的查询结果

  – 该查询结果使用的sql语句较复杂 

 

视图的好处:

   • 重用sql语句

  • 简化复杂的sql操作,不必知道它的查询细节

  • 保护数据,提高安全性

 

一、创建视图的语法: 

  create  view  视图名称

  as

  查询语句;

一般是比较复杂的查询语句,简单的就没必要用视图了

 

例如:查询员工姓名是张三的部门名称

1、创建视图查看所有员工的姓名以及对应的部门名称

 

create view myvi 
AS 
SELECT ename,dname FROM employee e INNER JOIN department d ON e.departmentid = d.id;

 

2、使用

select * from myvi where ename='张三';

 

二、修改视图的语法:

方式一:

create   or  replace  view  视图名

as

查询语句;

 

例如:修改视图myvi

create or replace view myvi 
as 
select ename,dname,pay from employee e inner join department d on e.departmentid=d.id;

 

方式二:

alter  view  视图名

as

查询语句;

 

例如:修改视图myvi

alter view myvi
as 
select ename,dname from employee e inner join department d on e.departmentid=d.id;

 

三、删除视图的语法:

用户可以一次删除一个或者多个视图,前提是必须有该视图的drop权限。

drop  view  视图名,视图名,...;

 

例如:删除视图myvi

drop view myvi;

 

四、查看视图的语法:

desc  视图名;

 

视图的可更新性和视图中查询的定义有关系,以下类型的 视图是不能更新的。

  • 包含以下关键字的sql语句:分组函数、distinct、group  by 、having、union或者union all

  • 常量视图

  • Select中包含子查询

  • join

  • from一个不能更新的视图

  • where子句的子查询引用了from子句中的表

 

posted @ 2019-10-30 11:37  wuguiyu  阅读(218)  评论(0编辑  收藏  举报