在我们日常的开发过程中,经常使用sql语句对数据库表中的结构进行改变,例如:新增或修改表中的主键,唯一索引的组成,新增/删除数据库表中的字段,以及修改字段的类型,长度,备注等,但是可重复执行的能力比较差,因此,使用存储过程来执行,修改数据库表结构,增加可重复执行能力。
此文中还包括不使用储存过程的SQL和存储过程的SQL对比,既可以学习alter table进行操作,也可以使用储存过程操作。
下面看sql实例,常用的SQL语句与储存过程SQL语句(具体的存储过程详见下面的语句):
-- 假设数据库的名字:basedb
-- `basedb`.`PRO_ALTER_TABLE`为存储过程名字(代码在文末)
(1). 在数据库表中新增/删除字段
--a. 向customer表中添加字段cust_id
不使用储存过程SQL语句:
ALTER TABLE basedb.customer ADD COLUMN cust_id VARCHAR(100) DEFAULT NULL COMMENT "客户号";
使用存储过程的SQL语句:
CALL `basedb`.`PRO_ALTER_TABLE`('basedb', 'customer ', 'cust_id',1, 'VARCHAR(100) DEFAULT NULL COMMENT "客户号"');
-- b.向customer表中删除字段cust_id
不使用存储过程SQL语句:
ALTER TABLE basedb.customer DROP COLUMN cust_id;
使用存储过程的SQL语句:
CALL `basedb`.`PRO_ALTER_TABLE`('basedb', 'customer ', 'cust_id',4, ' ');
(2)在数据库表中修改字段cust_id的类型(长度,备注)
修改customer表中修改cust_id的长度,备注
a.不使用储存过程SQL语句:
-- 修改字段的长度:
ALTER TABLE basedb.customer MODIFY COLUMN cust_id VARCHAR(50);
-- 修改字段的注释:
ALTER TABLE basedb.customer MODIFY COLUMN cust_id VARCHAR(50) COMMENT'客户ID';
-- 修改字段的长度/新增注释
ALTER TABLE basedb.customer MODIFY COLUMN cust_id