3.5 DDL3(修改)
分类
修改表名
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 旧字段名 新字段名 新数据类型 [完整性约束条件…];
示例
1.修改表名
ALTER TABLE t1 RENAME t2;
2. 添加字段
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; //添加到最前面
3. 删除字段
mysql> alter table student10
-> drop sex;
mysql> alter table service
-> drop mac;
4.删除主键[primary key auto_increment]
a. 删除自增约束
mysql> alter table student10 modify id int not null;
b. 删除主键
mysql> alter table student10
-> drop primary key;
5.1修改字段类型modify
mysql> alter table student10
-> modify age tinyint not null default 22; //注意保留原有的约束条件
mysql> alter table student10
-> modify id int not null primary key ; //修改字段类型、约束、主键
5. 2增加约束(针对已有的主键增加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
6. 增加复合主键
mysql> alter table student10 add primary key(host_ip,port);
7. 增加主键
mysql> alter table student1
-> add primary key(id);
8. 增加主键和自动增长
mysql> alter table student1
-> modify id int not null primary key auto_increment;
9. 修改存储引擎
mysql> alter table service engine=innodb;
//engine=myisam|memory|....
innodb提供事物支持及主外键高级功能
MyISAM不支持事物处理,强调高性能。
memory仅内存
3.6 DDL4(复制删除)[扩展]
分类复制表结构+记录 (key不会复制: 主键、外键和索引)
只复制表结构
复制表结构,包括Key
删除表
示例
1 .复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service
select * from service;
2.只复制表结构
mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录
3.复制表结构,包括Key
mysql> create table t4 like employees;
4.删除表
DROP TABLE 表名;