最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql基本函數(shù)、循環(huán)、跳出循環(huán)、游標使用及說明

 更新時間:2026年06月14日 10:16:23   作者:destiny@  
這篇文章主要介紹了mysql基本函數(shù)、循環(huán)、跳出循環(huán)、游標使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

SQL99語法新特性

  1. NATURAL JOIN (自然連接) : 她會幫你自動查詢兩張表中所有相同的字段,然后進行等值連接
select a.dept_id,b.dept_id from A a NATURAL JOIN B b
  1. USING : 兩張表中字段一樣(dept_id) 才能使用
select a.dept_id,b.dept_id form A a join A b USING(dept_id)
  1. match ()Against() 全文檢索
  • 需查詢的字段創(chuàng)建為fulltext索引
  • match默認不支持中文檢索,所以添加索引時需要添加解析器: WITH PARSER ngram
  • 傳統(tǒng)like會是索引失效
  • show VARIABLES like 'ngram_token_size’查看分詞方式,可以修改
SELECT
	id_,
	pat_name,
	id_card_no,
	phone_ 
FROM
	`inspect_meal_appointment_record` 
WHERE
	MATCH ( pat_name ) Against (
	'張三' 
	)
	

create fulltext index ind on inspect_meal_appointment_record (pat_name)  WITH PARSER ngram;


基本函數(shù)

循環(huán)

使用儲存過程(procedure)進行演示

repeat 循環(huán)

CREATE DEFINER=`root`@`localhost` PROCEDURE `repeatTest`()
BEGIN
	DECLARE nums INT DEFAULT 1;
	
	REPEAT
	  set nums = nums+1;
		UNTIL nums >= 10
		
	END REPEAT;

SELECT nums;


END

while 循環(huán)

CREATE DEFINER=`root`@`localhost` PROCEDURE `whileTest`()
BEGIN
	DECLARE nums INT DEFAULT 1;
	
	WHILE nums <= 10 DO
	set nums = nums+1;
END WHILE;


SELECT nums;


END

loop循環(huán)

CREATE DEFINER=`root`@`localhost` PROCEDURE `loopTest`()
BEGIN
	DECLARE nums INT DEFAULT 1;
	
	test_label: LOOP
	set nums = nums+1;

	IF nums >= 110 THEN
		LEAVE test_label; 
	END IF; 
END LOOP test_label;



SELECT nums;


END

leave 跳出

可以用在循環(huán)或者單獨的語句中

CREATE DEFINER=`root`@`localhost` PROCEDURE `leaveTest`()
BEGIN
	DECLARE nums INT DEFAULT 1;
	
	while_label:WHILE TRUE DO
		IF nums > 10 THEN LEAVE while_label;
		END IF;
		set nums = nums+1;
END WHILE;


SELECT nums;


END

iterate 執(zhí)行下一次循環(huán)

只能用在循環(huán)中,相當于java的 continue

CREATE DEFINER=`root`@`localhost` PROCEDURE `ITERATETest`()
BEGIN
	DECLARE nums INT DEFAULT 1;
	
	test_label: LOOP
	set nums = nums+1;
	IF nums < 10
			THEN ITERATE test_label;
	ELSEIF nums > 15 
	THEN LEAVE test_label; 
	END IF; 
END LOOP test_label;



SELECT nums;


END

游標

CREATE DEFINER=`inspect-v2-develop`@`%` PROCEDURE `updateTypeLabel`()
    COMMENT '數(shù)據(jù)遷移,儲存過程'
BEGIN
	DECLARE s INT DEFAULT  0;
	DECLARE mealId VARCHAR(64);
	DECLARE num INT DEFAULT 0;
	
	DECLARE list CURSOR FOR  SELECT deploy_meal_id,COUNT(deploy_meal_id) from inspect_meal_deploy WHERE   is_deleted = '0' GROUP BY deploy_meal_id;
	
	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = 1;
	
	OPEN list;
		
		FETCH list into mealId,num;
		while s<> 1 do
			IF num >= 1 THEN 
			UPDATE  inspect_meal_type_label SET meal_deploy_id = (SELECT id_ FROM inspect_meal_deploy WHERE is_deleted = '0' AND deploy_meal_id = mealId LIMIT 1) WHERE meal_id =  mealId AND is_deleted = '0';
			END IF;
			
			FETCH list into mealId,num;
		END WHILE;
		
	CLOSE list;

END

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = 1;是一個聲明句柄,它類似于存儲過程中的一個異常。

這里邊有一個關(guān)鍵字continue,這個關(guān)鍵字是和exit關(guān)鍵字相對應(yīng)的。continue語句會執(zhí)行完指定操作后繼續(xù)循環(huán),而exit語句會退出將從最近的begin…end語句塊中退出。 在這里的指定的操作就是set s = 1。

既然聲明了句柄,就要告訴程序句柄在什么時候調(diào)用,在這個例子中,當sqlstate '02000'語句被調(diào)用時會執(zhí)行句柄。那么這個sqlstate '02000'是什么意思呢?該句柄將在無法再找到記錄行后調(diào)用。也就是說當遍歷完所有的結(jié)果集后就會調(diào)用。

因此,DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = 1;的意思就是當遍歷完結(jié)果集之后把s的值設(shè)為1。

注意,句柄要定義在游標之后,不然會報ERROR 1338 (42000): Cursor declaration after handler declaration錯誤。

總結(jié)

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

相關(guān)文章

  • 有關(guān)mysql優(yōu)化的一些東東整理

    有關(guān)mysql優(yōu)化的一些東東整理

    有關(guān)mysql優(yōu)化的一些東東,自己整理的,網(wǎng)上搜集的,供朋友們學習參考吧
    2013-02-02
  • MySQL?查詢?并集、交集、差集方式

    MySQL?查詢?并集、交集、差集方式

    這篇文章主要介紹了MySQL?查詢?并集、交集、差集方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MYSQL開啟遠程訪問權(quán)限的方法

    MYSQL開啟遠程訪問權(quán)限的方法

    在本篇文章里小編給大家整理的是關(guān)于MYSQL開啟遠程訪問權(quán)限的方法,對此有興趣的朋友們可以跟著學習下。
    2020-02-02
  • MYSQL中EXISTS的用法小結(jié)

    MYSQL中EXISTS的用法小結(jié)

    在MySQL數(shù)據(jù)庫中,EXISTS是一種強大的工具,用于處理復(fù)雜的查詢需求,本文主要介紹了MYSQL中EXISTS的用法小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • MySQL定時任務(wù)(EVENT事件)如何配置詳解

    MySQL定時任務(wù)(EVENT事件)如何配置詳解

    這篇文章主要介紹了MySQL定時任務(wù)(EVENT事件)如何配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 教你如何讓spark?sql寫mysql的時候支持update操作

    教你如何讓spark?sql寫mysql的時候支持update操作

    spark提供了一個枚舉類,用來支撐對接數(shù)據(jù)源的操作模式,本文重點給大家介紹如何讓spark?sql寫mysql的時候支持update操作,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-02-02
  • CentOS 7 下使用yum安裝MySQL5.7.20 最簡單方法

    CentOS 7 下使用yum安裝MySQL5.7.20 最簡單方法

    這篇文章主要介紹了CentOS 7 下使用yum安裝MySQL5.7.20 最簡單 方法,需要的朋友可以參考下
    2018-11-11
  • MySQL主從同步延遲原因與解決方案

    MySQL主從同步延遲原因與解決方案

    本文主要介紹了MySQL主從同步延遲原因與解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • 簡析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫報錯問題

    簡析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫報錯問題

    這篇文章主要介紹了簡析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫報錯問題,具有一定參考價值,需要的朋友可以了解。
    2017-10-10
  • MySQL配置文件my.ini的使用解讀

    MySQL配置文件my.ini的使用解讀

    這篇文章主要介紹了MySQL配置文件my.ini的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

禹城市| 兴海县| 青浦区| 高碑店市| 宁阳县| 娄烦县| 泰来县| 宜州市| 原阳县| 西宁市| 修水县| 五大连池市| 朝阳市| 昭苏县| 辽宁省| 海伦市| 尉犁县| 襄城县| 长治县| 黎平县| 龙泉市| 南木林县| 高雄市| 保德县| 得荣县| 荥经县| 阿荣旗| 云安县| 东乡县| 高雄市| 长宁区| 上思县| 乳源| 深圳市| 泾川县| 呼伦贝尔市| 桃园县| 库伦旗| 民县| 阳原县| 葫芦岛市|