修改表名
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 旧字段名 新字段名 新数据类型 [完整性约束条件…];
示例:
修改表名
ALTER TABLE t1 RENAME t2;
增加字段
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;
删除主键[primary key auto_increment]
删除主键时,要先清理掉自动增长:
1、创建表
create table t4( id int auto_increment primary key,name varchar(50));
2、插入数据
mysql> insert into t4 values (1,'aa');
Query OK, 1 row affected (0.01 sec)
mysql> insert into t4 values (1,'aa');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql>
mysql> insert into t4 (name) values ('bb');
Query OK, 1 row affected (0.03 sec)
mysql> select * from t4;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
+----+------+
3、删除主键
a. 删除自增约束
mysql> alter table student10 modify id int not null;
b. 删除主键
mysql> alter table student10
-> drop primary key;
(如果没有自动增长直接可以用drop primary key 删除主键。)
修改字段类型modify
mysql> alter table student10
-> modify age tinyint not null default 22; //注意保留原有的约束条件
mysql> alter table student10
-> modify id int not null primary key ; //修改字段类型、约束、主键
(或者使用add增加单列主键
mysql> alter table student1
-> add primary key(id);)
增加约束(针对已有的主键增加auto_increment)
1、准备一个有主键,但没有自增的表
mysql> create table t6 (id int primary key ,name varchar(50) );
Query OK, 0 rows affected (0.04 sec)
2、为该表增加自增
错误示范:
mysql> alter table t6
modify id int not null
primary key
auto_increment; //错误,该字段已经是primary key
ERROR 1068 (42000): Multiple primary key defined
正确示范:
mysql> alter table t6
modify id int not null
???
auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
增加复合主键
合并服务器
mysql> alter table student10 add primary key(host_ip,port);
修改存储引擎
mysql> alter table service engine=innodb;
//engine=myisam|memory|....
{
innodb提供事物支持及主外键高级功能
MyISAM不支持事物处理,强调高性能。
memory仅内存
}