mysql增量語(yǔ)句如何修改表的字段
前言
1、數(shù)據(jù)庫(kù)增量語(yǔ)句:基于現(xiàn)有語(yǔ)句實(shí)現(xiàn)增量更新且多次執(zhí)行增量語(yǔ)句不會(huì)影響最終結(jié)果。即滿足冪等操作。
2、mysql似乎不支持不建立存儲(chǔ)過程/函數(shù)情況,直接執(zhí)行塊語(yǔ)句。。。這點(diǎn)有些無(wú)語(yǔ)
3、本文以存儲(chǔ)過程為例。
實(shí)現(xiàn)
思路
- 查詢是否滿足條件
- 執(zhí)行滿足條件的操作
- 刪除所有臨時(shí)變量
實(shí)現(xiàn)前提
-- 查詢當(dāng)前庫(kù)表信息 SELECT * FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) -- 查詢當(dāng)前庫(kù)某表信息 SELECT * FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = '表名' -- 查詢當(dāng)前庫(kù)某表某字段信息 SELECT * FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = '表名' AND COLUMN_NAME = '字段名' -- 刪除某個(gè)表字段(不能有引號(hào)) alter table 表名 drop column 字段名; -- 添加某個(gè)表字段(不能有引號(hào)) alter table 表名 add 字段名 varchar(128) comment '備注等'; -- 修改某個(gè)表字段(不能有引號(hào)) alter table 表名 change 舊字段名 新字段名 varchar(128) comment '備注等'; -- 實(shí)現(xiàn)用戶變量 SET @變量名='變量值'; SELECT @變量名; -- 實(shí)現(xiàn)條件語(yǔ)句(必須在代碼塊中) IF @變量='變量值' THEN SELECT @變量名; END IF; -- 刪除存儲(chǔ)函數(shù) DROP PROCEDURE IF EXISTS deptProc; -- 創(chuàng)建存儲(chǔ)函數(shù) DELIMITER // CREATE PROCEDURE deptProc() BEGIN SET @變量名='變量值'; SELECT @變量名; IF @變量='變量值' THEN SELECT @變量名; END IF; END// DELIMITER ; -- 調(diào)用存儲(chǔ)函數(shù) CALL deptProc();
增量添加某個(gè)字段
-- 刪除存儲(chǔ)過程 DROP PROCEDURE IF EXISTS testProc; DELIMITER // -- 創(chuàng)建存儲(chǔ)過程 CREATE PROCEDURE testProc() BEGIN -- 查詢條件 SELECT COUNT(*) into @y FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = '表名' AND COLUMN_NAME = '字段名'; -- 查詢條件 -- 判斷存在 IF @y=0 THEN alter table 表名 add 字段名 varchar(32) comment '備注等'; -- ELSEIF alter table 表名 change 字段名 字段名 varchar(32) comment '備注等'; END IF; -- 判斷存在 END //DELIMITER ; -- 調(diào)用存儲(chǔ)過程 CALL testProc(); -- 刪除存儲(chǔ)過程 DROP PROCEDURE IF EXISTS testProc;
增量修改某個(gè)字段
-- 刪除存儲(chǔ)過程 DROP PROCEDURE IF EXISTS testProc; DELIMITER // -- 創(chuàng)建存儲(chǔ)過程 CREATE PROCEDURE testProc() BEGIN -- 查詢條件 SELECT COUNT(*) into @y FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = '表名' AND COLUMN_NAME = '舊字段名'; -- 查詢條件 -- 判斷存在 IF @y=1 THEN alter table 表名 change 舊字段名 新字段名 varchar(32) comment '備注等'; -- ELSEIF @y =0 THEN alter table 表名 add 新字段名 varchar(32) comment '備注等'; END IF; -- 判斷存在 END //DELIMITER ; -- 調(diào)用存儲(chǔ)過程 CALL testProc(); -- 刪除存儲(chǔ)過程 DROP PROCEDURE IF EXISTS testProc;
增量刪除某個(gè)字段
-- 刪除存儲(chǔ)過程 DROP PROCEDURE IF EXISTS testProc; DELIMITER // -- 創(chuàng)建存儲(chǔ)過程 CREATE PROCEDURE testProc() BEGIN -- 查詢條件 SELECT COUNT(*) into @y FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) AND TABLE_NAME = '表名' AND COLUMN_NAME = '舊字段名'; -- 查詢條件 -- 判斷存在 IF @y=1 THEN alter table 表名 drop 舊字段名; END IF; -- 判斷存在 END //DELIMITER ; -- 調(diào)用存儲(chǔ)過程 CALL testProc(); -- 刪除存儲(chǔ)過程 DROP PROCEDURE IF EXISTS testProc;
總結(jié)
1、增量語(yǔ)句寫法類似于編寫冪等接口,實(shí)現(xiàn)多次操作結(jié)果一致。
2、實(shí)例中多次使用存儲(chǔ)函數(shù)創(chuàng)建和刪除,實(shí)在是因?yàn)閴K語(yǔ)句無(wú)法脫離存儲(chǔ)過程/函數(shù)執(zhí)行
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL 創(chuàng)建索引(Create Index)的方法和語(yǔ)法結(jié)構(gòu)及例子
MySQL 創(chuàng)建索引(Create Index)的方法和語(yǔ)法結(jié)構(gòu)及例子2009-07-07MySQL實(shí)戰(zhàn)之Insert語(yǔ)句的使用心得
這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)之Insert語(yǔ)句的使用心得的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10MySQL數(shù)據(jù)實(shí)時(shí)同步到MongoDB的實(shí)踐分享
很多 DBA 同學(xué)經(jīng)常會(huì)遇到要從一個(gè)數(shù)據(jù)庫(kù)實(shí)時(shí)同步到另一個(gè)數(shù)據(jù)庫(kù)的問題,同構(gòu)數(shù)據(jù)還相對(duì)容易,遇上異構(gòu)數(shù)據(jù)、表多、數(shù)據(jù)量大等情況就難以同步,我自己親測(cè)了一種方式可以實(shí)現(xiàn)MySQL數(shù)據(jù)實(shí)時(shí)同步到MongoDB,跟大家分享一下,希望對(duì)你有幫助2024-01-01mysql數(shù)據(jù)庫(kù)日志binlog保存時(shí)效問題(expire_logs_days)
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)日志binlog保存時(shí)效問題(expire_logs_days),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03MYSQL使用inner join 進(jìn)行 查詢/刪除/修改示例
本文為大家介紹下使用inner join 進(jìn)行查詢/刪除/修改,具體實(shí)現(xiàn)如下,學(xué)習(xí)mysql的朋也可以學(xué)習(xí)下,希望對(duì)大家有所幫助2013-07-07