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

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

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);

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MySQL检查表是否存在,可以使用以下几种方法: 1. 使用SQL查询语句,在information_schema数据库的tables表中查找指定表名的记录。可以使用以下查询语句: SELECT COUNT(*) INTO m_count FROM information_schema.tables WHERE table_name = p_table_name; 这个查询语句将返回一个计数值,如果表存在,计数值将大于0。 2. 使用SHOW TABLES语句,可以出指定数据库中的所有表名,然后通过比对表名是否与目标表名相等来判断是否存在。可以使用以下查询语句: SHOW TABLES LIKE 'table_name'; 这个查询语句将返回一个包含表名的结果集,如果结果集不为空,表示表存在。 3. 使用INFORMATION_SCHEMA表,可以查询指定数据库中的所有表信息,然后通过比对表名是否与目标表名相等来判断是否存在。可以使用以下查询语句: SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database_name'; 这个查询语句将返回一个包含表信息的结果集,如果结果集不为空,表示表存在。 以上是三种常用的方法来检查MySQL中的表是否存在。您可以根据具体情况选择适合的方法进行表存在性判断。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MYSQL 检查表是否存在](https://blog.csdn.net/slimboy123/article/details/4203633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mysql查询表是否存在](https://blog.csdn.net/hzp666/article/details/114873066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值