很久没有使用 mysql 的 view 表了,这里再次总结下。
view 表又叫视图表、虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据视图,用户可以使用 SELECT 语句查询数据,也可以使用 INSERT,UPDATE,DELETE 修改记录,视图可以使用户操作方便,并保障数据库系统安全
优点:
- 基于 SQL 语句的结果集的可视化的表(基本表的数据变更也会映射进来)
- 视图不占用物理存储空间,只是逻辑概念的存在
- 安全性,用户只能查询或修改他们所能见到得到的数据
- 逻辑独立性,可以屏蔽真实表结构变化带来的影响
缺点:
- 无法在视图上创建索引
- 无法将触发器与视图关联
- 详情 https://dev.mysql.com/doc/refman/8.0/en/view-restrictions.html
定义
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = user]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
示例
mysql> CREATE TABLE t (num INT, price INT);
mysql> INSERT INTO t VALUES(3, 50);
mysql> CREATE VIEW v AS SELECT num, price, num*price AS value FROM t;
mysql> SELECT * FROM v;
+------+-------+-------+
| num | price | value |
+------+-------+-------+
| 3 | 50 | 150 |
+------+-------+-------+