温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL表怎么创建自增字段

发布时间:2021-11-18 16:30:20 来源:亿速云 阅读:620 作者:iii 栏目:MySQL数据库

本篇内容介绍了“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表怎么创建自增字段”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI