• 朱晓峰
    置顶
    2021-05-17
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了视图。下面是思考题的答案: 第一步,创建门票信息表(demo.tickets)和类别信息表(demo.ticketkind) CREATE TABLE demo.tickets ( id INT PRIMARY KEY AUTO_INCREMENT, tname TEXT, typeid INT, balance INT ); CREATE TABLE demo.ticketkind ( typeid INT PRIMARY KEY AUTO_INCREMENT, opentime TIME, closetime TIME ); 第二步,创建视图: CREATE VIEW demo.vTickets AS SELECT a.tname, a.balance FROM demo.tickets AS a JOIN demo.ticketkind AS b ON (a.typeid = b.typeid) WHERE NOW() > b.opentime AND NOW() < b.closetime;
    共 2 条评论
    1
  • undefined
    2021-04-13
    #不负责任的评论# 互联网公司大都不爱用存储过程,在阿里巴巴发布的Java开发手册中,明确禁止了存储过程的使用。 "【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。" 主要原因大致为:不易测试,难以调试,版本控制困难…… 不过对于商用数据库和部分传统软件业务,还是值得使用的。

    作者回复: 还是要根据实际的应用场景来决定是否使用

    
    7
  • lesserror
    2021-04-15
    一个番茄钟,补上这一讲的内容。最近实在太忙了。 另外,需要指出这里老师的存储过程代码中的参数类型是TEXT,而不是文中所说的DATETIME类型。 像视图、存储过程、游标......这些概念从伴随MySQL很久了,虽然实际开发中很少用到。但是我们也必须了解,建立起自己完整的知识体系。

    作者回复: 感谢指正,这个地方确实应该是TEXT类型,已经改过了。

    
    3
  • floating
    2021-04-19
    课后思考题: mysql> drop procedure if exists demo.proc_adder -> ; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> delimiter // mysql> create procedure demo.proc_adder(in a int, out b int) -> begin -> set b = a + 1; -> end -> // Query OK, 0 rows affected (0.01 sec) mysql> delimiter ; mysql> set @a = 5; Query OK, 0 rows affected (0.00 sec) mysql> call demo.proc_adder(@a, @b); Query OK, 0 rows affected (0.00 sec) mysql> select @b as sum; +------+ | sum | +------+ | 6 | +------+ 1 row in set (0.00 sec)

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

    共 2 条评论
    2
  • Jun
    2021-07-13
    老师能否解释一下,为什么输入参数trandate的类型用text而不是date?

    作者回复: 主要是因为TEXT类型比较方便调试和调用,

    共 2 条评论
    1
  • 追忆似水年华
    2021-06-06
    在对时间进行判断那里,“b.transdate>startdate AND b.transdate<enddate” 这条语句漏掉了当天 00:00:00 这个时刻的记录,是不是改写成 “b.transdate>=startdate AND b.transdate<enddate” 更合适一些? 另外“这里我使用 CASE 函数来解决销售金额为 0 时计算毛利的问题”,这里应该是解决销售金额为 0 时,计算毛利率的问题吧?

    作者回复: 非常感谢你的认真阅读。 1. 这个地方用“=”来包含00:00:00时刻,是更加严谨的,文稿的例子中,由于客户不存在00:00:00时刻营业的情况,所以没有把这个时刻包含进去 2. 确实是计算毛利率时才会出现被零除的问题,我已经请后台纠正。

    
    1
  • giteebravo
    2021-04-14
    本节课需要掌握关于存储过程的 创建/查看/调用/修改/删除/调试 其中调试需要重点关注

    作者回复: 好的

    
    1
  • Geek_3254e0
    2022-04-28 来自北京
    CREATE TABLE IF NOT EXISTS aplus1( a VARCHAR(5), b VARCHAR(5) )ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO aplus1 VALUES (1,NULL),(2,5),(4,8),(0,3) SELECT * FROM aplus1; TRUNCATE TABLE aplus1; TRUNCATE TABLE bplus; CREATE TABLE IF NOT EXISTS bplus( a VARCHAR(5), b VARCHAR(5) )ENGINE=INNODB DEFAULT CHARSET=utf8 CREATE PROCEDURE plus8() BEGIN INSERT INTO bplus ( a, b ) SELECT c.a, SUM(c.a+1) FROM aplus1 c GROUP BY c.a; END CALL plus8(); SELECT * from bplus;

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

    
    
  • 菜鸟🐤要先飞
    2021-05-12
    delimiter // create procedure aAddB (in a int,out b int) begin set b = a+1; end // delimiter ; set @b = 0; call aAddB(1,@b); begin

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

    
    
  • Sinvi
    2021-04-20
    DELIMITER // CREATE PROCEDURE sum_two_num(a INT, INOUT b INT) BEGIN select a + 1 into b; END // DELIMITER ; call sum_two_num(10, @b); select @b;

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

    
    