当前位置: 首页 > 后端技术 > Java

面试惊喜59:一个表可以有多个自增列吗?

时间:2023-04-01 21:35:20 Java

自增列可以使用auto_increment实现。当一个列被标记为auto_increment时,如果你没有为这个列设置任何值,或者为这个列设置一个NULL值,那么它会使用自增规则来填充这个列。PS:本文以下内容基于MySQLInnoDB数据库引擎。默认情况下,自增列的值为1,每次自增1。例如下面的建表SQL:createtabletab_incre(idintprimarykeyauto_increment,namevarchar(250)notnull);我们在添加的时候不自增如果列id设置为任意值,其执行结果如下:从上面的结果可以看出,自增列的默认值为1,自增每次减1。1、手动指定自增值可以在建表时手动指定自增值。如果不指定自增值,默认使用1作为自增值。手动指定自增值的SQL命令如下:createtabletab_incre(idintprimarykeyauto_increment,namevarchar(250)notnull)auto_increment=50;使用“showcreatetabletable_name”查看表中的自增列值,如下图:这张表的自增值为50,我们也可以创建一条数据来验证是否自增-增量值为50,如下图所示:2.手动修改自增量。创建表后,我们还可以通过alter命令修改自增列的值。其修改命令如下:altertabletable_nameauto_increment=n;如果想将tab_incre表中的自增值修改为100,可以使用如下SQL实现:注意当我们试图将自增值设置为小于自增表中最大值incrementcolumn,自增值会自动变成自增列最大值+1的值,如下图:3.一个表可以有多个自增列吗?一张表中只能有一个自增列,类似于一张表只能有一个主键的规则。当我们尝试向一个表中添加一个自增列时,可以添加成功,如下图:当我们尝试向一个表中添加多个自增列时,会提示错误提示存在可以只增加一个自增列,如下图所示:4.其他注意事项除了在一张表中只增加一个自增列外,自增列还需要注意以下两个问题。4.1自增列只能是整型自增列的字段类型只能是整型(TINYINT、SMALLINT、INT、BIGINT等),如下图:当我们使用其他类型作为自增列的数据类型,会提示如下错误:4.2必须和键一起使用auto_increment必须和键一起使用,这个键可以是主键也可以是外键,如果没有键,会报错,如下图:PS:auto_increment也可以和唯一约束unique一起使用。总结自增列的值默认为1,每次自增1,但也可以在建表时手动指定自增值。当然,在特殊情况下,我们也可以在建表后通过alter修改自增值。一张表中只能有一个自增列,就像一张表中只能有一个主键一样。如果设置了多个自增列,SQL执行时会报错。另外需要注意的是自增列应该是整数类型,auto_increment需要和key一起使用,key可以是主键也可以是外键。判断是非在自己,名誉在别人,得失在人数。公众号:Java面试真题分析面试合集:https://gitee.com/mydb/interview