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 等查询出来的数据也是计算而得到的,不能修改