欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql增量語(yǔ)句如何修改表的字段

 更新時(shí)間:2024年12月23日 08:39:05   作者:Mars'Ares  
本文介紹了如何在MySQL中實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增量更新,確保多次執(zhí)行增量語(yǔ)句不會(huì)影響最終結(jié)果,通過使用存儲(chǔ)過程,解決了MySQL無(wú)法直接執(zhí)行塊語(yǔ)句的問題,文章詳細(xì)描述了增量添加、修改和刪除某個(gè)字段的操作,并總結(jié)了增量語(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)及例子

    MySQL 創(chuàng)建索引(Create Index)的方法和語(yǔ)法結(jié)構(gòu)及例子
    2009-07-07
  • MySQL實(shí)戰(zhàn)之Insert語(yǔ)句的使用心得

    MySQL實(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-10
  • MySQL慢SQL語(yǔ)句常見誘因以及解決方法

    MySQL慢SQL語(yǔ)句常見誘因以及解決方法

    在本篇文章里小編給大家整理的關(guān)于MySQL慢SQL語(yǔ)句常見誘因以及解決方法,有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 詳解MySQL拼接函數(shù)CONCAT的使用心得

    詳解MySQL拼接函數(shù)CONCAT的使用心得

    這篇文章主要介紹了詳解MySQL拼接函數(shù)CONCAT的使用心得,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • mysql日志觸發(fā)器實(shí)現(xiàn)代碼

    mysql日志觸發(fā)器實(shí)現(xiàn)代碼

    這篇文章主要介紹了mysql日志觸發(fā)器實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2020-02-02
  • Mysql數(shù)據(jù)庫(kù)的主從同步配置

    Mysql數(shù)據(jù)庫(kù)的主從同步配置

    這篇文章主要介紹了Mysql主從同步配置的相關(guān)資料,需要的朋友可以參考下文內(nèi)容
    2021-08-08
  • MySQL數(shù)據(jù)實(shí)時(shí)同步到MongoDB的實(shí)踐分享

    MySQL數(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-01
  • mysql數(shù)據(jù)庫(kù)日志binlog保存時(shí)效問題(expire_logs_days)

    mysql數(shù)據(jù)庫(kù)日志binlog保存時(shí)效問題(expire_logs_days)

    這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)日志binlog保存時(shí)效問題(expire_logs_days),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MySQL中使用MD5加密的實(shí)現(xiàn)

    MySQL中使用MD5加密的實(shí)現(xiàn)

    本文主要介紹了MySQL中使用MD5加密的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • MYSQL使用inner join 進(jìn)行 查詢/刪除/修改示例

    MYSQL使用inner join 進(jìn)行 查詢/刪除/修改示例

    本文為大家介紹下使用inner join 進(jìn)行查詢/刪除/修改,具體實(shí)現(xiàn)如下,學(xué)習(xí)mysql的朋也可以學(xué)習(xí)下,希望對(duì)大家有所幫助
    2013-07-07

最新評(píng)論