为了账号安全,请及时绑定邮箱和手机立即绑定

把id主键默认约束0改为 自动编号 怎么写语句?

老师在users2表里的添加 id为主键  但是没有添加自动编号

然后我现在 id的主键  有一个默认约束为0

show create table users2;

 `id` smallint(5) unsigned NOT NULL DEFAULT '0',  ←现在是这样的
  PRIMARY KEY (`id`)

我就是想 把id主键的  默认约束0    修改为 自动编号 要怎么操作呢?

`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,   ←我要改成这样

正在回答

3 回答

可以使用字段修改语句如下:

ALTER TABLE users2 CHANGE id id SMALLINT UNSIGNED NOT NULL PRIMARY KEY  AUTO_INCREMENT;

这个语句相当于修改了重写了原id字段。不过我怀疑3-6节还没有讲到这个语句,或许可以看下MODIFY...SET..添加约束是否可行,我有点忘记了。

另外`id` smallint(5) unsigned NOT NULL DEFAULT '0' 应该是DEFAULT 0 吧,毕竟id是int型的。

0 回复 有任何疑惑可以回复我~

有几个给主键设置默认的,晕

0 回复 有任何疑惑可以回复我~

我的大神已经私聊回答我了  我把他贴上来

我针对你的问题我提几个东西:
1、0是默认值,不是默认约束,PRIMARY KEY (`id`) 这个才叫约束,是主键约束,表示这条记录在这张表里是唯一的。
2、主键Id不建议用smallint,因为你要用自动增长列,smallint的范围太小了,建议用int或者bigInt
3、如果你的表建好了,修改字段的语句用 ALTER
alter table `users` modify column `id` bigInt(11) unsigned NOT NULL AUTO_INCREMENT

1 回复 有任何疑惑可以回复我~
#1

charsandrew

有点不同意见,DEFAULT 0也是约束,叫默认约束,PRIMARY KEY 叫主键约束,类似的还有唯一约束。 另外主键id用什么类型是看数据量的,SMALLINT UNSIGNED 是2的16次方-1,有些情况下已经够用了。
2016-08-23 回复 有任何疑惑可以回复我~
#2

heruibin322

学习了
2016-08-24 回复 有任何疑惑可以回复我~
#3

慕田峪1130169

如果想把id这列放在首列怎么改
2016-09-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

把id主键默认约束0改为 自动编号 怎么写语句?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信