MySQL视图(view)创建知识点详解_注意事项

视图(view)是一张虚拟表:

① 表示一张表的部分数据或多个表的综合数据,

② 其结构和数据是建立在对表的查询基础上

视图本身不存放任何数据,在使用SQL语句访问视图的时候,它返回的数据是MySQL从其他表中生成的。

为了满足不同人的关注需求,保证数据信息的安全性,可以创建多个视图。

创建视图

# view_name 为视图名字
# 在创建视图前,如果在数据库已存在同名视图,需要先删除再创建

# 删除视图
drop view if exists view_name;

#创建视图
create view view_name
as <select 语句>;

 如何创建视图,可参考下面的小例(举例是单表视图,其实还有多表视图)

比如想要创建班级是2班的学生信息视图

学生表

 # 创建2班的学生信息视图
CREATE VIEW view_stu
as select * FROM student WHERE gradeId=2;

如何看视图是否创建成功,如图

# 去学生表所在数据库 (其还要看你在创建时所use选择的数据库) 中的视图看是否有你所创建的视图名

 使用SQL语句查看视图

select 字段1, 字段2, …… from view_name;

如:查看view_student视图
select * from view_stu;

修改视图 

alert view 视图名字 as 新的select语句;

  

 视图注意事项:

利用视图更新数据实际上是对数据库中的原始数据表进行更新操作(即增 删 改 查),可以通过更新视图来更新视图涉及的相关表,视图更新和相关的数据表更新都是同步的。

1、当视图数据来自多个表时不允许添加、删除数据。

 创建Y2班学生的学号、姓名和班级名视图
student表

grade表

# 创建Y2班学生的学号、姓名和班级名视图
CREATE VIEW view_student
as select s.studentNo,s.studentName,g.gradeName FROM student s,grade g 
WHERE g.gradeID=s.gradeId AND gradeName='Y2';


# 删除视图中姓名为小苏的学生记录
drop from view_student WHERE studentName='小琪';

此时因为视图数据来自多个表,不能对数据进行删除,所以就会出现报错信息

“[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from view_student WHERE studentName='小琪'' at line 1”

2、如果视图定义中包含了group by 、union、聚合函数、以及其他一些特殊情况,就不能被更新了。更新视图的查询也可以是一个关联语句,但是有一个限制,被更新的列必须来自同一个表中。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值