【MySQL】08.视图
视图就是一个由查询到的内容定义的虚拟表。它和真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
1. 基本使用
mysql> select * from user;
+----+-----+-----------+
| id | age | name |
+----+-----+-----------+
| 1 | 56 | 欧阳锋 |
| 2 | 26 | 黄蓉 |
| 3 | 18 | 杨过 |
| 4 | 16 | 小龙女 |
| 5 | 36 | 郭靖 |
+----+-----+-----------+
5 rows in set (0.00 sec)-- 创建视图
mysql> create view myview as select id,name from user;
Query OK, 0 rows affected (0.01 sec)mysql> select * from myview;
+----+-----------+
| id | name |
+----+-----------+
| 1 | 欧阳锋 |
| 2 | 黄蓉 |
| 3 | 杨过 |
| 4 | 小龙女 |
| 5 | 郭靖 |
+----+-----------+
5 rows in set (0.00 sec)-- 更改视图
mysql> update myview set name = 'aaa' where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from myview;
+----+-----------+
| id | name |
+----+-----------+
| 1 | aaa |
| 2 | 黄蓉 |
| 3 | 杨过 |
| 4 | 小龙女 |
| 5 | 郭靖 |
+----+-----------+
5 rows in set (0.00 sec)mysql> select * from user;
+----+-----+-----------+
| id | age | name |
+----+-----+-----------+
| 1 | 56 | aaa |
| 2 | 26 | 黄蓉 |
| 3 | 18 | 杨过 |
| 4 | 16 | 小龙女 |
| 5 | 36 | 郭靖 |
+----+-----+-----------+
5 rows in set (0.00 sec)-- 删除视图
mysql> drop view myview;
Query OK, 0 rows affected (0.01 sec)
2. 视图的映射规则和限制
• 视图与表一样,必须唯一命名。
• 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响视图不能添加索引,也不能有关联的触发器或者默认值
• 视图可以提高安全性,必须具有足够的访问权限 order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图 中的 order by 将被覆盖
• 视图可以和表一起使用