站长网 MySql教程 MySQL表怎么创造自增字段

MySQL表怎么创造自增字段

本篇内容介绍了MySQL表怎么创建自增字段的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 注:如果使用新的自增互斥方式,对于replication应该避免使

本篇内容介绍了“MySQL表怎么创建自增字段”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
 
注:如果使用新的自增互斥方式,对于replication应该避免使用INSERT … ON DUPLICATE KEY UPDATE语句。
 
设置新自增互斥方式:通过配置选项:innodb_autoinc_lock_mode:调整锁策略:
 
innodb_autoinc_lock_mode = 0 (“traditional” lock mode:全部使用表锁)
 
innodb_autoinc_lock_mode = 1 (默认)(“consecutive” lock mode:可预判行数时使用新方式,不可时使用表锁)
 
innodb_autoinc_lock_mode = 2 (“interleaved” lock mode:全部使用新方式,不安全,不适合replication)
 
##创建自增字段
 
方法1、创建:
 
mysql> create table c(id int auto_increment,name varchar(20),primary key(id));
 
Query OK, 0 rows affected (0.52 sec)
 
mysql> desc c;
 
+——-+————-+——+—–+———+—————-+
 
| Field | Type        | Null | Key | Default | Extra          |
 
+——-+————-+——+—–+———+—————-+
 
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
 
| name  | varchar(20) | YES  |     | NULL    |                |
 
+——-+————-+——+—–+———+—————-+
 
2 rows in set (0.03 sec)
 
方法2、修改:
 
mysql> create table cc (id int,name varchar(20));
 
Query OK, 0 rows affected (0.42 sec)
 
mysql> alter table cc change id id int primary key auto_increment;
 
Query OK, 0 rows affected (1.12 sec)
 
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> desc cc;
 
+——-+————-+——+—–+———+—————-+
 
| Field | Type        | Null | Key | Default | Extra          |
 
+——-+————-+——+—–+———+—————-+
 
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
 
| name  | varchar(20) | YES  |     | NULL    |                |
 
+——-+————-+——+—–+———+—————-+
 
2 rows in set (0.11 sec)
 
mysql> insert into cc(id,name) values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');
 
mysql> select * from cc;
 
+—-+——+
 
| id | name |
 
+—-+——+
 
|  1 | a    |
 
|  2 | b    |
 
|  3 | c    |
 
|  5 | d    |
 
+—-+——+
 
4 rows in set (0.00 sec)
 
注:只有int类型且为primary key 才可以使用auto_increment.
 
##对存在记录的表的列修改为自增列
 
mysql> create table ccc (id int,name varchar(20));
 
Query OK, 0 rows affected (0.27 sec)
 
mysql> insert into ccc(id,name) values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');
 
Query OK, 4 rows affected (0.53 sec)
 
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> select * from ccc;
 
+——+——+
 
| id   | name |
 
+——+——+
 
|    1 | a    |
 
| NULL | b    |
 
| NULL | c    |
 
|    5 | d    |
 
+——+——+
 
4 rows in set (0.00 sec)
 
mysql> alter table ccc change id id int primary key auto_increment;
 
Query OK, 4 rows affected (1.04 sec)
 
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> desc ccc;
 
+——-+————-+——+—–+———+—————-+
 
| Field | Type        | Null | Key | Default | Extra          |
 
+——-+————-+——+—–+———+—————-+
 
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
 
| name  | varchar(20) | YES  |     | NULL    |                |
 
+——-+————-+——+—–+———+—————-+
 
2 rows in set (0.01 sec)
 
mysql> insert into ccc(id,name) values(1,'a'),(NULL,'b'),(NULL,'c'),(5,'d');
 
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
 
mysql> insert into ccc(id,name) values(6,'aa'),(NULL,'ab'),(NULL,'ac'),(10,'ad')
 
;
 
Query OK, 4 rows affected (0.07 sec)
 
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> select * from ccc;
 
+—-+——+
 
| id | name |
 
+—-+——+
 
|  1 | a    |
 
|  2 | b    |
 
|  3 | c    |
 
|  5 | d    |
 
|  6 | aa   |
 
|  7 | ab   |
 
|  8 | ac   |
 
| 10 | ad   |
 
+—-+——+
 
8 rows in set (0.00 sec)
 
mysql>
 
“MySQL表怎么创建自增字段”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mysql/2021/1217/39866.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部