引言
一般在工作中建表操作是不常用的, 而对表的修改操作却常常涉及, 如何处理/修改已存在大量数据的表通常是个老大难的问题.
各种报错信息层出不穷, 却对自己的操作深信不疑, 或者是担心误操作而导致数据丢失.
因此, 修改表结构, 看似简单实则处处细节
修改表结构
修改表结构大致有如下基本语法
1 -- 1. 修改表名 2 ALTER TABLE 表名 3 RENAME 新表名; 4 5 -- 2. 增加字段 6 ALTER TABLE 表名 7 ADD 字段名 数据类型 [完整性约束条件…], 8 ADD 字段名 数据类型 [完整性约束条件…]; 9 10 -- 3. 删除字段 11 ALTER TABLE 表名 12 DROP 字段名; 13 14 -- 4. 修改字段 15 ALTER TABLE 表名 16 MODIFY 字段名 数据类型 [完整性约束条件…]; 17 ALTER TABLE 表名 18 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…]; 19 ALTER TABLE 表名 20 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…]; 21 22 -- 5.修改字段排列顺序/在增加的时候指定字段位置 23 ALTER TABLE 表名 24 ADD 字段名 数据类型 [完整性约束条件…] FIRST; 25 ALTER TABLE 表名 26 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; 27 ALTER TABLE 表名 28 CHANGE 字段名 旧字段名 新字段名 新数据类型 [完整性约束条件…] FIRST; 29 ALTER TABLE 表名 30 MODIFY 字段名 数据类型 [完整性约束条件…] AFTER 字段名; 31
示例
1.利用ALTER TABLE处理NULL和UNIQUE约束
1 CREATE TABLE t( 2 id INT UNIQUE, 3 name CHAR(10) NOT NULL 4 ); 5 6 -- 去掉NULL约束 7 ALTER TABLE t 8 MODIFY name CHAR(10) NULL; 9 10 -- 添加NULL约束 11 ALTER TABLE t 12 MODIFY name CHAR(10) NOT NUll; 13 14 -- 去掉UNIQUE约束 15 ALTER TABLE t 16 DROP INDEX id; 17 18 -- 添加UNIQUE约束 19 ALTER TABLE t 20 MODIFY id INT UNIQUE;
2.利用ALTER TABLE处理主键
1 CREATE TABLE t( 2 id INT UNIQUE, 3 name CHAR(10) NOT NULL 4 ); 5 6 -- 去掉NULL约束 7 ALTER TABLE t 8 MODIFY name CHAR(10) NULL; 9 10 -- 添加NULL约束 11 ALTER TABLE t 12 MODIFY name CHAR(10) NOT NUll; 13 14 -- 去掉UNIQUE约束 15 ALTER TABLE t 16 DROP INDEX id; 17 18 -- 添加UNIQUE约束 19 ALTER TABLE t 20 MODIFY id INT UNIQUE;
3.利用ALTER TABLE为表添加外键
1 CREATE TABLE press( 2 id INT(11) NOT NULL, 3 name CHAR(10) DEFAULT NULL, 4 PRIMARY KEY (id) 5 ); 6 7 CREATE TABLE book( 8 id INT(11) DEFAULT NULL, 9 bk_name CHAR(12) DEFAULT NULL, 10 press_id INT(11) NOT NULL, 11 ); 12 13 -- 为book表添加外键 14 ALTER TABLE book 15 ADD CONSTRAINT [foreign key name] FOREIGN KEY(press_id) REFERENCES press(id); 16 17 -- 删除外键 18 ALTER TABLE book 19 DROP FOREIGN KEY [foreign key name]; 20 21 -- 注: [内容] 为可选填内容, 除保留字外, 符合语法规范均可