mysql视图
前言
本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用,创建和使用视图以及修改视图这些方面讲解视图。
提示:以下是本篇文章正文内容,下面案例可供参考
一、视图是什么?
视图View是一种虚拟的表,本身不保存数据,内部封装了一条SELECT语句,数据来源于查询的一张或多张实际数据的表。
视图的结构和真实的表相同,也是有行和列组成,在视图上也可以进行增删改查的操作。
视图的作用;
视图主要用于查询,使用视图的优点是
简单;
视图可以将复杂的查询语句进行封装,用户使用时不需要关心表的结构、连接关系、筛选条件、分组和排序等等,只需要对视图进行简单的查询。
安全;
创建视图时,可以筛选掉一些不希望用户看到的行和列,也可以给视图设置访问权限,让不同级别的用户看到不同的视图,从而提高数据库的数据安全性。
逻辑独立性;
可以屏蔽真实表结构变化带来的影响。
二、视图的语法
1.创建视图
代码如下(示例):
create view视图名
2.删除视图
代码如下(示例):
drop view视图名;
3.修改视图
代码如下(示例):
replace view 视图名
4.视图使用(基于单表创建视图)
创建视图,显示学生姓名、性别、年龄和所在班级编号
代码如下(示例):
-- 创建视图
create view view1-- 定义视图名称
as select studentName,gender,age,classid from studentinfo;
-- 通过视图查询
select * from view1;
运行结果如下
5.视图使用(基于多表创建视图)
创建视图,显示学生姓名、性别、年龄和所在班级名称
代码如下(示例):
-- 创建视图
create view view3
as select studentName,gender,age,classname
from studentinfo s inner join classinfo c
on s.ClassID = c.ClassID;
-- 通过视图查询
select * from view3;
运行结果如下
6.视图使用(使用视图更新数据)
创建视图,显示学生姓名、性别、年龄和所在班级名称
代码如下(示例):
-- 通过视图查询
select * from view1;
-- 通过 view1 修改学生年龄
update view1 set age = age+1;
-- 查询学生表
select studentname,age from studentinfo;
7.视图使用(更新视图)
创建视图,显示学生姓名、性别、年龄和所在班级名称
代码如下(示例):
update view_stu_score set 分数 = 83 where 学号 = 1;
代码执行如下:
执行上面代码的结果是,更新失败,出现错误:
为什么有的视图可以更新,而有的会失败呢?
注意: 视图定义服从下述限制:
· SELECT语句不能包含FROM子句中的子查询。
· SELECT语句不能引用系统或用户变量。
· SELECT语句不能引用预处理语句参数。
· 在存储子程序内,定义不能引用子程序参数或局部变量。
· 在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。
· 在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。
· 在视图定义中命名的表必须已存在。
· 不能将触发程序与视图关联在一起。
在视图定义中允许使用ORDER BY,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDER BY的语句,它将被忽略。
总结
提示:视图是一种虚拟的表,数据来源于从实际表中查询的结果,它可以简化查询操作,以及提高数据库的安全性,本章学习了视图的创建和使用语法,视图可以修改但是有比较多的限制条件,一般还是用于查询。