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

CREATE TABLE IF NOT EXISTS `example` (...
) 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列名  SqlStr 字段参数,用来拼接sql语句
-- CType 类型 / 1 为新增 ,2为 修改 , 3 为删除
-- 新增列
-- CALL Pro_Temp_ColumnWork ('表名','字段名','字段参数 ', 1);
-- CALL Pro_Temp_ColumnWork ('表名','字段名','int(11) NULL DEFAULT NULL;', 1);
-- CALL Pro_Temp_ColumnWork ('example','status','int(11) NULL DEFAULT NULL;', 1);
-- 删除列
-- CALL Pro_Temp_ColumnWork ('example','status','', 3);

Mysql 检查表是否存在并创建表,检查列是否存在并新增、修改、删除列相关推荐

  1. (解题思路)Entity Framework 如动态创建表或者列

    1.数据库中建立关于表结构信息的视图.(这个完全可以做到) 2.根据视图信息动态生成(内存.文件)edmx信息,根据edmx信息动态生成ObjectContext内容. 3.动态编译edmx及Obje ...

  2. HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令

    1.上传tar包 这里我上传的是apache-hive-1.2.1-bin.tar.gz 2.解压 mkdir -p /home/tuzq/software/hive/ tar -zxvf apach ...

  3. Python保存dict字典类型数据到Mysql,并自动创建表与列

    主要是工具类,使用pymysql来创建表与SQL 示例代码 import pymysqlclass UseMysql(object):def __init__(self, user, passwd, ...

  4. Mysql之存储过程,动态创建表和数据库-,动态删除-yellowcong

    今天在弄mycat 的时候,有一个需求,就是创建12个数据库,然后数据库里面都创建一个表,我当时想象,这个玩意也不难,于是寻思通过存储过程来动态创建表,只需要传递进来数据的前缀名称和表名称,即可创建1 ...

  5. Mysql检查列是否存在并新增、修改、删除列

    很多时候只有自己遇到了问题才会着手去解决,这次刚好遇到了Mysql检查列是否存在的问题,顺便看到了网上其他大神也遇到过该问题就当作经验自己积累下来吧. 在MYSQL中,新增.修改.删除列时不能进行IF ...

  6. mysql 删除字段的注释_MySQL表和列的注释总结

    像代码一样,可以为表以及表中的列添加注释,方便其他人知晓其功能.对于一些字段,在经过一定时间后,创建者未必也能想起其具体的含意,所以注释显得尤为重要. 注释的添加 注释的添加是通过在定义表或列的时候在 ...

  7. mysql存储过程加多个创建表_mysql 存储过程创建多个表

    要创建64个表,听到这一需求,必然要用存储过程.直接上代码: DELIMITER $$ USE `table`$$ DROP PROCEDURE IF EXISTS `p`$$ CREATE DEFI ...

  8. 阿里云 Ubuntu上的mysql运行sql文件来创建表

    1.上传sql文件到指定目录 2.登录数据库 mysql -u root -p 3.查看数据库 show databases; 4.创建数据库 create database wlh; 5.对新创建的 ...

  9. mysql在test库中创建表stu_数据库mysql练习

    练习1: 在student数据库中创建student表和grade表. student表结构如下 字段名字段描述数据类型主键外键非空唯一自增no 学号int 是否是是否name 姓名varchar(3 ...

最新文章

  1. 最优二叉搜索树探究【C/C++】
  2. 用Python实现二叉树的遍历
  3. ATL WTL 实现分析(五)
  4. python axes_浅谈matplotlib.pyplot与axes的关系
  5. 整数线性规划实现(lingo,python分枝界定法)
  6. iPhone 7疯狂生产 苹果提升在印度存在感
  7. Google工程师多图详解Android系统架构
  8. 西南科技大学OJ题 利用二叉树中序及先序遍历确定该二叉树的后序序列0984
  9. 3dmax渲染卡顿崩溃怎么办?(二)
  10. 软件测试脚本语言有哪些,测试脚本是什么意思有哪些脚本
  11. 银行等单位工作日计算的实现
  12. CHROME扩展笔记之webRequest·图片拦截
  13. ozip解密_【ozip转换解包】ROM制作工具已适配机型列表,全网最全!
  14. 滴滴云「于某声」在「服务器采购过程中」受贿累计超过 1000 万元:已移交公安机关
  15. matlab节点连通率,利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系
  16. 如何预防网站http劫持问题?
  17. 用php调用接口api
  18. 欧洲共同语言参考标准英语c1,美国小学英语3年级语言知识对标欧洲共同语言参考标准CEFR...
  19. COSCon'22 杭州会场回顾 | 谁说开源人只懂代码不懂玩?
  20. Microsoft.Office.Interop.Word通过模板生成文档出现的问题经验总结

热门文章

  1. You appear to be running an X server; please exit X before installing. For further details, please
  2. PS手绘滤镜插件:Alien Skin Snap Art 4 for Mac对系统的要求
  3. python以下是变量合法命名的是_Python变量命名规则(超级详细)
  4. oracle如何判断表是否存在,oracle 创建表时判断表是否存在语句 | 学步园
  5. 从二战说起,为什么HMI设计需要关注人因学?
  6. C# 计算散点数据 离散值
  7. easyPOI基本用法
  8. B11HTML5期末大作业:动漫网站设计——动漫樱桃小丸子(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 关于动漫的HTML网页设计
  9. 最新可乐个人发卡网源码V2.0 仿DS网美化加强版
  10. 暗黑下品中文图文全集,mo下载。没听说过的就别进了,不是爱好者打不开