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

MySql學(xué)習(xí)心得之存儲(chǔ)過(guò)程

 更新時(shí)間:2014年06月13日 08:44:00   投稿:hebedich  
之前總是在MSSQL上寫存儲(chǔ)過(guò)程,沒(méi)有在MYSQL上寫過(guò),也基本沒(méi)有用過(guò),今天需要用到MYSQL,研究了下,把項(xiàng)目的需要的存儲(chǔ)過(guò)程寫了一部分,寫一下工作總結(jié)。這里沒(méi)有給出數(shù)據(jù)庫(kù)結(jié)構(gòu),不討論SQL語(yǔ)句的細(xì)節(jié),主要探討存儲(chǔ)過(guò)程語(yǔ)法,適合有基礎(chǔ)的人。

先來(lái)看段mysql查詢文章回復(fù)語(yǔ)句:

復(fù)制代碼 代碼如下:

#查詢文章回復(fù)
-- ----------------------------
-- Procedure structure for `sp_select_reply_article`
-- ----------------------------
DROP PROCEDURE IF EXISTS `sp_select_reply_article`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_select_reply_article`(IN `ra_id` int,IN `pagefrom` int,IN `pagesize` int)
BEGIN
         #Routine body goes here...
         SET @ra_id = ra_id;
         SET @pagefrom = pagefrom;
         SET @pagesize = pagesize;
         SET @ssra = CONCAT('SELECT * FROM gk_article WHERE id = ? LIMIT ?,?');
         PREPARE sqlquery FROM @ssra;
         EXECUTE sqlquery USING @ra_id,@pagefrom,@pagesize;
END

DELIMITER ;

#技術(shù)點(diǎn)1:MySql5.1不支持LIMIT參數(shù)(MySql5.5就支持了),如果編寫存儲(chǔ)過(guò)程時(shí)使用LIMIT做變量,那是需要用動(dòng)態(tài)SQL來(lái)構(gòu)建的,而這樣做性能肯定沒(méi)有靜態(tài)SQL好。主要代碼如下:

復(fù)制代碼 代碼如下:

         SET @ssra = CONCAT('SELECT * FROM gk_article WHERE id = ? LIMIT ?,?');
         PREPARE sqlquery FROM @ssra;
         EXECUTE sqlquery USING @ra_id,@pagefrom,@pagesize;


#技術(shù)點(diǎn)2:如果同時(shí)需要返回受影響行數(shù)需要在語(yǔ)句后面添加語(yǔ)句:ROW_COUNT()函數(shù),兩條語(yǔ)句之間需要“;”分隔。

復(fù)制代碼 代碼如下:

#更新數(shù)據(jù)
-- ----------------------------
-- Procedure structure for `sp_update_permission`
-- ----------------------------
DROP PROCEDURE IF EXISTS `sp_update_permission`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_update_permission`(IN `puser_uid` varchar(20),IN `plevel` int,IN `ppower` int)
BEGIN
         #Routine body goes here...

         SET @puser_uid = puser_uid;
         SET @plevel = plevel;
         SET @ppower = ppower;
         UPDATE gk_permission SET `level` = @plevel, power = @ppower WHERE user_uid = CONVERT(@puser_uid USING utf8) COLLATE utf8_unicode_ci;
END

DELIMITER ;

#技術(shù)點(diǎn)3:MySQL進(jìn)行字符串比較時(shí)發(fā)生錯(cuò)誤(Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='),解決方法:將比較等式一邊進(jìn)行字符串轉(zhuǎn)換,如改為“CONVERT(b.fullCode USING utf8) COLLATE utf8_unicode_ci”,主要代碼如下:

復(fù)制代碼 代碼如下:

         UPDATE gk_permission SET `level` = @plevel, power = @ppower WHERE user_uid = CONVERT(@puser_uid USING utf8) COLLATE utf8_unicode_ci;

復(fù)制代碼 代碼如下:

#插入數(shù)據(jù)
-- ----------------------------
-- Procedure structure for `sp_insert_user`
-- ----------------------------
DROP PROCEDURE IF EXISTS `sp_insert_user`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_user`(IN `uid` varchar(20),IN `upw` varchar(32),IN `name` varchar(20),IN `sex` int,IN `phone` varchar(20),IN `u_id` int,IN `s_id` int,IN `j_id` int)
BEGIN
         #Routine body goes here...
         SET @uid = uid;
         SET @upw = upw;
         SET @uname = uname;
         SET @sex = sex;
         SET @phone = phone;
         #由于外鍵約束,所以添加的外鍵字段需要在對(duì)應(yīng)外鍵所在表有相應(yīng)數(shù)據(jù)
         SET @u_id = u_id;
         SET @s_id = s_id;
         SET @j_id = j_id;
         SET @verifytime = DATE('0000-00-00');
         INSERT INTO gk_user(uid,upw,uname,sex,phone,u_id,s_id,j_id,verifytime)
       VALUES(@uid,@upw,@uname,@sex,@phone,@u_id,@s_id,@j_id,@verifytime);
         #查詢結(jié)果會(huì)自動(dòng)返回受影響行數(shù)
END

DELIMITER ;

復(fù)制代碼 代碼如下:

#根據(jù)ID刪除數(shù)據(jù)
-- ----------------------------
-- Procedure structure for `sp_delete_exchange_by_id`
-- ----------------------------
DROP PROCEDURE IF EXISTS `sp_delete_exchange_by_id`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_exchange_by_id`(IN `eid` int)
BEGIN
         #Routine body goes here...
         SET @eid = eid;
         DELETE FROM gk_exchange WHERE id = @eid;
END

DELIMITER ;

復(fù)制代碼 代碼如下:

#通過(guò)賬號(hào)查詢用戶或者管理員
-- ----------------------------
-- Procedure structure for `sp_select_user_by_uid`
-- ----------------------------
DROP PROCEDURE IF EXISTS `sp_select_user_by_uid`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_select_user_by_uid`(IN `uid` varchar(20),IN `getAdmin` int)
BEGIN
         #Routine body goes here...
         SET @uid = uid;
         #SET @getadmin = getAdmin;
         #查詢管理員
         IF (getAdmin = 1) THEN
                   SELECT us.*, un.`name`, se.`name`, jo.`name`, pe.`level`, pe.power FROM gk_user AS us, gk_unit AS un, gk_section AS se, gk_jobtitle AS jo, gk_permission AS pe WHERE us.u_id = un.id AND us.s_id = se.id AND us.j_id = jo.id AND us.uid = pe.user_uid AND us.uid = CONVERT(@uid USING utf8) COLLATE utf8_unicode_ci;
         END IF;
         #查詢用戶
         IF (getAdmin = 0) THEN
                   SELECT us.*, un.`name`, se.`name`, jo.`name` FROM gk_user AS us, gk_unit AS un, gk_section AS se, gk_jobtitle AS jo WHERE us.u_id = un.id AND us.s_id = se.id AND us.j_id = jo.id AND us.uid = CONVERT(@uid USING utf8) COLLATE utf8_unicode_ci;
         END IF;
END

DELIMITER ;

#技術(shù)點(diǎn)4:這個(gè)存數(shù)過(guò)程需要用到控制語(yǔ)句(if else elseif while loop repeat leave iterate)。

復(fù)制代碼 代碼如下:

         IF (getAdmin = 1) THEN
                   #語(yǔ)句…
         END IF;

#技術(shù)點(diǎn)5:在傳入?yún)?shù)不匹配的情況下報(bào)錯(cuò)(Column count doesn't match value count at row 1),這個(gè)就是細(xì)心問(wèn)題了,詳細(xì)檢查參數(shù)吧。

#技術(shù)點(diǎn)6:獲取當(dāng)前時(shí)間的函數(shù):NOW()

#技術(shù)點(diǎn)7:“`”這個(gè)符號(hào)是反單引號(hào),兩個(gè)反單引號(hào)夾起來(lái)的會(huì)被當(dāng)做變量,一般是在定義字段時(shí)遇到關(guān)鍵字沖突的時(shí)候會(huì)用到。

相關(guān)文章

  • 記一次mysql5.7測(cè)試數(shù)據(jù)庫(kù)被刪表的問(wèn)題

    記一次mysql5.7測(cè)試數(shù)據(jù)庫(kù)被刪表的問(wèn)題

    這篇文章主要介紹了記一次mysql5.7測(cè)試數(shù)據(jù)庫(kù)被刪表的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Mysql version can not be less than 4.1 出錯(cuò)解決辦法

    Mysql version can not be less than 4.1 出錯(cuò)解決辦法

    這篇文章主要介紹了Mysql version can not be less than 4.1 解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MySQL rand()函數(shù)、rand(n)、生成不重復(fù)隨機(jī)數(shù)

    MySQL rand()函數(shù)、rand(n)、生成不重復(fù)隨機(jī)數(shù)

    MySQL提供了rand()函數(shù)來(lái)生成隨機(jī)數(shù),包括無(wú)參數(shù)rand()和有參數(shù)rand(n)等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • MySQL報(bào)錯(cuò)sql_mode=only_full_group_by的問(wèn)題解決

    MySQL報(bào)錯(cuò)sql_mode=only_full_group_by的問(wèn)題解決

    本文主要介紹了MySQL報(bào)錯(cuò)sql_mode=only_full_group_by的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • mysql優(yōu)化利器之explain使用介紹

    mysql優(yōu)化利器之explain使用介紹

    這篇文章主要介紹了mysql優(yōu)化利器之explain使用介紹,需要的朋友可以參考下
    2017-01-01
  • MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因

    MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因

    這篇文章主要介紹了MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-01-01
  • Mysql如何適當(dāng)?shù)奶砑铀饕榻B

    Mysql如何適當(dāng)?shù)奶砑铀饕榻B

    今天小編就為大家分享一篇關(guān)于Mysql如何適當(dāng)?shù)奶砑铀饕榻B,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • mysql 登錄時(shí)閃退的問(wèn)題解決方法

    mysql 登錄時(shí)閃退的問(wèn)題解決方法

    這篇文章主要介紹了mysql 登錄時(shí)閃退的問(wèn)題解決方法的相關(guān)資料,mysql 出現(xiàn)閃退問(wèn)題,很是棘手在做項(xiàng)目的時(shí)候,這里對(duì)解決這樣的問(wèn)題提供了解決方案,需要的朋友可以參考下
    2016-11-11
  • 淺析MySQL - MVCC

    淺析MySQL - MVCC

    這篇文章主要介紹了MySQL - MVCC的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-11-11
  • mysql中找不到my.ini文件的問(wèn)題及解決

    mysql中找不到my.ini文件的問(wèn)題及解決

    這篇文章主要介紹了mysql中找不到my.ini文件的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論

抚远县| 武邑县| 潜江市| 尖扎县| 洪江市| 宜昌市| 开平市| 灵川县| 四子王旗| 兰州市| 嘉定区| 略阳县| 武夷山市| 辽阳县| 金沙县| 清水县| 民县| 确山县| 宜君县| 乌兰浩特市| 商南县| 桑植县| 鄱阳县| 张家川| 克什克腾旗| 丽水市| 海伦市| 武城县| 漳浦县| 屯留县| 彩票| 碌曲县| 奉贤区| 通许县| 兴安盟| 永寿县| 临猗县| 饶平县| 犍为县| 延长县| 教育|