Mysql 游標(biāo)(基礎(chǔ)篇)

在數(shù)據(jù)庫中,游標(biāo)是一個(gè)十分重要的概念。游標(biāo)提供了一種對(duì)從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段举户,就本質(zhì)而言,游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制遍烦。游標(biāo)總是與一條SQL? 選擇語句相關(guān)聯(lián)因?yàn)橛螛?biāo)由結(jié)果集(可以是零條俭嘁、一條或由相關(guān)的選擇語句檢索出的多條記錄)和結(jié)果集中指向特定記錄的游標(biāo)位置組成。當(dāng)決定對(duì)結(jié)果集進(jìn)行處理時(shí)服猪,必須聲明一個(gè)指向該結(jié)果集的游標(biāo)供填。如果曾經(jīng)用 C 語言寫過對(duì)文件進(jìn)行處理的程序,那么游標(biāo)就像您打開文件所得到的文件句柄一樣罢猪,只要文件打開成功近她,該文件句柄就可代表該文件。對(duì)于游標(biāo)而言膳帕,其道理是相同的粘捎。可見游標(biāo)能夠?qū)崿F(xiàn)按與傳統(tǒng)程序讀取平面文件類似的方式處理來自基礎(chǔ)表的結(jié)果集危彩,從而把表中數(shù)據(jù)以平面文件的形式呈現(xiàn)給程序攒磨。

游標(biāo)允許應(yīng)用程序?qū)Σ樵冋Z句select? 返回的行結(jié)果集中每一行進(jìn)行相同或不同的操作,而不是一次對(duì)整個(gè)結(jié)果集進(jìn)行同一種操作恬砂;它還提供對(duì)基于游標(biāo)位置而對(duì)表中數(shù)據(jù)進(jìn)行刪除或更新的能力咧纠;而且,正是游標(biāo)把作為面向集合的數(shù)據(jù)庫管理系統(tǒng)和面向行的程序設(shè)計(jì)兩者聯(lián)系起來泻骤,使兩個(gè)數(shù)據(jù)處理方式能夠進(jìn)行溝通漆羔。

一,什么是游標(biāo)(cursor)

個(gè)人覺得就是一個(gè)cursor,就是一個(gè)標(biāo)識(shí)狱掂,用來標(biāo)識(shí)數(shù)據(jù)取到什么地方了演痒。你也可以把它理解成數(shù)組中的下標(biāo)。

二趋惨,游標(biāo)(cursor)的特性

1,只讀的鸟顺,不能更新的。

2,不滾動(dòng)的

3,不敏感的

游標(biāo)(cursor)必須在聲明處理程序之前被聲明器虾,并且變量和條件必須在聲明游標(biāo)或處理程序之前被聲明讯嫂。

三,游標(biāo)的使用

1.數(shù)據(jù)庫中創(chuàng)建函數(shù) ----- 點(diǎn)擊函數(shù)中的創(chuàng)建函數(shù)


2.彈出如下窗口兆沙,設(shè)置函數(shù)名(比如:syf)


3.然后在查詢框會(huì)自動(dòng)生成代碼

```

```

DELIMITER $$

CREATE

/*[DEFINER = { user | CURRENT_USER }]*/

FUNCTION `jingluovip`.`syf`()

RETURNS TYPE

/*LANGUAGE SQL

| [NOT] DETERMINISTIC

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

| COMMENT 'string'*/

BEGIN

```

--這里寫自己的代碼

END$$

DELIMITER ;

```

4.續(xù)寫自己需要的代碼

```

DELIMITER $$

USE `jingluovip`$$

DROP PROCEDURE IF EXISTS `syf`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `syf`

BEGIN

DECLARE? no_more_record INT DEFAULT 0;

DECLARE? a INT DEFAULT 1;

DECLARE? user_username VARCHAR(50);

DECLARE? user_money FLOAT(12,2);

DECLARE? cur_record CURSOR FOR? SELECT username, money FROM `jingluovip`.`sinbegin_user`;? /*首先這里對(duì)游標(biāo)進(jìn)行定義*/

DECLARE? CONTINUE HANDLER FOR NOT FOUND? SET? no_more_record = 1;/*這個(gè)是個(gè)條件處理,針對(duì)NOT FOUND的條件,當(dāng)沒有記錄時(shí)賦值為1*/

OPEN? cur_record;/*接著使用OPEN打開游標(biāo)*/

-- 開始循環(huán)

read_loop: LOOP

-- 提取游標(biāo)里的數(shù)據(jù)欧芽,這里只有一個(gè),多個(gè)的話也一樣葛圃;

FETCH? cur_record INTO user_username, user_money;/*把第一行數(shù)據(jù)寫入變量中,游標(biāo)也隨之指向了記錄的第一行*/

-- 聲明結(jié)束的時(shí)候

-- 注意:這里的循環(huán)體可以根據(jù)自己的需要設(shè)定(while,while...do,if...then等等)

IFno_more_record = 1THEN

LEAVE read_loop;

END IF;

-- 這里做你想做的循環(huán)的事件

UPDATE `dg_users` SET `j_price`=user_money WHERE `username`=user_username ;

SET a = a+1;

END LOOP;

CLOSE? cur_record;? /*用完后記得用CLOSE把資源釋放掉*/

SELECT a;

END$$

DELIMITER ;

```

5.開始執(zhí)行:執(zhí)行完成后的結(jié)果是這樣

表示執(zhí)行成功了千扔!

6.刷新數(shù)據(jù)庫或者直接打開存儲(chǔ)過程憎妙,會(huì)看到一個(gè)syf的文件,然后執(zhí)行這個(gè)創(chuàng)建的函數(shù)syf,

CALL syf();

最終的數(shù)據(jù)結(jié)果表中會(huì)出現(xiàn)a=3318;這樣游標(biāo)也就執(zhí)行完成了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曲楚,一起剝皮案震驚了整個(gè)濱河市厘唾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌龙誊,老刑警劉巖抚垃,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異载迄,居然都是意外死亡讯柔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門护昧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魂迄,“玉大人,你說我怎么就攤上這事惋耙〉肪妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵绽榛,是天一觀的道長湿酸。 經(jīng)常有香客問我,道長灭美,這世上最難降的妖魔是什么推溃? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮届腐,結(jié)果婚禮上铁坎,老公的妹妹穿的比我還像新娘。我一直安慰自己犁苏,他們只是感情好硬萍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著围详,像睡著了一般朴乖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上助赞,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天买羞,我揣著相機(jī)與錄音,去河邊找鬼雹食。 笑死哩都,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婉徘。 我是一名探鬼主播漠嵌,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼盖呼!你這毒婦竟也來了儒鹿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤几晤,失蹤者是張志新(化名)和其女友劉穎约炎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟹瘾,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圾浅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憾朴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狸捕。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖众雷,靈堂內(nèi)的尸體忽然破棺而出灸拍,到底是詐尸還是另有隱情,我是刑警寧澤砾省,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布鸡岗,位于F島的核電站,受9級(jí)特大地震影響编兄,放射性物質(zhì)發(fā)生泄漏轩性。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一狠鸳、第九天 我趴在偏房一處隱蔽的房頂上張望揣苏。 院中可真熱鬧,春花似錦碰煌、人聲如沸舒岸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛾派。三九已至,卻和暖如春个少,著一層夾襖步出監(jiān)牢的瞬間洪乍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工夜焦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壳澳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓茫经,卻偏偏與公主長得像巷波,于是被迫代替她去往敵國和親萎津。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫抹镊。SQL是...
    西貝巴巴閱讀 1,816評(píng)論 0 10
  • 1锉屈、Check規(guī)則 Check (Agebetween15and30 )把年齡限制在15~30歲之間 2、新SQL...
    姜海濤閱讀 829評(píng)論 0 4
  • 創(chuàng)建游標(biāo)首先在MySql中創(chuàng)建一張數(shù)據(jù)表: CREATE TABLE IF NOT EXISTS store (i...
    聽說我很強(qiáng)閱讀 1,172評(píng)論 0 1
  • 夏日的清晨醒來的格外早垮耳,六點(diǎn)鐘的太陽已然很熱颈渊,昨夜與兒子約好今早晨練,洗漱完畢剛想看會(huì)書再叫兒子起床终佛,此時(shí)兒子...
    依然奮斗閱讀 209評(píng)論 0 0
  • 等待換來的俊嗽,可能還是等待 關(guān)心等來的,可能竟是厭惡 微笑表現(xiàn)的铃彰,可能就是痛苦 沉默背后的绍豁,可能只是想你 晚安隱藏的...
    汪書童閱讀 352評(píng)論 0 2