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

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

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

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

需求:

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

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

第一版:

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 ;

此存儲過程可以做到往ltivalley數(shù)據(jù)庫的t_luck表中新增一個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)建存儲過程沒有問題,但當(dāng)調(diào)用的時候就會出錯,報 "IF"左右出錯,原因是在mysql中IF只能存在于存儲過程中,此處用EXECUTE stmt來執(zhí)行,等于是不在存儲過程里面執(zhí)行if語句,所以報錯,執(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)建存儲過程,原因是在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é)果存放到一個變量@iscolexists中,然后再在IF()中判斷@iscolexists的值,做相應(yīng)操作??捎茫?/p>

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    mysql-5.7.17-winx64是現(xiàn)在最新版本的Mysql,這是免安裝的,所以要進行些配置,下面通過本文給大家介紹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ǔ)知識學(xué)習(xí)內(nèi)容,并把學(xué)習(xí)中網(wǎng)友的心得做了總結(jié),分享給大家,一起學(xué)習(xí)參考下吧。
    2017-12-12
  • Mysql中如何查看執(zhí)行計劃

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

    這篇文章主要介紹了Mysql中如何查看執(zhí)行計劃,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    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)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Mysql?數(shù)據(jù)庫結(jié)構(gòu)及索引類型

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

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

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

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

最新評論

明光市| 清远市| 铁力市| 莱芜市| 大悟县| 桦川县| 饶平县| 天津市| 海丰县| 葫芦岛市| 阿拉善盟| 太和县| 安陆市| 扎囊县| 宁陕县| 蓬安县| 梁平县| 商水县| 都匀市| 封开县| 于田县| 岳池县| 商城县| 日照市| 秦皇岛市| 屏边| 喀什市| 五指山市| 莱州市| 牙克石市| 汉阴县| 龙江县| 屏山县| 运城市| 嘉祥县| 山丹县| 汪清县| 越西县| 江城| 响水县| 曲靖市|