歡迎您光臨本站 註冊首頁

mysql代碼執行結構實例分析【順序、分支、循環結構】

←手機掃碼閱讀     火星人 @ 2020-05-04 , reply:0

   什麼是代碼執行結構:
    這裡所說的代碼執行結構就是多條sql語句的執行順序。
    代碼執行結構主要用於觸發器、存儲過程和函數等存儲多條sql語句中。
   順序結構:
    順序結構就是從上到下依次執行sql語句
    一般默認情況下都是順序結構
   分支結構:
    分支結構的執行是依據一定的條件選擇執行路徑,它會依據我們給定的條件來選擇執行那些sql語句
    mysql中分支結構只有if-else:
      語法:
if 條件 then
sql語句
[elseif 條件 then
sql語句]
[else
sql語句]
end if;
      示例:
--
create table pass(id int primary key auto_increment,name varchar(15),score int );
create table unpass(id int primary key auto_increment,name varchar(15),score int);
-- 使用存儲過程來
create procedure myif(in name varchar(15),in score int)
begin
if score >=60 then
 insert into pass(name,score) values(name,score);
else
 insert into unpass(name,score) values(name,score);
end if;
end;
-- 調用,並查看結果
call myif("lilei",61);
call myif("hanmeimei",95);
select * from pass;
select * from unpass;
call myif("tuhao",59);
select * from unpass;
      if中的條件基本可以參照select語句的while子句的條件。什麼in
ot in = != 等都可以用。
create procedure myif3(in a char(1))
begin
if a in('a','b') then
 select 1;
else
 select 2;
end if;
end;
call myif3('a');
call myif3('b');
call myif3('c');
   補充:
    理論上,如果做出判斷不符合,然而又不想繼續執行下去的時候,應該執行返回(比如C語言的return來中斷函數運行),但mysql中並沒有對應的中斷機制,所以需要我們主動中斷(中斷的方法有很多種,比如執行一條符合語法但無法運行的語句)【這種場景比如有:判斷一名學生是否存在,
     不存在就不執行任何操作,所以應該執行一條無法成功運行的語句來報錯返回
    。】
    事實上,還存在一種分支結構:case when 【好像好多書都沒怎麼講到,所以這裡不講述。有興趣的可以自行百度。】
   循環結構:
     循環結構是指在程序中需要反覆執行某個功能而設置的一種程序結構。mysql中循環結構用於循環多次運行同一sql語句。
     mysql中的循環結構有loop結構、while結構、repeat結構,這裡只講述while結構,有興趣瞭解其他的可以自行百度。
     語法:
while 條件 do
sql語句
end while;
     學過其他語言的可能會瞭解到循環結構中有continue(提前結束此次循環)和break(跳出整個循環)
     在mysql的循環結構中,使用leave來代替break,使用iterate來代替continue,但它們的使用語法是:leaveiterate 循環名,所以如何定義循環名呢?
循環名:while 條件 do
sql語句;
leaveiterate 循環名;
end while;
    示例:
-- 無意義的一個例子,僅作演示
create table whilenum(id int);
-- 自帶條件的
create procedure mywhile()
begin
declare num int;
set num=10;
c1:while num>0 do
  insert into whilenum values(num);
  set num=num-1;
 end while;
end;
-- 以傳入參數作為條件的
create procedure mywhile2(in num int)
begin
c1:while num>0 do
  insert into whilenum values(num);
  set num=num-1;
 end while;
end;
-- 帶中斷的
create procedure mywhile3(in num int)
begin
c1:while num>0 do
  if num%2=0 then
   set num=num-1;
   iterate c1;
  end if;
  insert into whilenum values(num);
  set num=num-1;
 end while;
end;


[火星人 ] mysql代碼執行結構實例分析【順序、分支、循環結構】已經有283次圍觀

http://coctec.com/docs/mysql/show-post-232805.html