Mysql 视图

什么是视图

视图是一个虚拟表,其内容由查询语句定义
和真实表一样,有行、列、字段等信息

视图特性

视图是对若干张基本表的引用
不存储具体数据,基本表数据发生变化,视图也会跟着改变
可以和基本表一样,进行 CRUD 操作,修改了视图基本表也会发生变化(有条件限制)

视图作用

安全性:让用户不具备基本表的权限,给他开放视图的权限,用户获取的数据也是经过处理的
方便:sql 代码少,一眼就能看明白

创建/修改视图

格式:CREATE OR REPLACE VIEW view_name AS DQL [WITH CHECK OPTION]

WITH CHECK OPTION 表示在修改视图数据的时候,会验证数据,满足条件才可以修改

示例1:

CREATE OR REPLACE VIEW view_boy_name AS (SELECT * FROM students WHERE gender = '');

上面这个视图没有使用 WITH CHECK OPTION,数据可以随意修改,并且在修改后会影响基表

示例2:

CREATE OR REPLACE VIEW view_stu_score AS (SELECT * FROM students WHERE score > 60) WITH CHECK OPTION;

这个视图在修改 score 字段时,只能大于 60 才让修改

删除视图

DROP VIEW 视图名,和删除表语法一样

使用视图

SELECT * FROM 视图名 WHERE ...,和查询表语法一样

不可更改的数据

不是基表的数据不能修改

示例:

CREATE OR REPLACE VIEW view_stu_max_score AS (SELECT MAX(score) AS max_score FROM students);

上面这个视图查询的字段是 max_score ,这个字段是通过计算得到的,不能修改;类似的还有 DISTINCT、GROUP BY 等查询出来的数据也是计算而得到的,不能修改

原文地址:https://www.cnblogs.com/huanggy/p/9495976.html