MySQL(10)—视图

视图

1. 什么是视图

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

  • 应用场景:

    • – 多个地方用到同样的查询结果
    • – 该查询结果使用的sql语句较复杂
  • 示例

    1
    2
    3
    4
    5
    6
    7
    create view my_v1
    as
    select studentname,majorname
    from student s
    inner join major m
    on s.majorid = m.majorid
    where s.majorid = 1;
1.1 常见题目
  1. 查询邮箱中包含a字符的员工名、部门名和工种信息
  2. 查询各部门的平均工资级别
  3. 查询平均工资最低的部门信息
  4. 查询平均工资最低的部门名和工资
1.2 视图的好处

• 重用sql语句

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

• 保护数据,提高安全性

2 创建或修改视图

  • 创建视图的语法:

    1
    2
    3
    create [or replace] view view_name
    as select_statement
    [with | cascaded | local | check option]
  • 修改视图的语法

    1
    2
    3
    alter view view_name
    as select_statement
    [with | cascaded | local | check option]

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

  • 包含以下关键字的sql语句:分组函数、distinct、group by 、having、union或者union all
  • 常量视图
  • Select中包含子查询
  • join
  • from一个不能更新的视图
  • where子句的子查询引用了from子句中的表

3. 删除视图

  • 删除视图的语法

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

    drop view [if exists] view_name,view_name …[restrict|cascade]

4. 查看视图

  • 查看视图的语法:

    show tables; 如果需要查询某个视图的定义,可以使用show create view 命令进行查看: show create view view_name \G