✅ 操作成功!

视图的作用

发布时间:2023-06-17 作者:admin 来源:文学

视图的作用

视图的作用

离散数学及其应用-汉堡包的单词

2023年3月20日发(作者:购并)

mysql视图计算_MySQL视图的作⽤详解(⼆)-过滤数据、计

算字段、更新视图

⽤视图过滤不想要的数据

视图对于应⽤普通的WHERE⼦句也很有⽤。例如,可以定义customeremaillist视图,它过滤没有电⼦邮件地址的客户。为此⽬的,可

使⽤下⾯的语句:

输⼊:createviewcustomeremaillistasselectcust_id,cust_name,cust_emailfromcustomerswherecust_emailisnotnull;

分析:显然,在发送电⼦邮件到邮件列表时,需要排除没有电⼦邮件地址的⽤户。这⾥的WHERE⼦句过滤了cust_email列中具有NULL

值的那些⾏,使他们不被检索出来。

现在,可以像使⽤其他表⼀样使⽤视图customeremaillist。

输⼊:select*fromcustomeremaillist;

输出:

WHERE⼦句与WHERE⼦句如果从视图检索数据时使⽤了⼀条WHERE⼦句,则两组⼦句(⼀组在视图中,另⼀组是传递给视图的)将⾃

动组合。

使⽤视图与计算字段

视图对于简化计算字段的使⽤特别有⽤。下⾯是第10章中介绍的⼀条SELECT语句。它检索某个特定订单中的物品,计算每种物品的总价

格:

输⼊:selectprod_id,quantity,item_price,quantity*item_priceasexpanded_pricefromorderitemswhereorder_num=20005;

输出:

为将其转换为⼀个视图,如下进⾏:

输⼊:createvieworderitemsexpandedasselectprod_id,quantity,item_price,quantity*item_priceasexpanded_pricefrom

orderitems;

为检索订单20005的详细内容(上⾯的输出),如下进⾏:

输⼊:select*fromorderitemsexpandedwhereorder_num=20005;

输出:

可以看到,视图⾮常容易创建,⽽且很好使⽤。正确使⽤,视图可极⼤地简化复杂的数据处理。

更新视图

迄今为⽌的所有视图都是和SELECT语句使⽤的。然⽽,视图的数据能否更新?答案视情况⽽定。

通常,视图是可更新的(即,可以对它们使⽤INSERT、UPDATE和DELETE)。更新⼀个视图将更新其基表(可以回忆⼀下,视图本⾝没

有数据)。如果你对视图增加或删除⾏,实际上是对其基表增加或删除⾏。

但是,并⾮所有视图都是可更新的。基本上可以说,如果MySQL不能正确地确定被更新的基数据,则不允许更新(包括插⼊和删除)。这实

际上意味着,如果视图定义中有以下操作,则不能进⾏视图的更新:

1.分组(使⽤GROUPBY和HAVING);

2.联结;

3.⼦查询;

4.并;

5.聚集函数(Min()、Count()、Sum()等);

CT;

7.导出(计算)列。

换句话说,本章许多例⼦中的视图都是不可更新的。这听上去好像是⼀个严重的限制,但实际上不是,因为视图主要⽤于数据检索。

可能的变动上⾯列出的限制⾃MySQL5以来是正确的。不过,未来的MySQL很可能会取消某些限制。

将视图⽤于检索⼀般,应该将视图⽤于检索(SELECT语句)⽽不⽤于更新(INSERT、UPDATE和DELETE)。

总结:

视图为虚拟的表。它们包含的不是数据⽽是根据需要检索数据的查询。视图提供了⼀种MySQL的SELECT语句层次的封装,可⽤来简化数

据处理以及重新格式化基础数据或保护基础数据。

👁️ 阅读量:0