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

mysql增量語句如何修改表的字段

 更新時間:2024年12月23日 08:39:05   作者:Mars'Ares  
本文介紹了如何在MySQL中實現(xiàn)數(shù)據(jù)庫的增量更新,確保多次執(zhí)行增量語句不會影響最終結(jié)果,通過使用存儲過程,解決了MySQL無法直接執(zhí)行塊語句的問題,文章詳細描述了增量添加、修改和刪除某個字段的操作,并總結(jié)了增量語句的編寫方法,類似于編寫冪等接口

前言

1、數(shù)據(jù)庫增量語句:基于現(xiàn)有語句實現(xiàn)增量更新且多次執(zhí)行增量語句不會影響最終結(jié)果。即滿足冪等操作。

2、mysql似乎不支持不建立存儲過程/函數(shù)情況,直接執(zhí)行塊語句。。。這點有些無語

3、本文以存儲過程為例。

實現(xiàn)

思路

  • 查詢是否滿足條件
  • 執(zhí)行滿足條件的操作
  • 刪除所有臨時變量

實現(xiàn)前提

-- 查詢當前庫表信息
SELECT * FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE())

-- 查詢當前庫某表信息
SELECT * FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) 
AND TABLE_NAME = '表名'

-- 查詢當前庫某表某字段信息
SELECT * FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = (SELECT DATABASE()) 
AND TABLE_NAME = '表名'
AND COLUMN_NAME = '字段名'

	
-- 刪除某個表字段(不能有引號)
alter table 表名 drop column 字段名; 
-- 添加某個表字段(不能有引號)
alter table 表名 add 字段名 varchar(128) comment '備注等';
-- 修改某個表字段(不能有引號)
alter table 表名 change 舊字段名 新字段名 varchar(128) comment '備注等';



-- 實現(xiàn)用戶變量
SET @變量名='變量值';
SELECT @變量名;

-- 實現(xiàn)條件語句(必須在代碼塊中)
IF @變量='變量值' THEN 
SELECT @變量名;
END IF;

-- 刪除存儲函數(shù)
DROP PROCEDURE IF EXISTS deptProc; 

-- 創(chuàng)建存儲函數(shù)
DELIMITER //
CREATE PROCEDURE deptProc() 
BEGIN
SET @變量名='變量值';
SELECT @變量名;
IF @變量='變量值' THEN 
SELECT @變量名;
END IF;
END//
DELIMITER ;

-- 調(diào)用存儲函數(shù)
CALL deptProc(); 

增量添加某個字段

-- 刪除存儲過程
DROP PROCEDURE IF EXISTS testProc; 

DELIMITER //

-- 創(chuàng)建存儲過程
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)用存儲過程
CALL testProc(); 

-- 刪除存儲過程
DROP PROCEDURE IF EXISTS testProc; 

增量修改某個字段

-- 刪除存儲過程
DROP PROCEDURE IF EXISTS testProc; 

DELIMITER //

-- 創(chuàng)建存儲過程
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)用存儲過程
CALL testProc(); 

-- 刪除存儲過程
DROP PROCEDURE IF EXISTS testProc; 

增量刪除某個字段

-- 刪除存儲過程
DROP PROCEDURE IF EXISTS testProc; 

DELIMITER //

-- 創(chuàng)建存儲過程
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)用存儲過程
CALL testProc(); 

-- 刪除存儲過程
DROP PROCEDURE IF EXISTS testProc; 

總結(jié)

1、增量語句寫法類似于編寫冪等接口,實現(xiàn)多次操作結(jié)果一致。

2、實例中多次使用存儲函數(shù)創(chuàng)建和刪除,實在是因為塊語句無法脫離存儲過程/函數(shù)執(zhí)行

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql子查詢(單行子查詢,多行子查詢,多列子查詢)

    mysql子查詢(單行子查詢,多行子查詢,多列子查詢)

    本文主要介紹了mysql子查詢(單行子查詢,多行子查詢,多列子查詢),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-06-06
  • mysql 跨表查詢、更新、刪除示例

    mysql 跨表查詢、更新、刪除示例

    這篇文章主要介紹了mysql 跨表查詢、更新、刪除,需要的朋友可以參考下
    2014-03-03
  • Linux下編譯安裝Mysql 5.5的簡單步驟

    Linux下編譯安裝Mysql 5.5的簡單步驟

    Linux下面因為從MySQL 5.5開始使用cmake來做config了,所以編譯安裝的會和5.1版本有些區(qū)別。不過總體來說還是差別不大
    2015-08-08
  • MySQL實現(xiàn)每天定時12點彈出黑窗口

    MySQL實現(xiàn)每天定時12點彈出黑窗口

    這篇文章主要介紹了MySQL實現(xiàn)每天定時12點彈出黑窗口問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 解決MySQL8.0時區(qū)的問題步驟

    解決MySQL8.0時區(qū)的問題步驟

    這篇文章主要介紹了解決MySQL8.0時區(qū)的問題步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-12-12
  • 解決mysql登錄報錯:mysql:[Warning] Using a password on the command line interface can be insecure.ERROR 10

    解決mysql登錄報錯:mysql:[Warning] Using a password&

    MySQL root登錄失敗多因密碼錯誤,解決方法包括:檢查密碼是否正確,確認對localhost的訪問權(quán)限,啟用并配置密碼驗證機制,修改my.cnf文件后重啟服務(wù),若問題持續(xù),需聯(lián)系技術(shù)支持
    2025-07-07
  • SQL?SERVER數(shù)據(jù)庫服務(wù)器CPU不能全部利用原因解析

    SQL?SERVER數(shù)據(jù)庫服務(wù)器CPU不能全部利用原因解析

    這篇文章主要介紹了SQL?SERVER數(shù)據(jù)庫服務(wù)器CPU不能全部利用原因解析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • 達夢數(shù)據(jù)庫兼容mysql?GROUP?BY查詢的設(shè)置方式

    達夢數(shù)據(jù)庫兼容mysql?GROUP?BY查詢的設(shè)置方式

    作為一名數(shù)據(jù)庫管理員或開發(fā)者,當項目需要從MySQL遷移到達夢數(shù)據(jù)庫時,最關(guān)心的莫過于兼容性問題,這篇文章主要介紹了達夢數(shù)據(jù)庫兼容mysql?GROUP?BY查詢的設(shè)置方式,需要的朋友可以參考下
    2025-11-11
  • mysql創(chuàng)建表分區(qū)的實現(xiàn)示例

    mysql創(chuàng)建表分區(qū)的實現(xiàn)示例

    表分區(qū)是指根據(jù)一定規(guī)則,將數(shù)據(jù)庫中的一張表分解成多個更小的,容易管理的部分,本文主要介紹了mysql創(chuàng)建表分區(qū)的實現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • CentOS下php使用127.0.0.1不能連接mysql的解決方法

    CentOS下php使用127.0.0.1不能連接mysql的解決方法

    這篇文章主要介紹了CentOS下php使用127.0.0.1不能連接mysql的解決方法,本文原因是SELINUX導(dǎo)致的連接失敗,需要的朋友可以參考下
    2015-01-01

最新評論

陇川县| 襄城县| 汨罗市| 玉门市| 页游| 裕民县| 南木林县| 辉县市| 天镇县| 瑞昌市| 涞水县| 余姚市| 恩平市| 错那县| 日喀则市| 巨野县| 三亚市| 灵石县| 龙海市| 沂南县| 江口县| 东兰县| 光山县| 永城市| 神农架林区| 葵青区| 双辽市| 岢岚县| 桃园县| 蕲春县| 木兰县| 子洲县| 白水县| 泌阳县| 嘉义县| 汉川市| 丹凤县| 诏安县| 姚安县| 明水县| 义马市|