zoukankan      html  css  js  c++  java
  • MySql数据库中,判断表、表字段是否存在,不存在就新增

    本文是针对MySql数据库创建的SQL脚本,别搞错咯。

    判断表是否存在,不存在就可新增

    CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` (
      ...
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    判断表字段是否存在,不存在就可新增、修改、删除,移除修改列名

    MySql中没有直接的语法可以在增加列前进行判断该列是否存在,解决方案是写一个存储过程来完成此任务。

    参考:https://blog.csdn.net/huangjin0507/article/details/49330413

    DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;
    DELIMITER$$
    -- 1表示新增列,2表示修改列类型,3表示删除列
    CREATE PROCEDURE Pro_Temp_ColumnWork(TableName VARCHAR(50),ColumnName VARCHAR(50),SqlStr VARCHAR(4000),CType INT)
    BEGIN
    DECLARE Rows1 INT;
    SET Rows1=0;
    SELECT COUNT(*) INTO Rows1  FROM INFORMATION_SCHEMA.Columns
    WHERE table_schema= DATABASE() AND table_name=TableName AND column_name=ColumnName;
    -- 新增列
    IF (CType=1 AND Rows1<=0) THEN
    SET SqlStr := CONCAT( 'ALTER TABLE ',TableName,' ADD COLUMN ',ColumnName,' ',SqlStr);
    -- 修改列类型
    ELSEIF (CType=2 AND Rows1>0)  THEN
    SET SqlStr := CONCAT('ALTER TABLE ',TableName,' MODIFY  ',ColumnName,' ',SqlStr);
    -- 删除列
    ELSEIF (CType=3 AND Rows1>0) THEN
    SET SqlStr := CONCAT('ALTER TABLE  ',TableName,' DROP COLUMN  ',ColumnName);
    ELSE  SET SqlStr :='';
    END IF;
    -- 执行命令
    IF (SqlStr<>'') THEN 
    SET @SQL1 = SqlStr;
    PREPARE stmt1 FROM @SQL1;
    EXECUTE stmt1;
    END IF;
    END$$
    DELIMITER ;
    
    
    
    -- 当前数据库 TableName表名 ColumnName列名
    -- 新增列
    -- CALL Pro_Temp_ColumnWork ('表名','字段名','字段参数 ', 1);
    -- CALL Pro_Temp_ColumnWork ('表名','字段名','int(11) NULL DEFAULT NULL AFTER `xxxxxxxxxxx`; ', 1);
    -- 删除列
    -- CALL Pro_Temp_ColumnWork ('e_handcard_control','EntranceType','', 3);
    
    
    
    
    
    
    
    -- 最后再执行一遍删除存储过程
    DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;
  • 相关阅读:
    Thinkphp随堂笔记【模型初步上】
    Thinkphp随堂笔记【MVC模式和URl访问的四种方式】
    C# set get 个人学习笔记
    关于文件的操作r、r+、w、w+
    HTTPS的通信步骤02
    HTTPS的通信步骤01
    python六剑客之reduce()函数
    python六剑客之filter()函数
    python六剑客之map()函数
    TCP/IP四层模型
  • 原文地址:https://www.cnblogs.com/gilbert/p/10130009.html
Copyright © 2011-2022 走看看