欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL流程控制語句解讀

 更新時(shí)間:2024年11月02日 09:49:20   作者:pan_junbiao  
MySQL存儲(chǔ)過程支持多種流程控制語句,如IF、CASE、WHILE、LOOP、REPEAT等,每種語句有特定的執(zhí)行邏輯,用于實(shí)現(xiàn)條件判斷和循環(huán)操作

在MySQL中,常見的過程式SQL語句可以用在一個(gè)存儲(chǔ)過程體中。

其中包括:IF語句、CASE語句、LOOP語句、WHILE語句、REPEAT語句、LEAVE語句和ITERATE語句,它們可以進(jìn)行流程控制。

1、IF語句

IF語句用來進(jìn)行條件判斷,根據(jù)不同的條件執(zhí)行不同的操作。

該語句在執(zhí)行時(shí)首先判斷IF后的條件是否為真,則執(zhí)行THEN后的語句,如果為假則繼續(xù)判斷IF語句直到為真為止,當(dāng)以上都不滿足時(shí)則執(zhí)行ELSE語句后的內(nèi)容。

IF語句表示形式如下:

IF condition THEN
	...
ELSE condition THEN
	...
ELSE
	...
END IF

示例:使用IF語句用來進(jìn)行條件判斷。

-- 創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE example_if (IN x INT)
BEGIN
	IF x = 1 THEN
		SELECT 1;
	ELSEIF x = 2 THEN 
		SELECT 2;
	ELSE
		SELECT 3;
	END IF;
END;

-- 調(diào)用存儲(chǔ)過程
CALL example_if(2);

2、CASE語句

CASE語句為多分支語句結(jié)構(gòu),該語句首先從WHEN后的VALUE中查找與CASE后的VALUE相等的值,如果查找到則執(zhí)行該分支的內(nèi)容,否則執(zhí)行ELSE后的內(nèi)容。

CASE語句表示形式如下:

CASE value
	WHEN value THEN ...
	WHEN value THEN ...
	ELSE ...
END CASE

CASE語句另一種語法表示形式如下:

CASE
	WHEN value THEN ...
	WHEN value THEN ...
	ELSE ...
END CASE

示例:使用CASE語句用來進(jìn)行條件判斷。

-- 創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE example_case(IN x INT)
BEGIN
	CASE x
		WHEN 1 THEN SELECT 1;
		WHEN 2 THEN SELECT 2;
		ELSE SELECT 3;
	END CASE;
END;

-- 調(diào)用存儲(chǔ)過程
CALL example_case(5);

3、WHILE循環(huán)語句

WHILE循環(huán)語句執(zhí)行時(shí)首先判斷condition條件是否為真,如果是則執(zhí)行循環(huán)體,否則退出循環(huán)。

該語法表示形式如下:

WHILE condition DO
...
END WHILE;

示例:使用WHILE循環(huán)語句執(zhí)行求前100的和。

-- 創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE example_while(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE s INT DEFAULT 0;

	WHILE i <= 100 DO
		SET s = s+i;
		SET i = i+1;
	END WHILE;

	SET sum = s;
END;

-- 調(diào)用存儲(chǔ)過程
CALL example_while(@sum);
SELECT @sum;

4、LOOP循環(huán)語句

LOOP循環(huán)沒有內(nèi)置的循環(huán)條件,但可以通過LEAVE語句退出循環(huán)。

LOOP語句表示形式如下:

LOOP
	...
END LOOP

LOOP語句允許某特定語句或語句群的重復(fù)執(zhí)行,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的循環(huán)構(gòu)造,在循環(huán)內(nèi)的語句一直重復(fù)直至循環(huán)被退出,退出循環(huán)應(yīng)用LEAVE語句。

LEAVE語句經(jīng)常和BEGIN...END或者循環(huán)一起使用,其表示形式如下:

LEAVE label

label是語句中標(biāo)注的名字,這個(gè)名字是自定義的。

示例:使用LOOP循環(huán)語句求前100的和。

-- 創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE example_loop(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE s INT DEFAULT 0;
	
	loop_label:LOOP
		SET s = s+i;
		SET i = i+1;
	
		IF i>100 THEN
			-- 退出LOOP循環(huán)
			LEAVE loop_label;  
		END IF;
	END LOOP;

	SET sum = s;
END;

-- 調(diào)用存儲(chǔ)過程
CALL example_loop(@sum);
SELECT @sum;

5、REPEAT循環(huán)語句

REPEAT循環(huán)語句先執(zhí)行一次循環(huán)體,之后判斷condition條件是否為真,則退出循環(huán),否則繼續(xù)執(zhí)行循環(huán)。

REPEAT語句表示形式如下:

REPEAT
	...
	UNTIL condition
END REPEAT

示例:使用REPEAT循環(huán)語句求前100的和。

-- 創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE example_repeat(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE s INT DEFAULT 0;

	REPEAT
		SET s = s+i;
		SET i = i+1;
		
		UNTIL i > 100
	END REPEAT;
	
	SET sum = s;
END;

-- 調(diào)用存儲(chǔ)過程
CALL example_repeat(@sum);
SELECT @sum;

6、ITERATE語句

ITERATE語句可以出現(xiàn)在LOOP、REPEAT和WHILE語句內(nèi),其意為“再次循環(huán)”。

語句格式如下:

ITERATE label

該語句的格式與LEAVE大同小異,區(qū)別在于:LEAVE語句是離開一個(gè)循環(huán),而ITERATE語句是重新開始一個(gè)循環(huán)。

示例:求10以內(nèi)奇數(shù)值的和。

-- 創(chuàng)建存儲(chǔ)過程
CREATE PROCEDURE example_iterate(OUT sum INT)
BEGIN
	DECLARE i INT DEFAULT 0;
	DECLARE s INT DEFAULT 0;
	
	loop_label:LOOP

		SET i = i+1;		

		IF i > 10 THEN
			-- 退出整個(gè)循環(huán)
			LEAVE loop_label;  
		END IF;

		IF (i mod 2) THEN
			SET s = s+i;
		ELSE
			-- 退出本次循環(huán),繼續(xù)下一個(gè)循環(huán)
			ITERATE  loop_label;
		END IF;

	END LOOP;

	SET sum = s;
END;

-- 調(diào)用存儲(chǔ)過程
CALL example_iterate(@sum);
SELECT @sum;

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql取得datetime類型的數(shù)據(jù),后面會(huì)跟個(gè).0的實(shí)現(xiàn)方法

    mysql取得datetime類型的數(shù)據(jù),后面會(huì)跟個(gè).0的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猰ysql取得datetime類型的數(shù)據(jù),后面會(huì)跟個(gè).0的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL查看鎖的實(shí)現(xiàn)代碼

    MySQL查看鎖的實(shí)現(xiàn)代碼

    本文主要介紹了MySQL查看鎖的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解決MYSQL出現(xiàn)Can''t create/write to file ''/tmp/#sql_5c0_0.MYD''的問題

    解決MYSQL出現(xiàn)Can''t create/write to file ''/tmp/#sql_5c0_0.MYD''

    今天在配置服務(wù)器的時(shí)候提示這個(gè)問題Can't create/write to file,原來是php.ini中設(shè)置的tmp目錄不存在
    2013-07-07
  • MySQL出現(xiàn)SQL Error (2013)連接錯(cuò)誤的解決方法

    MySQL出現(xiàn)SQL Error (2013)連接錯(cuò)誤的解決方法

    這篇文章主要介紹了MySQL出現(xiàn)SQL Error (2013)連接錯(cuò)誤的解決方法,2013錯(cuò)誤主要還是在于用戶的授權(quán)問題,需要的朋友可以參考下
    2016-06-06
  • MySQL多版本并發(fā)控制mvcc原理淺析

    MySQL多版本并發(fā)控制mvcc原理淺析

    mvcc多版本并發(fā)控制是一種數(shù)據(jù)庫的并發(fā)控制機(jī)制,本文主要介紹了MySQL多版本并發(fā)控制mvcc原理淺析,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Mysql命令行導(dǎo)入sql數(shù)據(jù)

    Mysql命令行導(dǎo)入sql數(shù)據(jù)

    下面是在命令行下導(dǎo)入sql數(shù)據(jù)的方法,需要的朋友可以參考下。
    2010-03-03
  • DBeaver連接mysql數(shù)據(jù)庫圖文教程(超詳細(xì))

    DBeaver連接mysql數(shù)據(jù)庫圖文教程(超詳細(xì))

    本文主要介紹了DBeaver連接mysql數(shù)據(jù)庫圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • MySQL8 臨時(shí)關(guān)閉緩存的方法實(shí)現(xiàn)

    MySQL8 臨時(shí)關(guān)閉緩存的方法實(shí)現(xiàn)

    在某些場(chǎng)景下,如基準(zhǔn)測(cè)試、數(shù)據(jù)一致性檢查或高頻數(shù)據(jù)更新,可能需要臨時(shí)關(guān)閉緩存以獲得更準(zhǔn)確的性能數(shù)據(jù)或解決性能問題,本文就詳細(xì)的介紹一下MySQL8 臨時(shí)關(guān)閉緩存的方法實(shí)現(xiàn),感興趣的可以了解一下
    2024-10-10
  • ubuntu 16.04配置MySQL主從同步的配置方法

    ubuntu 16.04配置MySQL主從同步的配置方法

    這篇文章主要介紹了ubuntu 16.04配置MySQL主從同步的配置方法,需要的朋友可以參考下
    2018-03-03
  • MySQL進(jìn)階SELECT語法篇

    MySQL進(jìn)階SELECT語法篇

    從這個(gè)基本語法可以看出,最簡(jiǎn)單的SELECT語句是SELECT select_list,實(shí)際上利用這個(gè)最簡(jiǎn)單的SELECT語句,你也可以完成許多你期待的功能,首先你能利用它進(jìn)行MySQL所支持的任何運(yùn)算,例如:SELECT 1+1,它將返回2;其次,你也能利用它給變量賦值,而在PHP中,運(yùn)用SELECT語句的這種功能,你就可以自由地運(yùn)用MySQL的函數(shù)為PHP程序進(jìn)行各種運(yùn)算,并賦值給變量。在很多的時(shí)候,你會(huì)發(fā)現(xiàn)MySQL擁有許多比PHP更為功能強(qiáng)大的函數(shù)。
    2008-04-04

最新評(píng)論