• 朱晓峰
    置顶
    2021-04-21
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了临时表。下面是思考题的答案: 第一步,先计算门店销售合计 CREATE TEMPORARY TABLE demo.temp SELECT branchnumber,sum(actualvalue) AS actualvalue FROM demo.trans GROUP BY branchnumber; 第二步,再按照门店、收款机,计算合计 CREATE TEMPORARY TABLE demo.temp1 SELECT branchnumber,cashiernumber,sum(actualvalue) AS actualvalue FROM demo.trans GROUP BY branchnumber,cashiernumber; 第三步,计算按门店、收款机的销售占比 SELECT a.branchnumber,a.cashiernumber, a.actualvalue/b.actualvalue FROM demo.temp1 AS a,demo.temp AS b WHERE (a.branchnumber=b.branchnumber) ORDER BY a.branchnumber,a.cashiernumber
    展开
    共 2 条评论
    2
  • lesserror
    2021-04-12
    在公司下班后用了一个多番茄种学完了这节的内容。要想保持工作之外挤出时间来学习,必须要让自己保持注意力高度集中。 老师「视图」这一讲的内容很清晰,这个专栏每一讲的内容都算很具体了。赞一个。 对于视图来说,好多公司都明确禁止使用了。比起它的那点查询的封装,后期的维护成本更高。因为开发中要经常对数据表结构做改动,如果对业务不熟的新同事,很容易就忘记修改对应的视图创建语句。而在代码中该SQL语句相对来说,更加直观和不容易遗忘。

    作者回复: 谢谢鼓励,视图确实会增加维护成本,要根据实际情况决定是否使用

    
    6
  • undefined
    2021-04-11
    临时表针对当前会话生效,它把数据缓存在内存或磁盘; 而视图仅仅是SQL,每次执行Query时获得原始表的数据。 视图操作数据对应实际的Table,而临时表则是内存或磁盘上的一份拷贝。 由于临时表可以是原始数据的一份子集,所以用来提升查询速度,避免扫描所有数据。

    作者回复: 对的

    
    6
  • 艺超(鲁鸣)
    2021-12-06
    讲解简洁明了,案例很有用,但是本节trans表中销售数量栏位,前后文不太一致,有的地方是quantity,有的地方是salesquantity,可能会对初学者造成困扰。

    作者回复: 十分感谢您的指正,商品表中的字段名有误,应该是“quantity”而不是“salesquantity”,我已经请后台进行修正。

    
    2
  • SevenMonths
    2021-09-01
    看到这里发现评论依然特别少。后来才发现评论后需要作者同意才能展示。 自我感觉在评论区也能学到很多知识,有时候老师没时间回复的问题,评论区其他同学就回复了。 直白的说我是先看的盗版,觉得挺不错才来支持正版的。 最主要的原因是想和老师还有评论区的同学互动讨论下。

    作者回复: 会反馈给后台

    
    1
  • 末日,成欢
    2021-04-27
    视图会用的索引吗

    作者回复: 视图就是一段SQL语句,如果数据表创建了索引,那么视图中的查询语句就可能会用到索引

    
    1
  • bearlu
    2021-04-10
    老师,视图和临时表有什么区别?

    作者回复: 第一,视图是存储在服务器上的查询语句,所有的连接只要有相应的权限,就可以使用。临时表只限于当前连接,连接中断自动删除的。 第二,视图是不保存数据的,临时表保存数据。

    共 3 条评论
    1
  • 阿甘
    2022-05-17 来自北京
    我记得有一种视图叫做 物化视图 是有保存实际查询结果的。

    作者回复: MySQL中的视图都是虚拟表,不支持物化视图的,有些数据库产品支持物化视图,比如oracle

    
    
  • 枫林血舞
    2022-01-19
    交作业: -- 门票信息表 create table demo.ticket ( id int primary key, tname text, typeid int, balance int ); insert into demo.ticket ( id, tname, typeid, balance ) values (1, '入园门票', 1, 100), (2, '收费场馆A门票', 2, 70), (3, '收费场馆B门票', 2, 50); -- 类别信息表包含类别编号、开门时间和闭馆时间。 create table demo.typeinfo ( typeid int primary key, opentime text, closetime text ); insert into demo.typeinfo ( typeid, opentime, closetime ) values (1, '9:00', '17:00'), (2, '10:00', '14:00'); -- demo.typeinfo demo.ticket select * from demo.ticket; select * from demo.typeinfo; -- 请编写一个视图,视图返回的结果集包括:当前时间可以卖的门票名称和剩余数量(说明:开门前 30 分钟开始售票,结束前 30 分钟停止售票) create view demo.ticket_typeinfo as select a.id, a.tname, a.balance from demo.ticket as a join demo.typeinfo as b on a.typeid = b.typeid where hour(current_time()) > b.opentime and hour(current_time()) < b.closetime;
    展开

    作者回复: 请参考思考题答案

    
    
  • Geek_9a859a
    2021-12-15
    如果视图是以查询语句建立的,与基础表的数据没有一一对应的关系或者存在一些特殊结构,那么视图是不是就只有查看或者作为派生表这两种功能,不能对视图的数据进行更新了

    作者回复: 是的

    
    