首頁  >  文章  >  資料庫  >  MySQL精講之六:流程控制

MySQL精講之六:流程控制

coldplay.xixi
coldplay.xixi轉載
2021-03-01 09:10:012374瀏覽

MySQL精講之六:流程控制

免費學習推薦:mysql影片教學

文章目錄

  • 分支結構
    • IF函數
    • case結構
    • IF結構
  • 循環結構

mysql中的流程控制和其他程式語言中的類似,也分為三種:順序結構分支結構循環結構。前幾篇文章中用到的基本上都是順序結構(除了IF函數),以下主要針對分支結構和循環結構進行介紹。

分支結構

IF函數

#語法:IF(表達式1,表達式2,表達式式3)
說明:如果表達式1成立,則執行表達式2,否則執行表達式3

#case結構

case結構有兩種語法:
MySQL精講之六:流程控制
特點:

  • 作為表達式使用,嵌套在其他語句中使用,在BEGIN- END中和BEGIN-END外都可以使用。
  • 作為獨立的語句使用,只能放在BEGIN-END中。
  • 如果省略ELSE,且所有的WHEN都不滿足,則傳回null。
【演示case作为独立的语句】# 创建存储过程,根据传入的成绩,显示等级:90-100显示A 、 80-90显示B、60-80显示C、否则显示DCREATE PROCEDURE test_case(IN score INT)BEGIN
	CASE
	WHEN score>=90 AND score=80 THEN SELECT 'B';
	WHEN score>=60 THEN SELECT 'C';
	ELSE SELECT 'D';
	END CASE;END $CALL test_case(95)$

IF結構

語法:
if 條件1 then 語句1;
elseif 條件2 then 語句2;
...
#[else 語句n;]
end if;

【演示IF结构】# 根据传入的成绩,显示等级:90-100显示A 、 80-90显示B、60-80显示C、否则显示DCREATE FUNCTION test_if(score INT) RETURNS CHARBEGIN
	IF score>=90 AND score=80 THEN RETURN 'B';
	ELSEIF score>=60 THEN RETURN 'C';
	ELSE RETURN 'D';
	END IF;END $SELECT test_if(61)$

循環結構

mysql中的循環結構有以下三種:

##名稱語法特點先判斷後來執行先執行後判斷#沒有條件的死迴圈
#while MySQL精講之六:流程控制
repeat,類似Java中的do-wile語句 MySQL精講之六:流程控制
loop MySQL精講之六:流程控制
可以在循環控制中使用的關鍵字有

iterate(類似於Java中的continue)和leave(類似於Java中的break)

【演示简单的循环结构】# 案例:批量插入,根据次数插入到admin表中多条记录.CREATE PROCEDURE pro_while1(IN insertCount INT)BEGIN
	DECLARE i INT DEFAULT 1;
	WHILE i20则停止TRUNCATE TABLE admin$DROP PROCEDURE test_while1$CREATE PROCEDURE test_while1(IN insertCount INT)BEGIN
	DECLARE i INT DEFAULT 1;
	a:WHILE i=20 THEN LEAVE a;
		END IF;
		SET i=i+1;
	END WHILE a;END $CALL test_while1(100)$--------------------------------------------------------------------------------------------【演示添加了iterate的语句】# 案例:批量插入,根据次数插入到admin表中,直插入偶数次CREATE PROCEDURE test_while2(IN insertCount INT)BEGIN
	DECLARE i INT DEFAULT 0;
	a:WHILE i<blockquote>學習了mysql的流程控制,嘗試完成下列習題<p><br><img src="https://img.php.cn/upload/article/000/000/052/824caf6adae3f27ef5f57d1863fc12a6-4.png" alt="MySQL精講之六:流程控制"></p>
<pre class="brush:php;toolbar:false">【习题答案】DROP TABLE IF EXISTS stringcontent;CREATE TABLE stringcontent(
	id INT PRIMARY KEY AUTO_INCREMENT,
	content VARCHAR(20)
	);DELIMITER $CREATE PROCEDURE test_pro1(IN insertCount INT)BEGIN
	DECLARE i INT DEFAULT 1;#定义一个循环变量i,表示插入次数
	DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
	DECLARE strIndex INT DEFAULT 1;#代表起始索引
	DECLARE len INT DEFAULT 1;#代表截取的字符的长度
	WHILE i

更多相關免費學習推薦: mysql教學(影片)

以上是MySQL精講之六:流程控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除