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

mysql創(chuàng)建存儲(chǔ)過程實(shí)現(xiàn)往數(shù)據(jù)表中新增字段的方法分析

 更新時(shí)間:2018年12月27日 12:02:18   作者:菜鳥學(xué)編程$  
這篇文章主要介紹了mysql創(chuàng)建存儲(chǔ)過程實(shí)現(xiàn)往數(shù)據(jù)表中新增字段的方法,結(jié)合實(shí)例形式對(duì)比分析了通過存儲(chǔ)過程新增字段相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了mysql創(chuàng)建存儲(chǔ)過程實(shí)現(xiàn)往數(shù)據(jù)表中新增字段的方法。分享給大家供大家參考,具體如下:

需求:

往某數(shù)據(jù)庫(kù)的某個(gè)表中新增一個(gè)字段(若該字段已存在,則不做操作;若該字段不存在,則新增)

百度了n久,沒有符合要求的例子,只有參考加自己琢磨,最終終于給弄出來了,以下是幾個(gè)版本的更迭

第一版:

DELIMITER $$
CREATE PROCEDURE insert_column()
BEGIN
IF NOT EXISTS(SELECT 1 FROM information_schema.columns
WHERE table_schema='ltivalley' AND table_name='t_luck'
AND column_name='sss' ) THEN
alter table ltivalley.t_luck add sss varchar(255) not Null;
end if;
END
$$
DELIMITER ;

此存儲(chǔ)過程可以做到往ltivalley數(shù)據(jù)庫(kù)的t_luck表中新增一個(gè)sss的字段,但寫死了,毫無靈活性,故沒用!

第二版:

DELIMITER $$
CREATE PROCEDURE insert_column(in dbname varchar(255),in tbname varchar(255),in colname varchar(255))
set @sql_1= concat("IF NOT EXISTS(SELECT 1 FROM
information_schema.columns WHERE table_schema=",dbname,"
AND table_name=",tbname," AND column_name=",colname,")
THEN
alter table ",dbname,".",tbname," add ",colname,"
varchar(255) not null;
end if;");
PREPARE stmt FROM @sql_1;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
$$
DELIMITER ;

創(chuàng)建存儲(chǔ)過程沒有問題,但當(dāng)調(diào)用的時(shí)候就會(huì)出錯(cuò),報(bào) "IF"左右出錯(cuò),原因是在mysql中IF只能存在于存儲(chǔ)過程中,此處用EXECUTE stmt來執(zhí)行,等于是不在存儲(chǔ)過程里面執(zhí)行if語句,所以報(bào)錯(cuò),執(zhí)行不了!故沒用!

第三版

DELIMITER $$
CREATE PROCEDURE insert_column(in dbname varchar(255),in tbname varchar(255),in colname varchar(255))
BEGIN
SET @selec=CONCAT('SELECT 1 FROM information_schema.columns WHERE table_schema="',dbname,'" AND table_name="',tbname,'" AND column_name="',colname,'"');
PREPARE selec FROM @selec;
SET @addcol=CONCAT('ALTER TABLE ',dbname,'.',tbname,' ADD ',colname,' VARCHAR(255)');
PREPARE addcol FROM @addcol;
IF NOT EXISTS(EXECUTE selec;)THEN
EXECUTE addcol;
END IF;
END
$$
DELIMITER ;

無法創(chuàng)建存儲(chǔ)過程,原因是在IF NOT EXISTS()中,不能執(zhí)行EXECUTE selec語句,原因未知。故沒用!

終極版

DROP PROCEDURE IF EXISTS insert_column;
DELIMITER $$
CREATE PROCEDURE insert_column(in dbname varchar(255),in tbname varchar(255),in colname varchar(255))
BEGIN
set @iscolexists = 0;
SET @selec=CONCAT('SELECT count(*) into @iscolexists FROM information_schema.columns WHERE table_schema="',dbname,'" AND table_name="',tbname,'" AND column_name="',colname,'"');
PREPARE selec FROM @selec;
EXECUTE selec;
DEALLOCATE PREPARE selec;
SET @addcol=CONCAT('ALTER TABLE ',dbname,'.',tbname,' ADD ',colname,' VARCHAR(255)');
PREPARE addcol FROM @addcol;
IF(@iscolexists=0)THEN
EXECUTE addcol;
END IF;
END
$$
DELIMITER ;

最終的結(jié)果,先執(zhí)行EXECUTE selec,將結(jié)果存放到一個(gè)變量@iscolexists中,然后再在IF()中判斷@iscolexists的值,做相應(yīng)操作??捎茫?/p>

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲(chǔ)過程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

相關(guān)文章

  • mysql存儲(chǔ)過程 游標(biāo) 循環(huán)使用介紹

    mysql存儲(chǔ)過程 游標(biāo) 循環(huán)使用介紹

    今天分享下自己對(duì)于Mysql存儲(chǔ)過程的認(rèn)識(shí)與了解,這里主要說說大家常用的游標(biāo)加循環(huán)的嵌套使用
    2012-11-11
  • Linux系統(tǒng)徹底刪除Mysql的詳細(xì)教程

    Linux系統(tǒng)徹底刪除Mysql的詳細(xì)教程

    我們?cè)谥匦掳惭bMySQL、或更新MySQL版本時(shí),一定會(huì)遇到mysql數(shù)據(jù)殘留(臟數(shù)據(jù)),或組件沖突等問題,下面這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)徹底刪除Mysql的詳細(xì)教程,需要的朋友可以參考下
    2023-02-02
  • 一篇文章帶你輕松了解MySQL之事務(wù)的簡(jiǎn)介

    一篇文章帶你輕松了解MySQL之事務(wù)的簡(jiǎn)介

    事務(wù)可以由一條非常簡(jiǎn)單的SQL語句組成,也可以由一組復(fù)雜的SQL語句組成,事務(wù)的目的是將數(shù)據(jù)庫(kù)從一種一致性狀態(tài)轉(zhuǎn)換為另一種一致性狀態(tài),下面這篇文章主要給大家介紹了關(guān)于MySQL事務(wù)簡(jiǎn)介的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • mysql 5.7.17的最新安裝教程圖文詳解

    mysql 5.7.17的最新安裝教程圖文詳解

    mysql-5.7.17-winx64是現(xiàn)在最新版本的Mysql,這是免安裝的,所以要進(jìn)行些配置,下面通過本文給大家介紹mysql 5.7.17的最新安裝教程圖文詳解,感興趣的朋友一起學(xué)習(xí)吧
    2017-03-03
  • MySQL事務(wù)的基礎(chǔ)學(xué)習(xí)以及心得分享

    MySQL事務(wù)的基礎(chǔ)學(xué)習(xí)以及心得分享

    本篇內(nèi)容是關(guān)于MySQL事務(wù)的基礎(chǔ)知識(shí)學(xué)習(xí)內(nèi)容,并把學(xué)習(xí)中網(wǎng)友的心得做了總結(jié),分享給大家,一起學(xué)習(xí)參考下吧。
    2017-12-12
  • Mysql中如何查看執(zhí)行計(jì)劃

    Mysql中如何查看執(zhí)行計(jì)劃

    這篇文章主要介紹了Mysql中如何查看執(zhí)行計(jì)劃,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)

    mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)

    mysql分區(qū)表使用方法,新增分區(qū)、刪除分區(qū)、分區(qū)的合并、分區(qū)的拆分等使用方法
    2013-12-12
  • 解決MySQl查詢不區(qū)分大小寫的方法講解

    解決MySQl查詢不區(qū)分大小寫的方法講解

    今天小編就為大家分享一篇關(guān)于解決MySQl查詢不區(qū)分大小寫的方法講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Mysql?數(shù)據(jù)庫(kù)結(jié)構(gòu)及索引類型

    Mysql?數(shù)據(jù)庫(kù)結(jié)構(gòu)及索引類型

    這篇文章主要介紹了Mysql?數(shù)據(jù)庫(kù)結(jié)構(gòu)及索引類型,數(shù)據(jù)庫(kù)索引是?mysql?數(shù)據(jù)庫(kù)中重要的組成部分,是數(shù)據(jù)庫(kù)查詢數(shù)據(jù)速度提升的關(guān)鍵,本文將介紹數(shù)據(jù)庫(kù)索引的一些內(nèi)容,下文更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • Mac下忘記Mysql的root用戶密碼的解決方法

    Mac下忘記Mysql的root用戶密碼的解決方法

    mac中安裝MySQL時(shí)系統(tǒng)會(huì)自動(dòng)為root 賬戶生成一個(gè)密碼(改密碼一般為一個(gè)不好記的字符串),若自己沒有記住改密碼,這時(shí) mysql 就無法進(jìn)入了。解決方案是修改root 賬戶的密碼,問題是mysql進(jìn)不去如何修改,下面就是改問題的解決方法:
    2017-03-03

最新評(píng)論

泊头市| 丰台区| 宝清县| 儋州市| 崇仁县| 贡觉县| 上杭县| 广昌县| 且末县| 雅安市| 资兴市| 山东省| 平山县| 马龙县| 诸暨市| 额济纳旗| 门源| 阿坝县| 普安县| 法库县| 剑川县| 吴川市| 乌海市| 麻阳| 静宁县| 阿坝县| 靖边县| 定州市| 定南县| 海淀区| 微山县| 邻水| 大连市| 张家港市| 日土县| 陆丰市| 大关县| 英吉沙县| 新乡市| 咸宁市| 镇巴县|