mysql视图

视图View是一个虚表,它由一个sql查询来定义,可以当做表使用。与持久表不同的是,视图中的数据没有实际的物理存储,其实视图本质上就是一个SQL查询。

1. 视图的作用

  • 作为一个抽象装置,程序本身不关心基表结构,只需要按照视图定义来获取数据或者更新数据,因此视图在一定程序上也起到一个安全层的作用;

  • 视图能简化用户操作;

  • 视图使用户以多种角度看待同一数据;

  • 视图对重构数据库提供了一定程度的逻辑独立性;

  • 适当的利用视图可以更清晰地表达查询。

2. 视图操作实例

-- 查看基表数据
mysql> select * from user;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   25 |
|  2 | lisi     |   26 |
|  3 | wangwu   |   27 |
|  4 | nike     |   28 |
|  5 | lucy     |   29 |
|  6 | shell    |   30 |
|  7 | git      |   31 |
|  8 | svn      |   32 |
+----+----------+------+
8 rows in set (0.00 sec)
-- 创建视图
mysql> create view v_user
    -> as
    -> select * from user where age < 30;
Query OK, 0 rows affected (0.03 sec)
-- 查看视图数据
mysql> select * from v_user;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   25 |
|  2 | lisi     |   26 |
|  3 | wangwu   |   27 |
|  4 | nike     |   28 |
|  5 | lucy     |   29 |
+----+----------+------+
5 rows in set (0.01 sec)
-- 更新视图数据,也就更新了基表数据
mysql> update v_user set age=26 where name='zhangsan';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
-- 查看更新后的基表数据
mysql> select * from user;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   26 |
|  2 | lisi     |   26 |
|  3 | wangwu   |   27 |
|  4 | nike     |   28 |
|  5 | lucy     |   29 |
|  6 | shell    |   30 |
|  7 | git      |   31 |
|  8 | svn      |   32 |
+----+----------+------+
8 rows in set (0.00 sec)
-- 查看更新后的视图数据
mysql> select * from v_user;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   26 |
|  2 | lisi     |   26 |
|  3 | wangwu   |   27 |
|  4 | nike     |   28 |
|  5 | lucy     |   29 |
+----+----------+------+
5 rows in set (0.00 sec)

参考:

https://blog.csdn.net/wangsifu2009/article/details/6719847

《MySQL技术内幕》

Last updated