From a217dd69772d30df2cda4b0a56a110ae7ffec735 Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Tue, 31 May 2022 21:29:15 +0800 Subject: [PATCH] loop --- .../1.IF/config.json" | 4 +- .../1.IF/if.json" | 7 ++ .../1.IF/if.md" | 55 +++++++++++ .../2.LOOP/config.json" | 9 +- .../2.LOOP/loop.json" | 7 ++ .../2.LOOP/loop.md" | 95 +++++++++++++++++++ .../3.LEAVE/config.json" | 9 -- .../3.REPEAT/config.json" | 0 .../4.ITERATE/config.json" | 9 -- .../4.WHILE/config.json" | 2 +- .../5. \346\270\270\346\240\207/config.json" | 0 data/tree.json | 29 +----- 12 files changed, 180 insertions(+), 46 deletions(-) create mode 100644 "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" create mode 100644 "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" create mode 100644 "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" create mode 100644 "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" delete mode 100644 "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" rename "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" => "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" (100%) delete mode 100644 "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" rename "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" => "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" (85%) rename "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" => "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" (100%) 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 7df484a..0404777 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 0000000..93d527a --- /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 0000000..95cc08e --- /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 014f40e..2d7826d 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 0000000..26489c4 --- /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 0000000..d2b1df5 --- /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 2cdcbaf..0000000 --- "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 1c059b4..0000000 --- "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 43ed327..6a75a02 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 d093b4d..edc87a7 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": [], -- GitLab