MySQL(九) 复杂查询-视图/VIEW

这个什么视图的概念,看了半天没看懂干啥的,操作了一番才发现视图的功能强大,什么是视图呢?有一些数据是基于当前数据库的数据产生的,比如通过当前表中的进价和售价数据生成的利润及利润率,我们可以用ALTER ADD和UPDATE将这些处理生成的数据直接写入到表中,当数据量非常巨大的时,会占据磁盘大量的空间,明明可以通过查询获得数据,现在却要占用资源,但是不写入数据库,每次需要数据的时候都要写SELECT语句去查询,如果语句结构复杂,就很容易出错。是这样的,如果需要二次数据,就会出现上面的缺陷,而视图就可以解决上述的问题。

上面说的有点啰嗦哈。。。简单说来就是视图解决了数据存储和重复SELECT查询的问题,因为视图通过存储SELECT语句来达到存储二次数据的目的。

当然我的认识可能不太充分,有疏漏的地方可以评论提醒我哈。

1.视图-VIEW

1.1 视图的优点

上面已经作过介绍了,这里我就不再重复讲解了。一是视图无需保存数据,节省存储设备的容量;二是视图可以保存频繁使用的SELECT语句,提高效率。

1.2 视图的创建和使用

SELECT product_type,count(*) from sale group by product_type;
DROP VIEW product_type_count;
CREATE VIEW product_type_count (product_type,cnt_product)
    AS SELECT product_type,count(*) from sale group by product_type; #括号中是视图的列名
select product_type,cnt_product from product_type_count;

这里最后一条SQL语句其实执行了两条的SQL语句,如果有多重视图的情况存在,即有视图是基于视图生成的,这时候以这个视图为表查询的时候,要执行两条以上的SQL语句。但是这种多重视图会降低SQL的性能,尽量使用单一试图。

1.3 视图的限制

第一个限制就是AS后面跟着的SELECT不能用ORDER BY的限制。SELECT查询表的时候,是没有限制的,只要语法正确就可以查询,但是在CREATE VIEW的时候AS后面跟的SELECT语句不能跟着ORDER BY语句,因为视图和表一样,数据行都是没有顺序的,ORDER只是对查询结果排序,所以语法不通,但是这种语句可以在MySQL中执行,因为各类RDBMS并不都是基于标准的SQL,会有特异性。

DROP VIEW product_type_count;
CREATE VIEW product_type_count (product_type,cnt_product)
    AS SELECT product_type,count(*) from sale group by product_type 
        ORDER BY product_type;
select product_type,cnt_product from product_type_count;

第二个限制就是表和视图的数据更新上,视图是基于表的SELECT语句,所以表数据进行更新的时候,视图会跟着一起更新,但是反过来呢?这里比较好理解,如果表和视图的列属性或数据性质一致就可以,但是这种情况视图只是记录表的一次数据,不会处理记录二次数据,意义并不大,所以视图最好不要做数据更新,下面的实例是正向更新

insert into sale (
    product_name,
    product_type,
    sale_price,
    purchase_price,
    regist_date) values (
    
    '椰汁',
    '酒水',
    '111',
    '20',
    '2021-03-01');
select product_type,cnt_product from product_type_count;

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇