数据库表字段、索引 调整

目录

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, ...);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值