mysql使用--视图

1.创建视图
语法:CREATE VIEW 视图名 AS 查询语句
如:CREATE VIEW male_student_view AS SELECT s1.number, s1.name, s1.major, s2.subject, s2.score FROM student_info AS s1 INNER JOIN student_score AS s2 WHERE s1.number = s2.number AND s1.sex = '男';
这样此后可以使用male_student_view代替SELECT开头的一整个查询语句。

2.使用视图
视图也称为虚拟表,可像表那样对视图进行一些增删改查操作,不过对视图的相关操作会被映射到那个又臭又长的查询语句对应的底层的表上。查询语句的查询列表可被当作视图的虚拟列。

平时怎么从真实表中查询信息,就可怎么从视图中查询信息。
如:SELECT * FROM male_student_view;
如:SELECT subject, AVG(score) FROM male_student_view WHERE score > 60 GROUP BY subject HAVING AVG(score) > 75 LIMIT 1;
值得注意的是,SELECTs1.number, s1.name, s1.major, s2.subject, s2.score这些列对应到male_student_view虚拟表的列名为number, name, major, subject, score
虚拟表值得是,身份上,使用上等价于表。但该表并非存在于磁盘。而是使用时通过查询语句动态生成的。
如:SELECT * FROM male_student_view WHERE number IN (SELECT number FROM student_info WHERE major = '计算机科学与工程');

3.使用视图来创建新视图
如:CREATE VIEW male_student_view2 AS SELECT number, name, score FROM male_student_view;

4.创建视图时指定自定义列名
视图的虚拟列其实是这个视图对应的查询语句的查询列表。可在创建视图时候为它的虚拟列自定义列名,这些自定义列名需用小括号括起来,写到视图名后面,并使用逗号将各个虚拟列的自定义列名分开。需注意,自定义列名一定要与查询列表中的表达式一一对应。
如:CREATE VIEW student_info_view(no, n, m) AS SELECT number, name, major FROM student_info;
有了自定义列名后,之后对视图的查询必须要基于这些自定义列名。
如:SELECT no, n, m FROM student_info_view;

5.查看和删除视图
5.1.查看有哪些视图
可以采用查看表的方式查看视图。
如:SHOW TABLES;

5.2.查看视图的定义
如:SHOW CREATE VIEW 视图名\G

6.可更新的视图
有的视图是可更新,即可在视图上执行INSERT,DELETE,UPDATE等。对视图执行INSERT,DELETE,UPDATE的本质,是对该视图对应的底层表中的数据进行增、删、改操作。

比方说,视图student_info_view的底层表是student_info,如我们对student_info_view执行INSERT、DELETE、UPDATE语句,就相当于对student_info表执行INSERT、DELETE、UPDATE语句。
如:UPDATE student_info_view SET n = '狗哥哥' WHERE no = 20210101;
会实际修改student_infonumber20210101行的name列。

如果一个视图是可更新的,则这个视图中的每一条记录必须与底层表中的每一条记录一一对应,否则该视图是不可更新的。

7.删除视图
语法:DROP VIEW 视图名;
如:DROP VIEW male_student_view2;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值