diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/config.json" index 7df484ab0026584fc042fe98de0363869d8939d2..0404777c78c7a1738954e57763e90b70af0122ae 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/config.json" +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/config.json" @@ -2,7 +2,9 @@ "node_id": "mysql-d7f86bc2fcbb4b83a11f2ed73bde7ac0", "keywords": [], "children": [], - "export": [], + "export": [ + "if.json" + ], "keywords_must": [], "keywords_forbid": [], "group": 0 diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/if.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/if.json" new file mode 100644 index 0000000000000000000000000000000000000000..93d527ad4d4f15cc1c76c930cec0cef6982bd576 --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/if.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "ccat", + "source": "if.md", + "notebook_enable": false, + "exercise_id": "19cc93e63f0946069ce30e4be5af4e2a" +} \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/if.md" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/if.md" new file mode 100644 index 0000000000000000000000000000000000000000..95cc08e3472eae317a02eb9cb52cfe1418e27e6e --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/1.IF/if.md" @@ -0,0 +1,55 @@ +# 判断 + +Goods 数据库中有一个名为 trade 的存储过程,封装了交易过程,每一笔交易,trade都会被调用一次。Joe +想在 trade 里加一段逻辑,实现: + +1. 每一次交易,对 @counter 变量加一 +2. 如果 @counter 是 1000 的整倍数,就将 @total_price 变量乘 0.8。 + +下面哪一段代码可以实现这个逻辑? + +## 答案 + +```mysql +set @counter = @counter + 1; +if @counter % 1000 = 0 then + set @total_price = @total_price * 0.8; +end if; +``` + +## 选项 + +### A + +```mysql +set @counter = @counter + 1; +if @counter % 1000 = 0 { + set @total_price = @total_price * 0.8; +} +``` + +### B + +```mysql +set @counter = @counter + 1; +if (@counter % 1000 = 0) { + set @total_price = @total_price * 0.8; +} +``` + +### C + +```mysql +if @counter % 1000 = 0 begin ; + set @total_price = @total_price * 0.8; +end; +``` + +### D + +```mysql +set @counter ++; +if @counter % 1000 = 0 then begin + select @total_price = @total_price * 0.8; +end; +``` \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/config.json" index 014f40e5fab96790fbfee525060973c0d046d33f..2d7826d8a9755d461b63ffbf3aa1db1fe7110a4f 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/config.json" +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/config.json" @@ -1,8 +1,13 @@ { "node_id": "mysql-8ef7f9a1bba04bd782d80e9459446228", - "keywords": ["loop", "循环"], + "keywords": [ + "loop", + "循环" + ], "children": [], - "export": [], + "export": [ + "loop.json" + ], "keywords_must": [], "keywords_forbid": [], "group": 0 diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/loop.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/loop.json" new file mode 100644 index 0000000000000000000000000000000000000000..26489c4120fec0695e331dd76405c8868f00b540 --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/loop.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "ccat", + "source": "loop.md", + "notebook_enable": false, + "exercise_id": "7cca3eff58b1408ea98a8fa363b2c771" +} \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/loop.md" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/loop.md" new file mode 100644 index 0000000000000000000000000000000000000000..d2b1df56703f6969db988918759125eacc8da184 --- /dev/null +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/2.LOOP/loop.md" @@ -0,0 +1,95 @@ +# Loop 循环 + +封装订单交易过程的 trade procedure 中有一个循环,会遍历订单中的商品项目,如果当前的商品价格 `@price` +大于 1000,则将其价格乘 0.9 ,如果 `@total_price` 变量中的总价已经超过 20000,则跳出循环。否则进行 +下一个商品项目的处理。这个循环应该是(这里不考虑每个项目本身的处理逻辑,仅考虑折扣和商品订单分割): + +## 答案 + +```mysql +-- ... +trade: LOOP + if @price > 1000 then + set @price = @price * 0.9; + end if; + -- ... + if @total_price > 20000 then + LEAVE trade; + else + ITERATE trade; + end if; + -- ... +end LOOP trace; +``` + +## 选项 + +### A + +```mysql +-- ... +trade: LOOP + if @price > 1000 then + set @price = @price * 0.9; + end if; + -- ... + if @total_price > 20000 then + LEAVE trade; + end if; + -- ... +end LOOP trace; +``` + +### B + +```mysql +-- ... +trade: LOOP + if @price > 1000 then + set @price = @price * 0.9; + end if; + -- ... + if @total_price > 20000 then + ITERATE trade; + else + LEAVE trade; + end if; + -- ... +end LOOP trace; +``` + +### C + +```mysql +-- ... +trade: LOOP + if @price > 1000 then + set @price = @price * 0.9; + end if; + -- ... + if @total_price > 20000 then + LEAVE trade; + else + NEXT trade; + end if; + -- ... +end LOOP trace; +``` + +### D + +```mysql +-- ... +trade: LOOP + if @price > 1000 then + set @price = @price * 0.9; + end if; + -- ... + if @total_price > 20000 then + LEAVE trade; + end if; + NEXT trade; + -- ... +end LOOP trace; +``` + diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/3.LEAVE/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/3.LEAVE/config.json" deleted file mode 100644 index 2cdcbafc6c21e9524c1efc8dc3d7573cfcb6c6de..0000000000000000000000000000000000000000 --- "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/3.LEAVE/config.json" +++ /dev/null @@ -1,9 +0,0 @@ -{ - "node_id": "mysql-2f35dac71e6e42b189f7615fcf27a4e6", - "keywords": ["leave", "break"], - "children": [], - "export": [], - "keywords_must": [], - "keywords_forbid": [], - "group": 0 -} \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/5.REPEAT/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/3.REPEAT/config.json" similarity index 100% rename from "data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/5.REPEAT/config.json" rename to "data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/3.REPEAT/config.json" diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/4.ITERATE/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/4.ITERATE/config.json" deleted file mode 100644 index 1c059b4e363751fba97301cea32dbbac577a40c3..0000000000000000000000000000000000000000 --- "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/4.ITERATE/config.json" +++ /dev/null @@ -1,9 +0,0 @@ -{ - "node_id": "mysql-cf916e42a060467ab25b16112780f246", - "keywords": [], - "children": [], - "export": [], - "keywords_must": [], - "keywords_forbid": [], - "group": 0 -} \ No newline at end of file diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/6.WHILE/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/4.WHILE/config.json" similarity index 85% rename from "data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/6.WHILE/config.json" rename to "data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/4.WHILE/config.json" index 43ed327c431db8bcc6b04a536019f128049c24fe..6a75a027ba2667dbc20b56e4c98fabe322a4a255 100644 --- "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/6.WHILE/config.json" +++ "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/4.WHILE/config.json" @@ -1,6 +1,6 @@ { "node_id": "mysql-8bbe6f55f32b4a4a8a6011c5748b36fa", - "keywords": [], + "keywords": ["while"], "children": [], "export": [], "keywords_must": [], diff --git "a/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/7. \346\270\270\346\240\207/config.json" "b/data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/5. \346\270\270\346\240\207/config.json" similarity index 100% rename from "data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/7. \346\270\270\346\240\207/config.json" rename to "data/3.MySQL\351\253\230\351\230\266/4. \350\277\207\347\250\213\345\214\226\347\274\226\347\250\213/5. \346\270\270\346\240\207/config.json" diff --git a/data/tree.json b/data/tree.json index d093b4d879c341fea48056976685c57b1adf920f..edc87a7769e1663caa8571452d7a19930adee9e1 100644 --- a/data/tree.json +++ b/data/tree.json @@ -2177,29 +2177,6 @@ "group": 0 } }, - { - "LEAVE": { - "node_id": "mysql-2f35dac71e6e42b189f7615fcf27a4e6", - "keywords": [ - "leave", - "break" - ], - "children": [], - "keywords_must": [], - "keywords_forbid": [], - "group": 0 - } - }, - { - "ITERATE": { - "node_id": "mysql-cf916e42a060467ab25b16112780f246", - "keywords": [], - "children": [], - "keywords_must": [], - "keywords_forbid": [], - "group": 0 - } - }, { "REPEAT": { "node_id": "mysql-923c7bbf96cf4630a5dfb36f15e62d24", @@ -2508,7 +2485,11 @@ { "GROUP BY优化": { "node_id": "mysql-66fc4566eaf34994b072ca83bf79ceb4", - "keywords": [], + "keywords": [ + "performance", + "优化", + "group by" + ], "children": [], "keywords_must": [], "keywords_forbid": [],