Mysql 中 SERIAL 和 AUTO_INCREMENT 的区别是什么

我遇到了两种自动增加 mysql 中 id 的方法。

一个是 连环杀手,另一个是 自动增量

假设我想创建一个表,我的朋友们。 我可以通过两种方式创建它,比如:

1)

mysql> create table myfriends(id int primary key auto_increment,frnd_name varchar(50) not null);

2)

mysql> create table myfriends(id serial primary key,frnd_name varchar(50) not null);

这两者有什么区别?

或者

有人比别人更有优势吗?

请救救我。

49382 次浏览

根据 医生

SERIAL 是 BIGINT UNSIGNED NOT NULL AUTO _ INCREMENT UNIQUE 的别名。

因此,在创建对 SERIALPK 的引用时要小心,因为该引用列必须具有这种确切的类型。

AUTO_INCREMENT 是任何数值类型(int 或 float)的特定列的 属性,包括有符号和无符号两种类型。当插入行时,它会自动分配序列号,所以您不必这样做(例如使用 LAST_INSERT_ID())。请参阅 href = “ http://dev.mysql.com/doc/refman/5.0/en/example-auto-Increment.html”rel = “ nofollow norefrer”> http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

SERIAL 是一个 化名,它结合了列类型转换(特别是 BIGINT)、 AUTO_INCREMENTUNSIGNED和其他针对特定列的 属性(参见下面文档中的引用)。请参阅 href = “ https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html”rel = “ nofollow norefrer”> https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html

SERIAL 是 BIGINT UNSIGNED NOT NULL AUTO _ INCREMENT UNIQUE 的别名。

整数列定义中的 SERIAL DEFAULT VALUE 是 NOTNULL AUTO _ INCREMENT UNIQUE 的别名。

来自 Mysql 文档

SERIAL 是 BIGINT UNSIGNED NOT NULL AUTO _ INCREMENT UNIQUE 的别名。

整数列定义中的串行默认值是 NOTNULL 自动增量唯一的别名。

如果没有为 AUTO _ INCREMENT 列指定值,MySQL 会自动分配序列号。还可以显式地将 NULL 或0赋给列以生成序列号。当您删除一行时,MySQL 不会自动减少自动增量值。理由如下:

  • 破坏数据完整性的危险(假设有多个用户执行 删除或插入... 可能会出现双重条目,甚至更糟)
  • 使用主从复制或 交易