11.1 什么是视图
11.1.1 视图的真面目
将SELECT的结果像表一样保留下来的虚表就是视图。
视图不是表。因此,在视图中并没有保存记录或者列中的数据。
11.1.2 视图的用途
视图虽然看起来像表,但它没有实体,只是一种信息。视图的便利之处在于,用户可以按照想要的条件收集某表中某列的数据。
和表一样,视图也可以进行SELECT和UPDATE,如果更新视图的记录,基表的记录也会更新。
注:视图只能在MySQL5或更高的版本中使用。
11.2 使用视图
11.2.1 创建视图
命令格式:CREATE VIEW 视图名 AS SELECT 列名 FROM 表名 WHERE 条件;
上述语句中的WHERE条件,也可以换成ORDER BY ,LIMIT和JOIN等。就是将前面执行的许多SELECT的结果通过CREATE VIEW...AS...创建为视图。
练习:创建由表tb1J的姓名(name)与年龄(age)两个列构成的视图v1,并显示视图V1的内容。
表tb1J:
+-------+------+------+
| empid | name | age |
+-------+------+------+
| A101 | 佐藤 | 40 |
| A102 | 高桥 | 28 |
| A103 | 中川 | 20 |
| A104 | 渡边 | 23 |
| A105 | 西泽 | 35 |
+-------+------+------+
创建视图输入&执行结果:
mysql> CREATE VIEW v1 AS SELECT name,age FROM tb1J;
Query OK, 0 rows affected (0.01 sec)
显示视图:
mysql> SELECT * FROM v1;
+------+------+
| name | age |
+------+------+
| 佐藤 | 40 |
| 高桥 | 28 |
| 中川 | 20 |
| 渡边 | 23 |
| 西泽 | 35 |
+------+------+
5 rows in set (0.01 sec)
使用SELECT显示视图记录的方法,和以表为操作对象时使用的方法完全相同。
11.2.2 通过视图更新列的值
视图只显示了基表的一部分。因此,如果更新了基表的值,收集并显示基表值的视图的值也会更新。
视图不仅是基表的一部分,它也是指向基表数据的窗口。因此,如果更新视图的值,基表的值也会随之更新。
练习:将视图v1中A101“佐藤”的姓名更新为“主任·佐藤”。
输入&执行结果: