-- 修改表名  [rename to]
alter table tab_name rename to tab_new;
-- 修改字段类型(修改字段相对位置)   [modify]
alter table tab_name modify field type (first/before field1);
-- 修改字段默认值/是否为空/自动增长
alter table tab_name modify field type not null/default ="未知"/auto_increment;
--  修改字段名/字段类型!   [change]
alter table tab_name change field  newfield newtype;
-- 添加字段  [add]
alter table tab_name add field type (first/before field1);
-- 删除字段 [drop]
alter table tab_name drop field;
-- 添加主键!
alter table tab_name add primary key(field);
--删除主键 
alter table tab_name drop primary key;
--添加外键约束  --给tab_name 中的 field列添加名为fk_name的约束绑定 x表中的主键i
alter table tab_name add constraint fk_name foreign key(field) 
references x(i); 
-- 删除外键约束  -- 删除约束名为 fk_name的外键约束
alter table tab_name drop foreign key fk_name;
alter table tab_name drop index  index_name;
-- 设置唯一约束
alter table tab_name add constraint uq_name unique(field);
-- 设置默认值
alter table tab_name field set default "默认";
-- 删除默认值
alter table tab_name field drop default;
-- 删除唯一约束
alter table tab_name drop index uq_name;
--修改数据库表存储引擎
alter table altertable engine = myisam;
-- 查看表状态(引擎)
show table status; 
show create table tab_name;

测试

-- 先构建测试数据表
create table testalter(i int,c varchar(1));
-- 查看表结构
show columns from testalter; -- 或者用 desc testalter;

alter table语句在表tb_student上建立主键索引_字段

alter删除/添加/修改字段名

-- 删除字段
alter table testalter drop i;

alter table语句在表tb_student上建立主键索引_默认值_02


当表中只剩一个字段时就不能用 alter删除字段了,只能通过删除表名的方式删除了! drop table table_name;

alter table语句在表tb_student上建立主键索引_字段_03

--新增字段
alter table testalter add i int (first:新增字段到第一列/alter column_name 新增字段到某一列后面);

alter table语句在表tb_student上建立主键索引_sql_04


新增的字段自动添加到表末尾!

alter table语句在表tb_student上建立主键索引_sql_05

  • 指定字段添加的位置!
--添加到第一列
alter table testalter add i int first; 
-- 添加到某一字段后面!
alter table testalter add  x int i;

alter table语句在表tb_student上建立主键索引_字段_06


alter table语句在表tb_student上建立主键索引_数据库_07

alter 修改字段类型及名称

--修改字段类型
alter table testalter modify i bigint;

alter table语句在表tb_student上建立主键索引_默认值_08

-- 修改字段名及类型
![alter table testalter change i j varchar(1);

alter table语句在表tb_student上建立主键索引_mysql_09


我们也可以通过change只修改字段类型或者名称!

alter table语句在表tb_student上建立主键索引_字段_10

alter table 对null值和默认值的影响

-- 我们可以通过alter modify 修改字段是否为null或者默认值!
alter table testalter modify c varchar(100) not null default "未知";

alter table语句在表tb_student上建立主键索引_数据库_11

alter修改表名

-- 修改表名
alter table testalter rename to altertable;

alter table语句在表tb_student上建立主键索引_字段_12

alter修改table存储引擎

alter table altertable engine = myisam;

alter table语句在表tb_student上建立主键索引_字段_13

-- 查看该数据库下所有表的引擎
show table status;
-- 查看某个表的引擎!
show create table altertable;

alter table语句在表tb_student上建立主键索引_默认值_14

alter 修改主键/外键约束

--修改主键
alter table tab_name modify field type primary key;
--删除名为pk_name主键!
alter table tab_name drop primary key pk_name;

alter table语句在表tb_student上建立主键索引_字段_15


alter table语句在表tb_student上建立主键索引_默认值_16

--删除外键约束
alter table  tab_name drop foregin key fk_name;
-- 添加外键约束 给field 字段设置为外键 关联 x表的i主键 约束名为 fk_name 
alter table tab_name add constraint fk_name foregin key(field) references x(i);

alter table语句在表tb_student上建立主键索引_默认值_17


alter table语句在表tb_student上建立主键索引_数据库_18

alter table语句在表tb_student上建立主键索引_默认值_19

修改字段相对位置

-- 修改字段相对位置
alter table altertable modify x int(11) first/ after j;

alter table语句在表tb_student上建立主键索引_默认值_20


alter table语句在表tb_student上建立主键索引_默认值_21

设置字段default/uique/null

-- 设置默认值
alter table tab_name alter field set default '默认值';
--删除默认值
alter table tab_name alter field drop default;

alter table语句在表tb_student上建立主键索引_数据库_22

-- 设置唯一约束
alter table tab_name add constraint uq_name unique(field);
-- 删除唯一约束
alter table tab_name drop index uq_name;

alter table语句在表tb_student上建立主键索引_字段_23

alter table语句在表tb_student上建立主键索引_字段_24