亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)文章

最新評論