视图
# 什么是视图
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
2
# 删除视图
mysql> drop view emp_view;
Query OK, 0 rows affected (0.00 sec)
1
2
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
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
编辑 (opens new window)
上次更新: 2025/02/10, 20:20:37