乐趣区

MYSQL中视图的使用

1、什么是视图
执行一条 SQL,将结果集保存在一张虚拟表中
2、为什么要使用视图

重复利用 SQL 语句
简化 SQL 查询,快速取数据
只用知道表的部分结构
保护数据,根据特定授权
更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。

注意事项• 在视图创建后,可以用与表基本相同的方式使用(查询、过滤、排序数据、与其他视图或连结、(添加、更新))• 视图只是用来查看存储在别处的数据的设施,本身不包含数据,返回的数据也是从其他表检索出来的。• 因为视图本身不包含数据,索引多个表连结或嵌套可能存在性能问题,需测试
3、规则和限制

表名必须唯一(与其他视图和表)
创建视图没有限制
足够权限
视图可以嵌套,可以从其他视图查询来构造一个视图
如果视图和从视图中查询都有 order by,视图中的 order by 将被覆盖
视图不能索引
视图可以和表一起使用

4、使用视图

创建视图 create view
查看创建视图的语句。Show create view viewname
删除视图 drop view viewname
更新视图,1⃣️ 先 drop 后 create 2⃣️ 直接用 create or replace view
利用视图简化复杂的联结查询

5、利用视图简化复杂的联结查询
创建视图
CREATE VIEW productcustomers AS
SELECT cust_name, cust_contact, prod_id
FROM customers, orders, orderitems
WHERE customers.cust_id = orders.cust_id
AND orderitems.order_num = orders.order_num

使用视图
SELECT cust_name, cust_contact
FROM productcustomers
WHERE prod_id = ‘TNT2’;

6、用视图重新格式化检索出的数据
select concat (rtrim(vend_name) , ‘(‘,rtrim(vend_country),’)’) as vend_title from vendors order by vend_name;

如果经常用到这个格式的话,可以创建一个视图
CREATE VIEW vendorlocations AS
SELECT
concat (rtrim( vend_name), ‘(‘, rtrim( vend_country), ‘)’ ) AS vend_title
FROM
vendors
ORDER BY
vend_name;
可以直接通过视图查询得出结果
SELECT * FROM vendorlocations;

退出移动版