视图功能在 5.0 以后的版本启用
视图是一张虚表。数据表确实包含了具体数据并且保存到硬盘中的实表。视图使用数据检索语句动态生
成的一张虚表。每一次数据服务重启或者系统重启之后,在数据库服务启动期间,会使用创建视图的语
句重新生成视图中的数据,视图的数据保存在内存中。
视图的使用规则和限制条件
和数据表一样,视图也必须拥有一个唯一不重复的名字(一般是在库的范围内)
对于视图的创建是没有数量限制
创建视图的时候,必须有对应的权限,权限一般由数据库管理员授予
视图和视图之间是可以实现连表查询和嵌套查询的
order by 的排序语句可以在视图中使用,如果创建视图的查询语句中存在order by 针对视图查询结果排除的语句将被覆盖
视图中不可以使用索引、触发器、设置默认值
视图使用
CREATE VIEW 创建视图
SHOW CREATE VIEW 视图名查看视图创建的语句
DROP VIEW 视图名删除视图
更新一个视图的数据,可以先使用 DROP 删除视图,然后使用 create 创建视图,简化版使用
CREATE OR REPLACE VIEW 如视图存在就先删除,再创建,如果视图不存在则直接创建
案例:
创建一个 vendorsproducts 视图,实现 vendors 和 products 连表。首先使用搞一个 SELECT 语句保证数据检索效果
mysql> CREATE VIEW vendorproducts AS SELECT v.vend_id,v.vend_name,p.prod_id,p.prod_name FROM vendors as v INNER JOIN products as p ON v.vend_id = p.vend_id; Query OK, 0 rows affected (0.05 sec)
显示所有有订单号的客户信息
mysql> CREATE VIEW CustomersWithOrders AS -> select c.* from customers as c -> INNER JOIN -> orders as o ON c.cust_id=o.cust_id; Query OK, 0 rows affected (0.01 sec)