|
首先我们说一下视图的含义:
它的作用是将一条查询语句的查询结果自动存入一张表中,下一条查询语句可以像查询普通表一样来查询上一条语句创建出来的表。
这张自动创建出来的表就叫视图。
我们知道,之前我们在讲查询时,曾经说过,如果我们想要得到更为精准的数据,往往需要写一条很长的查询语句,而视图的意义就是为了降低单条查询语句的编写难度。
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的结果。
复制代码 查询视图:
结果如下:
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、删除视图
ok,以上就是关于视图的核心操作,大家可以动手自己测试一下。
|
|