2.1 视图概述

  • 虚拟存在的表,视图并不在数据库中实际存在,数据来源于定义视图时所使用的表
  • 使用时动态查询

作用

  • 简单:用户不需要关心多个表结构、关联条件和筛选条件,只相当于一个单表查询
  • 安全:对某列、某行能做到限制访问
  • 数据独立:屏蔽表结构变化对用户的影响

2.2 语法

  • 创建

    • 把select封装称view
    • select可以查询多个基本表或者源视图
      1. create view view_city_country
      2. as
      3. select ...
      4. [with [cascaded|local] check option]
  • 查询

    1. select * from view_city_country;
  • 更新数据(不建议)

    • 实际更新的是基表的数据

      1. update view_city_country set city = "" where city_id = 1;
    • 更新的限制

      1. with cascaded check option:必须满足所有针对该视图的所有视图的条件才可以更新(默认)
      2. with local check option:只要满足本视图的条件就可以更新
  • 修改视图

    1. ALTER VIEW <视图名> AS <SELECT语句>

    2.3 查看视图

  • show tables

    • 表和视图同时输出
  • show create view view_name;
    • 查看创建view时的语句

2.4 删除视图

  1. drop view [if exists] view_name;