Mysql 视图

理解视图, 创建,修改,使用视图

了解视图

  视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候, 主要的工作就落在创建这条SQL查询语句上。
视图是对若干张基本表的引用, 一张虚表, 查询语句执行的结果, 不存储具体的数据(基本表数据发生了改变, 视图也会跟着改变)
可以跟基本表一样, 进行增删改查操作(ps:增删改操作有条件限制)
方便操作, 特别是查询操作, 减少复杂的SQL语句, 增强可读性
更加安全, 数据库授权命令不能限定到特定行和特定列, 但是通过合理创建视图, 可以把权限限定到行列级别

创建视图

DROP VIEW IF EXISTS 'view_name';
CREATE VIEW 'view_name'
AS (
    SELECT ta.id,ta.name, tb.age, tb.sex
    FROM tablea AS ta
    LEFT JOIN tableb AS tb ON ta.id=tb.ta_id
    WHERE ta.id>20
);

操作视图

  1. SELECT 操作
    SELECT name,age,sex FROM view_name WHERE id=2
    和普通的表一样, 查询操作视图搜索即可

  2. CRUD 操作
    UPDATE view_name SET name='xx',age=18 WHERE id=2
    如果不出意外, 你会得到错误提示!! 因为不能在一张由多张关联表连接而成的视图上做同时修改两张表的操作

视图与表是一对一关系情况:如果没有其它约束(如视图中没有的字段, 在基本表中是必填字段情况), 是可以进行增删改数据操作

查看视图

  • DESCRIBE
    通过 DESCRIBE view_name 查看视图的字段定义
  • SHOW CREATE VIEW
    通过SHOW CREATE VIEW 查看视图的创建语句

修改视图

CREATE OR REPLACE VIEW view_name
AS (
    SELECT ta.id,ta.name, tb.age, tb.sex
    FROM tablea AS ta
    LEFT JOIN tableb AS tb ON ta.id=tb.ta_id
    WHERE ta.id<=20
)

删除视图

DROP VIEW IF EXISTS view_name

WITH CHECK OPTION

如果创建视图时,使用WITH CHECK OPTION选项, 如:

DROP VIEW IF EXISTS 'view_name';
CREATE VIEW 'view_name'
AS (
    select id, name, age
    from my_table
    where age>20
    )
WITH CHECK OPTION
  1. 对于UPDATE,有WITH CHECK OPTION, 要保证UPDATE后, 数据要被视图查询出来
  2. 对于DELETE,有无WITH CHECK OPTIOn都一样
  3. 对于INSERT,有WITH CHECK OPTION, 要保证INSERT后, 数据要被视图查询出来
  4. 对于没有WHERE 子句的视图, 使用WITH CHECK OPTION是多余的
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 视图: 通俗的讲,视图就是一条SELECT语句执行后返回的结果集。 为什么要用到视图: 如果某个子查询结果出现的非...
    机智的老刘明同志阅读 455评论 0 1
  • 什么是视图 视图(View)是一种虚拟存在的表。其内容与真实的表相似,包含一系列带有名称的列和行数据。但是视图...
    IT的咸鱼阅读 202评论 0 0
  • 前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了。那么你知道视图和表的区别吗?你知道创建及使用视图要...
    MySQL技术阅读 190评论 0 0
  • 视图 一、定义 也称虚表,视图是表中数据的逻辑表示。视图本身并不存储任何数据,而真正的数据是存在于基表中的。视图也...
    唯老阅读 220评论 0 0
  • 创建视图 CREATE VIEW 视图名 AS 查询语句 [WITH CHECK OPTION] - 这里WITH...
    佳展阅读 289评论 0 0