MySQL 使用视图

视图时虚拟的表,它与包含数据的表不一样,视图只是封装了SQL查询后的结果图

一、视图的创建

  1. 使用CREATE VIEW语句来创建视图
  2. 使用SHOW CREATE VIEW viewname,来查看创建视图的语句
  3. 使用DROP VIEW viewname 来删除视图
  4. 更新视图可以先DROP再用CREATE。也可以直接用CREATE OR REPLACE VIEW  viewname,如果要更新的视图不存在则第二条更新语句会创建一个视图,如果存在则替换掉原来的视图

 

二、使用视图

1、使用视图封装复杂的联结

CREATE VIEW productcustomer 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

这条语句创建了一个名为productcustomer的视图,它联结三个表,返回已订购物品的客户列表。

下面可以直接使用视图检索订购了TNT2的客户可以看出视图极大的简化了复杂的SQL语句的使用,利用视图,可以一次性编写基础的SQL,然后可复用

SELECT * FROM productcustomer WHERE prod_id = 'TNT2'

 

2、使用视图重新格式化检索出的数据

视图的另一种常见用途时重新格式化检索出的数据。下面的SELECT时返回供应商名和位置

SELECT CONCAT(vend_name,'(',RTRIM(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name

如果这个格式被经常使用,则可以为此创建一个视图,每次使用这个视图就行了。

CREATE VIEW vendorlocation AS
SELECT CONCAT(vend_name,'(',RTRIM(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name

 

以后每次需要使用时,只需查询视图即可

SELECT * FROM vendorlocation

 

3、使用视图过滤不想要的数据

定义一个视图,过滤没有电子邮件地址的客户,这样在发送电子邮件到邮件列表时,可以排除那些没有电子邮件地址的用户

CREATE VIEW customeremaillist AS
SELECT * FROM customers 
WHERE cust_email IS NOT NULL

 

4、使用视图与计算字段

创建一个视图orderitemstotal ,它检索计算每种物品的总价

CREATE VIEW orderitemstotal AS
SELECT 
order_num,
prod_id,
quantity,
item_price,
quantity * item_price AS total_price
FROM orderitems

下面我们可以检索订单20005的详细内容

SELECT * FROM orderitemstotal
WHERE order_num = 20005

 

三、更新视图

一般视图的作用是用来简化检索,而不用于更新。

但是视图也是可更新的,可以对它们使用INSERT\UPDATE和DELETE.更新视图将更新其基表,

如果视图定义中有以下操作,则不能进行视图更新

  • 分组
  • 联结
  • 子查询
  • 聚集函数
  • DISTINCT
  • 导出列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值