day13:视图

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

应用场景:

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

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

视图的好处:

   • 重用sql语句

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

  • 保护数据,提高安全性

扫描二维码关注公众号,回复: 7685566 查看本文章

一、创建视图的语法: 

  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子句中的表

猜你喜欢

转载自www.cnblogs.com/wuguiyu/p/11763910.html