视图与索引
2022-05-25 21:12:18
创建和查看视图
视图(view)是一种特殊的表,它可以把数据表的数据查询或者操作抽象成一个独立的数据库操作。实际上并不存在于数据库中。
数据库中只存储了视图的定义,而视图的实际数据是通过查询数据库来获取的。所以数据库的内容变化后会影响视图的数据。
语法:
1 | CREATE VIEW [view_name] AS [SELECT_statement] |
Tips:
- 视图的名称不能和数据库中的其他表名与视图重复。且视图的名称不能以数字开头。
- SELECT_statement是一个SELECT语句。可查询多个表的数据。对于这个语句有以下限制
- 用户需要有CREATE VIEW权限,以及SELECT相关表和视图权限。
- SELECT_statement 不能引用系统或用户变量。
- SELECT_statement 不能包含FROM子句中的子查询。
- SELECT_statement 不能引用预处理语句参数。
预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 “?” 标记 。例如:
1
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
- 创建视图需要引用的表或者视图存在,但创建完成后可以不存在(但数据肯定会出问题了)。可以用
CHECK TABLE
检查表是否存在。 - 视图定义允许使用ORDER BY子句。但如果视图中使用了ORDER BY子句,那么在查询视图时,视图中的数据也会按照ORDER BY子句排序。
- 视图定义不能引用临时表,不能创建临时表视图。
WITH CHECK OPTION
关键字可以让视图检查视图中的数据是否有效。
例子
从单表创建
1 | CREATE VIEW MyView AS |
从多表创建
1 | CREATE VIEW MyView AS |
从多表创建,并且指定列
1 | CREATE VIEW MyView AS |
从多表创建,并且指定列,并且指定列的顺序
1 | CREATE VIEW MyView AS |
指定视图中列的名称即对应关系
1 | CREATE VIEW MyView |
查询视图
视图可以用于查询,不建议用于更新数据