目录
1、表字段
1.1、添加列:
1.2、删除列:
1.3、修改列名/类型
1.4、修改列类型
1.5、修改字段默认值
2、表:
2.1、修改表名
2.2、修改表选项
3、约束:
3.1、查看约束条件
3.2、添加索引:
3.3、修改列的约束条件
3.4、修改主键:
1、表字段
注:【】中内容非必输,
1.1、添加列:
-- 添加一个字段
Alter table 表名 add【column】列名 列类型 列属性 COMMENT '字段描述' 【first| after 列名】;
-- 添加多个字段
-- 方法1:无法指定列顺序
Alter table 表名 add 【column】 (
列名1 列类型 列属性 COMMENT '字段描述' ,
列名2 列类型 列属性 COMMENT '字段描述' );
-- 方法2:可以指定列顺序
ALTER table 表名
ADD 【COLUMN】列名1 列类型 列属性 COMMENT '字段描述' 【after 列名】 ,
ADD 【COLUMN】列名2 列类型 列属性 COMMENT '字段描述' 【after 列名】 ;
- first: 添加列名的同时,指定列名顺序为第一个。
- after 列名 : 添加列的同时,指定列名的顺序 在某列之后。
1.2、删除列:
-- 删除一列名
Alter table 表名 drop【column】 列名;
-- 删除多列名
Alter table 表名
drop 【column】 列名1,
drop 【column】 列名2;
1.3、修改列名/类型
alter table 表名 change 【column】原列名 新列名 列类型 列属性 [first | after 列名];
说明:就算是仅修改列名,那么列的原始类型,原属性也要重新书写,不然就变为删除。
注意事项:如果字段名不变,只是修改字段长度,新字段长度必须大于原字段长度,否则不允许修改。
1.4、修改列类型
alter table 表名 modify 【column】 列名 列类型 列属性 [first | after 列名];
说明:修改列类型时,如果列属性、描述 不写时,会删除原属性、描述等相关信息,但字段顺序不会被调整。所以:修改列时,相关属性要写全。
注意事项:如果修改字段长度,新字段长度必须大于原字段长度,否则不允许修改。
1.5、修改字段默认值
alter table 表名 alter column 列名 set default 默认值;
2、表:
2.1、修改表名
alter table 表名 rename 【to|as】 新表名;
-- 或者使用rename命令(支持批量重命名)
rename table 表名1 to 新表名1,
表名2 to 新表名2;
2.2、修改表选项
alter table 表名 表选项;
说明:虽然MYSQL提供了修改表选项的命令,但是如果一个表中已经有数据,那么就不要执行修改字符集的命令。
3、约束:
3.1、查看约束条件
【Mysql】:
SELECT * FROM information_schema.`TABLE_CONSTRAINTS` where table_name = '表名';
【Oracle】:
SELECT * where table_name = '表名';
-- 使约束条件失效:
ALTER TABLE 表名 DISABLE CONSTRANT 约束名;
-- 使约束条件生效:
ALTER TABLE 表名 ENABLE CONSTRANT 约束名;
3.2、添加索引:
-- 查看索引:
show index from 表名;
--添加表级约束:
alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键的引用]
-- 以下为使用例子:
-- 添加PRIMARY KEY(主键索引)
ALTER TABLE 表名 ADD PRIMARY KEY ( 列名 );
-- 添加UNIQUE(唯一索引)
ALTER TABLE 表名 ADD UNIQUE ( 列名 ) ;
-- 添加INDEX(普通索引)
ALTER TABLE 表名 ADD INDEX idx_name ( 列名 ) ;
-- 添加FULLTEXT(全文索引)
ALTER TABLE 表名 ADD FULLTEXT ( 列名 ) ;
-- 添加多列索引
ALTER TABLE 表名 ADD INDEX idx_name ( 列名1, 列名2, 列名3 );
例如:
添加外键:alter table student add constraint fk_stu_class foreign key(class_id) references class(id);
添加主键:alter table student add constraint pk_stu primary key(id);
添加字段唯一:alter table student add unique(stu_nu);
3.3、修改列的约束条件
-- 删除主键:
alter table 表名 drop primary key;
-- 删除非空约束,即修改列类型及相关信息
alter table 表名 modify 列名 列类型 null;
-- 删除外键
alter table 表名 drop foreign key 外键名;
-- 删除唯一键
alter table 表名 drop index index_name;
-- 删除索引
drop index index_name on 表名 ;
--修改列级约束
alter table 表名 modify (column) 字段名 字段类型 新约束
3.4、修改主键:
-- 先删除主键
alter table 表名 drop primary key;
-- 然后再增加主键
alter table 表名 add primary key(列名1, ...);