视图

# 什么是视图

view 站在不同的角度去看待统一份数据。

# 创建视图

只有 DQL 语句才能以 view 的形式创建。类似 as select * from employ;

mysql> create view emp_view as select * from employ;
Query OK, 0 rows affected (0.01 sec)
1
2

# 删除视图

mysql> drop view emp_view;
Query OK, 0 rows affected (0.00 sec)
1
2

# 视图的用途

我们可以面向视图对象进行增删改查操作,对视图进行增删改查会导致原表数据被修改。(视图的特点,操作视图会影响原表)

视图是用来简化 SQL 的,比如更新一张视图就可以更新多张表。

假设有一条非常复杂的 SQL 语句, 而这条 SQL 语句需要在不同的位置上反复使用。每一次使用这个 SQL 语句的时候都需要重新编写很长很麻烦。可以把这条复杂的语句以视图对象的形式创建,以后使用视图可大大简化开发且有利于后期维护。

我们面向视图开发的时候,可以像使用表一样使用增删改查操作。视图对象也是存储在硬盘上的,不会消失。

# 面向视图的插入

mysql> create view emp_view as select * from employ;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from emp_view;
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
| id | name | age  | gender | birthday            | salary | subsidy | overtimepay | depart_id |
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
|  1 | 王维 |   33 || 1923-01-01 00:00:00 |     98 |      87 |          98 |         1 |
|  2 | 李白 |   43 || 1913-01-01 00:00:00 |     88 |      89 |          98 |         2 |
|  3 | 杜甫 |   34 || 1929-01-01 00:00:00 |     96 |      79 |          98 |         1 |
|  4 | 郭靖 |   36 || 1923-01-01 00:00:00 |     96 |      99 |          98 |         2 |
|  5 | 王良 |   66 || 1943-01-01 00:00:00 |     90 |      88 |          98 |         1 |
|  6 | 刘邦 |   46 || 1953-01-01 00:00:00 |     93 |      88 |          98 |         2 |
|  7 | 王维 |   33 || 1923-01-01 00:00:00 |     98 |      87 |          98 |         1 |
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
7 rows in set (0.00 sec)

mysql> insert into emp_view values(8,'lili',33,'m','1923-01-01 00:00:00',22,33,44,1);  # 面向视图插入
Query OK, 1 row affected (0.01 sec)

mysql> select * from employ;
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
| id | name | age  | gender | birthday            | salary | subsidy | overtimepay | depart_id |
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
|  1 | 王维 |   33 || 1923-01-01 00:00:00 |     98 |      87 |          98 |         1 |
|  2 | 李白 |   43 || 1913-01-01 00:00:00 |     88 |      89 |          98 |         2 |
|  3 | 杜甫 |   34 || 1929-01-01 00:00:00 |     96 |      79 |          98 |         1 |
|  4 | 郭靖 |   36 || 1923-01-01 00:00:00 |     96 |      99 |          98 |         2 |
|  5 | 王良 |   66 || 1943-01-01 00:00:00 |     90 |      88 |          98 |         1 |
|  6 | 刘邦 |   46 || 1953-01-01 00:00:00 |     93 |      88 |          98 |         2 |
|  7 | 王维 |   33 || 1923-01-01 00:00:00 |     98 |      87 |          98 |         1 |
|  8 | lili |   33 | m      | 1923-01-01 00:00:00 |     22 |      33 |          44 |         1 |
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
8 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 面向视图的删除

mysql> delete from emp_view;  # 面向视图删除
Query OK, 8 rows affected (0.01 sec)

mysql> select * from employ;
Empty set (0.00 sec)
1
2
3
4
5

# 面向视图的更新

mysql> update emp_view set salary = 100 where id =1;  # 面向视图的更新
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from employ;
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
| id | name | age  | gender | birthday            | salary | subsidy | overtimepay | depart_id |
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
|  1 | 王维 |   33 || 1923-01-01 00:00:00 |    100 |      87 |          98 |         1 |
|  2 | 李白 |   43 || 1913-01-01 00:00:00 |     88 |      89 |          98 |         2 |
|  3 | 杜甫 |   34 || 1929-01-01 00:00:00 |     96 |      79 |          98 |         1 |
|  4 | 郭靖 |   36 || 1923-01-01 00:00:00 |     96 |      99 |          98 |         2 |
|  5 | 王良 |   66 || 1943-01-01 00:00:00 |     90 |      88 |          98 |         1 |
|  6 | 刘邦 |   46 || 1953-01-01 00:00:00 |     93 |      88 |          98 |         2 |
|  7 | 王维 |   33 || 1923-01-01 00:00:00 |     98 |      87 |          98 |         1 |
+----+------+------+--------+---------------------+--------+---------+-------------+-----------+
7 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上次更新: 2025/02/10, 20:20:37
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×