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

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

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

前言

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

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 ;

-- 調用存儲函數(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 ;

-- 調用存儲過程
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 ;

-- 調用存儲過程
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 ;

-- 調用存儲過程
CALL testProc(); 

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

總結

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

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

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

相關文章

最新評論

尼勒克县| 林西县| 鲜城| 宕昌县| 永济市| 玉林市| 衡南县| 页游| 什邡市| 新泰市| 丹寨县| 凤翔县| 墨玉县| 花莲县| 安阳县| 西乡县| 布拖县| 勐海县| 喜德县| 成都市| 卫辉市| 乡宁县| 岳普湖县| 巴马| 宜章县| 彭山县| 蒙山县| 永泰县| 泸水县| 双柏县| 游戏| 嫩江县| 鸡泽县| 手游| 陕西省| 吉木乃县| 天等县| 苏州市| 嵩明县| 荥阳市| 大方县|