600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > MySql数据库中 表字段新增 修改 删除

MySql数据库中 表字段新增 修改 删除

时间:2023-03-04 03:15:26

相关推荐

MySql数据库中 表字段新增 修改 删除

通过存储过程进行对mysql 数据库表字段增加,修改,删除

USE `mydatasql`;DROP PROCEDUREIF EXISTS Pro_Temp_ColumnWork;DELIMITER$$ -- 1表示新增列,2表示修改列类型,3表示删除列CREATE PROCEDURE Pro_Temp_ColumnWork (IN TableName VARCHAR (50),IN ColumnName VARCHAR (50),IN SqlStr VARCHAR (4000),IN CType INT)BEGINDECLARE Rows1 INT;SET Rows1 = 0;SELECTCOUNT(*) INTO Rows1FROMINFORMATION_SCHEMA. COLUMNSWHEREtable_schema = DATABASE ()AND table_name = TableNameAND column_name = ColumnName;-- 新增列IF (CType = 1 AND Rows1 <= 0) THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' ADD COLUMN ',ColumnName,' ',SqlStr);-- 修改列类型ELSEIF (CType = 2 AND Rows1 > 0) THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' MODIFY ',ColumnName,' ',SqlStr);-- 删除列ELSEIF (CType = 3 AND Rows1 > 0) THENSET SqlStr := CONCAT('ALTER TABLE ',TableName,' DROP COLUMN ',ColumnName);ELSESET SqlStr := '';ENDIF;-- 执行命令IF (SqlStr <> '') THENSET @SQL1 = SqlStr;PREPARE stmt1FROM@SQL1;EXECUTE stmt1;DEALLOCATE PREPARE stmt1;COMMIT;ENDIF;END;$$DELIMITER ;-- 注意注意再注意 $$ DELIMITER ; 分行写-- 当前数据库 TableName表名 ColumnName列名-- 新增列CALL Pro_Temp_ColumnWork ('aaa_copy','yuuttt1','int(10) NOT NULL DEFAULT 100',1);CALL Pro_Temp_ColumnWork ('aaa_copy','yuu3','varchar(50) DEFAULT NULL',3);-- 注意注意注意 参数不要有单引号-- call Pro_Temp_ColumnWork('aaa_copy','yuu3','int NOT NULL DEFAULT '33333' AFTER '下巴未过杠结束时间[s]';',1);-- CALL Pro_Temp_ColumnWork ('表名','字段名','int(11) NULL DEFAULT NULL AFTER `xxxxxxxxxxx`; ', 1);-- 删除列-- CALL Pro_Temp_ColumnWork ('e_handcard_control','EntranceType','', 3);-- 最后再执行一遍删除存储过程DROP PROCEDUREIF EXISTS Pro_Temp_ColumnWork;

惊喜无处不在:

如果使用Navicat执行可以成功,但是使用mysql source执行不成功,可以利用Navicat的 “美化 SQL”,惊喜自然来临

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。