mysql获取视图数据执行后数据_MySQL之视图操作

MySQL之视图操作

视图

什么是视图

视图就是一条select语句执行后返回的结果集,所以我们在创建视图的时候,主要的工作就是在创建这条select语句上。

视图的特性

视图是对若干张基本表的引用,是一张虚表,查询语句执行的结果,不存储具体的数据(基本表发生了改变,视图也会跟着被改变)

和基本表一样,也可以增删改查操作(但是增删改操作会有一定的条件限定)

视图的作用

方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性

更加安全,数据库授权命令不能限制到特定的行和特定的列,但是通过合理的创建视图,可以把权限限定到行级和列级

使用的场合

权限控制的时候,不希望用户访问表中的某些含敏感信息的列,比如salary...

关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息、简化操作。

视图操作--创建视图&查询数据

注意:在创建视图的时候要注意,mysql视图不支持创建子查询,所以再用子查询的时候,要将其拆开使用

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--查到所有平均分数大于60分,并且为男性的学生的名字--SELECT student.sname as name,student.gender as sex, A.avg as avg FROM(--SELECT score.student_id as id, AVG(score.num) as avg FROM score GROUP BY score.student_id HAVING AVG(score.num) > 60--) AS A--LEFT JOIN student on student.sid = A.id WHERE student.gender = '男';--建立一个视图, 这个是失败的,因为mysql视图中不支持子查询的功能--CREATE VIEW v1 as(--SELECT student.sname as name,student.gender as sex, A.avg as avg FROM(--SELECT score.student_id as id, AVG(score.num) as avg FROM score GROUP BY score.student_id HAVING AVG(score.num) > 60--) AS A--LEFT JOIN student on student.sid = A.id WHERE student.gender = '男'--)

--分开分别建立视图一和视图二--CREATE VIEW v1 AS--SELECT score.student_id as id, AVG(score.num) as avg FROM score GROUP BY score.student_id HAVING AVG(score.num) > 60--CREATE view v2 AS--SELECT student.sname as name,student.gender as sex, v.avg a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值