人亦已歌 发表于 2023-1-19 22:40:32

Mysql数据库核心技术(二十二)创建视图 修改视图 查询视图

首先我们说一下视图的含义:
它的作用是将一条查询语句的查询结果自动存入一张表中,下一条查询语句可以像查询普通表一样来查询上一条语句创建出来的表。
这张自动创建出来的表就叫视图。
我们知道,之前我们在讲查询时,曾经说过,如果我们想要得到更为精准的数据,往往需要写一条很长的查询语句,而视图的意义就是为了降低单条查询语句的编写难度。

1、创建单表视图create view view8 as select * from user where age>20;
语句解释:
create view view8 --创建一张view8的视图
as --这张视图的数据来源
select * from user where age>20 --查询user表中age>20的结果。查询视图:
select * from view8;结果如下:


2、创建联表视图
为了进行以下的实验,我们再创建一张表
CREATE TABLE `stuinfo` (
`stuNo` char(6) NOT NULL,
`stuName` varchar(10) NOT NULL,
`stuSex` char(2) NOT NULL,
`stuAge` tinyint(4) NOT NULL,
`stuSeat` tinyint(4) NOT NULL,
`stuAddress` varchar(10) NOT NULL,
PRIMARY KEY (`stuNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `stuinfo` VALUES ('s25301', 'tom', '男', 18, 1, '北京');
INSERT INTO `stuinfo` VALUES ('s25302', 'berry', '男', 31, 3, '上海');
INSERT INTO `stuinfo` VALUES ('s25303', 'marry', '女', 22, 2, '北京');
INSERT INTO `stuinfo` VALUES ('s25304', 'ross', '男', 28, 4, '天津');
INSERT INTO `stuinfo` VALUES ('s25305', 'julie', '女', 23, 7, '河南');
INSERT INTO `stuinfo` VALUES ('s25318', 'guli', '男', 26, 6, '天津');执行以下语句创建联表查询视图
create view view3 as select * from user join stuinfo using(name);

执行结果如下:



3、修改视图
alter view view3 as select name,sex,stuAddress from user join stuinfo using(name);

执行结果如下:


修改视图其实是重新查询。

4、视图的应用
例如:以下语句
select * from user order by age desc group by sex;如果我们用视图操作应该这样做create or replace algorithm=temptable view view3 as select * from user order by age desc;
select * from view3 group by sex;
语句解释:
algorithm表示视图选择的算法(可选参数)
Merge: 当引用视图时,引用视图的sql语句与定义sql视图的语句合并(相当于只存储了sql).
Temptable:当引用视图时,根据视图的创建语句建立一个临时表.该临时表是一直存储在mysql数据库中的,除非人为删除;
Undefined(默认):未定义,自动,让系统帮你选.

通过观察上面的实验,大家可能会有疑问,似乎使用视图操作比不用还要复杂,事情并非如此,我们再讲解的时候,为了让大家更容易理解,所以使用了一条比较简单的查询语句,在实际工作中,大家一定会遇到非常复杂的查询情景,那时候就理解了。

5、删除视图
drop view view3;

ok,以上就是关于视图的核心操作,大家可以动手自己测试一下。




Вера 发表于 2023-1-30 23:39:24

支持楼主,努力学习更多的知识

hyjzan 发表于 2023-1-31 08:45:33

遇到了就是有福了,学mysql的赶紧过来!

任逍遥 发表于 2023-1-31 17:17:54

学mysql看过很多教程,全都讲不全,这次下定决心学会它

Liz 发表于 2023-2-1 07:50:24

自从知道慈众后,学习的激情一发不可收拾

说听看 发表于 2023-2-1 07:50:23

讲的好讲的妙 好教程

沙和尚 发表于 2023-2-1 22:53:10

原创教程,非常好!

yangliu 发表于 2023-2-2 13:57:46

遇到了就是有福了,学mysql的赶紧过来!

28795277 发表于 2023-2-15 02:09:24

就是好,回复一下,没什么可说的

avoidartor 发表于 2023-2-16 20:05:21

以前看过很多mysql教程也没弄明白,这次明白了
页: [1] 2 3 4
查看完整版本: Mysql数据库核心技术(二十二)创建视图 修改视图 查询视图