修改表ALTER TABLE
修改表名
ALTER TABLE 表名
RENAME 新表名;
增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
删除字段
ALTER TABLE 表名
DROP 字段名;
修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
示例:
修改存储引擎
mysql> alter table service
-> engine=innodb; //engine=myisam|memory|....
添加字段
mysql> create table student10 (id int);
mysql> alter table student10
-> add name varchar(20) not null,
-> add age int not null default 22;
mysql> alter table student10
-> add stu_num int not null after name; //添加name字段之后
mysql> alter table student10
-> add sex enum('male','female') default 'male' first; //添加到最前面
删除字段
mysql> alter table student10
-> drop sex;
mysql> alter table service
-> drop mac;
修改字段类型modify
mysql> alter table student10
-> modify age tinyint not null default 22; //注意保留原有的约束条件
mysql> alter table student10
-> modify id int not null primary key ; //修改字段类型、约束、主键
增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int not null primary key auto_increment; //错误,该字段
已经是primary key
ERROR 1068 (42000): Multiple primary key defined
mysql> alter table student10 modify id int not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
增加复合主键
mysql> alter table service2
-> add primary key(host_ip,port);
增加主键
mysql> alter table student1
-> add primary key(id);
增加主键和自动增长
mysql> alter table student1
-> modify id int not null primary key auto_increment;
删除主键[primary key auto_increment]
a. 删除自增约束
mysql> alter table student10 modify id int not null;
b. 删除主键
mysql> alter table student10
-> drop primary key;
五、复制表
复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;
只复制表结构
mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记
录
复制表结构,包括Key
mysql> create table t4 like employees;
六、删除表
DROP TABLE 表名;