mysql视图

本文详细介绍了MySQL中的视图,包括视图的概念、作用、创建、删除、修改及使用方法,强调视图作为虚拟表简化查询、提高数据安全性和逻辑独立性的特性,并列举了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本章我们将学习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的语句,它将被忽略。

总结

提示:视图是一种虚拟的表,数据来源于从实际表中查询的结果,它可以简化查询操作,以及提高数据库的安全性,本章学习了视图的创建和使用语法,视图可以修改但是有比较多的限制条件,一般还是用于查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值