SQL 视图
1. 定义
慕课解释:
视图
是一个或多个表记录的集合,其结构和数据是建立在其它表的查询基础之上的。视图可以理解为表,它可以像表一样操作,但是视图不是真实存在,它只是一张虚表。
2. 前言
本小节,我们将一起学习 SQL 中的视图
。
在一些场景中,有些查询的结果集很大,且我们需要在多处复用到这些结果集;如果每次都去查询一次,会耗费大量的时间,SQL 支持我们将这些数据集保存为视图,并且可以像操作表一样去操作这些视图。
本小节测试数据如下,请先在数据库中执行:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
id int PRIMARY KEY,
username varchar(20),
age int
);
INSERT INTO imooc_user(id,username,age)
VALUES (1,'peter',18),(2,'pedro',24),(3,'jerry',22),(4,'mike',18),(5,'tom',20);
3. 视图的创建与删除
视图的数据来源于查询。
其基础创建语法如下:
CREATE VIEW [view_name]
AS
SELECT [col] FROM [table_name];
视图也可以被删除,语法如下:
DROP VIEW [view_name];
其中 view_name
表示视图名称,col
代表字段名称,table_name
表示数据表名称。
3.1 例 1 新建视图
请书写 SQL 语句,查询 imooc_user 的所有 id
和 age
字段,并以该结果新建一个视图。
分析:
按照视图创建语法写出语句即可。
语句:
CREATE VIEW user_shorcut_view
AS
SELECT id,age FROM imooc_user;
创建成功后,结果如下:
# select * from user_shorcut_view;
+----+----------+
| id | username |
+----+----------+
| 1 | peter |
| 2 | pedro |
| 3 | jerry |
| 4 | mike |
| 5 | tom |
+----+----------+
3.2 例 2 删除视图
请书写 SQL 语句,删除 user_shorcut_view
视图。
分析:
使用 Drop 指令删除该视图即可。
语句:
DROP VIEW user_shorcut_view;
4. 操作视图
视图可以像数据表一样操作,且数据表的数据被更新后,也会同步更新到与之相关的视图中。
4.1 例 3 查询视图
请书写 SQL 语句,从 user_shorcut_view 视图中找出 id
为 2
的用户。
分析:
使用 Select 指令像查询数据表一样查询视图。
语句:
SELECT username FROM user_shorcut_view WHERE id = 2;
结果如下:
+----------+
| username |
+----------+
| pedro |
+----------+
5. 小结
- 视图很大程度上可以简化查询操作,还可以定制数据。
- 视图不易创建过多,由于更新表的同时也会更新关联的视图,因此视图会
降低
数据库的性能。