MySQL表怎么创建自增字段
本篇内容介绍了“MySQL表怎么创建自增字段”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
注:如果使用新的自增互斥方式,对于replication应该避免使用INSERT...ONDUPLICATEKEYUPDATE语句。
设置新自增互斥方式:通过配置选项:innodb_autoinc_lock_mode:调整锁策略:
innodb_autoinc_lock_mode=0(“traditional”lockmode:全部使用表锁)
innodb_autoinc_lock_mode=1(默认)(“consecutive”lockmode:可预判行数时使用新方式,不可时使用表锁)
innodb_autoinc_lock_mode=2(“interleaved”lockmode:全部使用新方式,不安全,不适合replication)
##创建自增字段
方法1、创建:
mysql>createtablec(idintauto_increment,namevarchar(20),primarykey(id));
QueryOK,0rowsaffected(0.52sec)
mysql>descc;
+-------+-------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+-------+-------------+------+-----+---------+----------------+
|id|int(11)|NO|PRI|NULL|auto_increment|
|name|varchar(20)|YES||NULL||
+-------+-------------+------+-----+---------+----------------+
2rowsinset(0.03sec)
方法2、修改:
mysql>createtablecc(idint,namevarchar(20));
QueryOK,0rowsaffected(0.42sec)
mysql>altertableccchangeididintprimarykeyauto_increment;
QueryOK,0rowsaffected(1.12sec)
Records:0Duplicates:0Warnings:0
mysql>desccc;
+-------+-------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+-------+-------------+------+-----+---------+----------------+
|id|int(11)|NO|PRI|NULL|auto_increment|
|name|varchar(20)|YES||NULL||
+-------+-------------+------+-----+---------+----------------+
2rowsinset(0.11sec)
mysql>insertintocc(id,name)values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');
mysql>select*fromcc;
+----+------+
|id|name|
+----+------+
|1|a|
|2|b|
|3|c|
|5|d|
+----+------+
4rowsinset(0.00sec)
注:只有int类型且为primarykey才可以使用auto_increment.
##对存在记录的表的列修改为自增列
mysql>createtableccc(idint,namevarchar(20));
QueryOK,0rowsaffected(0.27sec)
mysql>insertintoccc(id,name)values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');
QueryOK,4rowsaffected(0.53sec)
Records:4Duplicates:0Warnings:0
mysql>select*fromccc;
+------+------+
|id|name|
+------+------+
|1|a|
|NULL|b|
|NULL|c|
|5|d|
+------+------+
4rowsinset(0.00sec)
mysql>altertablecccchangeididintprimarykeyauto_increment;
QueryOK,4rowsaffected(1.04sec)
Records:4Duplicates:0Warnings:0
mysql>descccc;
+-------+-------------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra|
+-------+-------------+------+-----+---------+----------------+
|id|int(11)|NO|PRI|NULL|auto_increment|
|name|varchar(20)|YES||NULL||
+-------+-------------+------+-----+---------+----------------+
2rowsinset(0.01sec)
mysql>insertintoccc(id,name)values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');
ERROR1062(23000):Duplicateentry'1'forkey'PRIMARY'
mysql>insertintoccc(id,name)values(6,'aa'),(NULL,'ab'),(NULL,'ac'),(10,'ad')
;
QueryOK,4rowsaffected(0.07sec)
Records:4Duplicates:0Warnings:0
mysql>select*fromccc;
+----+------+
|id|name|
+----+------+
|1|a|
|2|b|
|3|c|
|5|d|
|6|aa|
|7|ab|
|8|ac|
|10|ad|
+----+------+
8rowsinset(0.00sec)
mysql>
“MySQL表怎么创建自增字段”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。