视图

视图
含义:虚拟表,和普通表一样使用
mysql5.1版本出现的新特性,是通过表动态生成的数据
视图是一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时
动态生成的,只保存sql逻辑,不保存查询结果。
优点:
  简单化
  安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列
  数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加对视图没有影响;
  源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
缺点:
  性能相对较差,简单的查询也会变得稍显复杂
  修改不方便,特别是复杂的聚合视图基本无法修改
  总的来说还是不建议使用视图
视图与表的对比
      创建语法的关键字      是否实际占用物理空间    使用
视图        create view        只是保存了sql逻辑         增删改查,一般不能增删改查
表      create table        保存了数据          增删改查
应用场景:
-多个地方用到同样的查询结果
-该查询结果使用的sql语句比较复杂

create view v1
as
select stuname,majorname
from stuinfo s
inner join major m on s.majorid=m.id;

select * from v1 where stuname like '张%';
View Code

一、创建视图

use myemployees;
#1.查询邮箱中包含a字符的员工名、部门名和工种信息
create view myv1
as 
select last_name,department_name,job_title
from employees e
join departments d on e.department_id=d.department_id
join jobs j on j.job_id=e.job_id;
#2.查询各部门的平均工资级别
create view myv2
as 
select avg(salary) ag,department_id
from employees
group by department_id;
#使用
select myv2.ag,g.grade_level
from myv2
join job_grades g
on myv2.ag between g.lowest_sal and g.highest_sal;

#3.查询平均工资最低的部门信息
create view myv3
as 
select * from myv2 order by limit1;
View Code

二、视图的修改

方式一:
    alter view 视图名
    as
    查询语句
alter view myv3
as
    select * from employees;
方式二:
create or replace view myv3
as
    select avg(salary),job_id
from employees
group by job_id;
View Code

三、视图的删除

drop view myv1,myv2;
View Code

四、视图的查看

desc myv3;
show create view myv3;
View Code

五、视图的更新

视图一般不更新

posted @ 2019-11-16 13:11  徐大  阅读(174)  评论(0编辑  收藏  举报