说明:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
语法:create view 视图名 as select 语句;
测试:
mysql> create view myview as select id,name from exam_result;
Query OK, 0 rows affected (0.01 sec)
mysql> select *from myview;
+----+-----------+
| id | name |
+----+-----------+
| 1 | 唐三藏 |
| 2 | 孙悟空 |
| 3 | 猪悟能 |
| 4 | 曹孟德 |
| 5 | 刘玄德 |
| 6 | 孙权 |
| 7 | 宋公明 |
| 8 | 诸葛亮 |
| 9 | 大乔 |
| 10 | 小乔 |
+----+-----------+
10 rows in set (0.00 sec)
说明:修改了视图对原来的表也会有影响。
测试:
mysql> select *from myview;
+----+-----------+
| id | name |
+----+-----------+
| 1 | 唐三藏 |
| 2 | 孙悟空 |
| 3 | 猪悟能 |
| 4 | 曹孟德 |
| 5 | 刘玄德 |
| 6 | 孙权 |
| 7 | 宋公明 |
| 8 | 诸葛亮 |
| 9 | 大乔 |
| 10 | 小乔 |
+----+-----------+
10 rows in set (0.00 sec)
mysql> update exam_result set name='xiaoqiao'where name='小乔';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select *from myview;
+----+-----------+
| id | name |
+----+-----------+
| 1 | 唐三藏 |
| 2 | 孙悟空 |
| 3 | 猪悟能 |
| 4 | 曹孟德 |
| 5 | 刘玄德 |
| 6 | 孙权 |
| 7 | 宋公明 |
| 8 | 诸葛亮 |
| 9 | 大乔 |
| 10 | xiaoqiao |
+----+-----------+
10 rows in set (0.00 sec)
mysql> select *from exam_result;
+----+-----------+---------+------+---------+
| id | name | chinese | math | english |
+----+-----------+---------+------+---------+
| 1 | 唐三藏 | 117 | 98 | 56 |
| 2 | 孙悟空 | 87 | 78 | 77 |
| 3 | 猪悟能 | 88 | 98 | 90 |
| 4 | 曹孟德 | 82 | 84 | 67 |
| 5 | 刘玄德 | 105 | 85 | 45 |
| 6 | 孙权 | 120 | 73 | 78 |
| 7 | 宋公明 | 75 | 65 | 30 |
| 8 | 诸葛亮 | 100 | 100 | NULL |
| 9 | 大乔 | 99 | 100 | 100 |
| 10 | xiaoqiao | 100 | 65 | 100 |
+----+-----------+---------+------+---------+
10 rows in set (0.00 sec)
说明:修改原来的表对视图也会有影响
测试:
mysql> update exam_result set name='小乔'where name='xiaoqiao';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select *from myview;
+----+-----------+
| id | name |
+----+-----------+
| 1 | 唐三藏 |
| 2 | 孙悟空 |
| 3 | 猪悟能 |
| 4 | 曹孟德 |
| 5 | 刘玄德 |
| 6 | 孙权 |
| 7 | 宋公明 |
| 8 | 诸葛亮 |
| 9 | 大乔 |
| 10 | 小乔 |
+----+-----------+
10 rows in set (0.00 sec)
说明:删除视图
语法:drop view 视图名
测试:
mysql> drop view myview
-> ;
Query OK, 0 rows affected (0.01 sec)
视图的规则和限制: 与表一样,必须唯一命名(不能出现同名视图或表名) 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响视图不能添加索引,也不能有关联的触发器或者默认值视图可以提高安全性,必须具有足够的访问权限 order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图 中的 order by 将被覆盖视图可以和表一起使用。