我遇到过两种方法来自动增加mysql中的id。
一个是 SERIAL ,另一个是 AUTOINCREMENT 。
所以假设我想创建一个表格myfriends。 我可以用两种方式创建它:
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);
两者有什么区别?
OR
任何人都有优势吗?
请帮助。
答案 0 :(得分:49)
根据docs
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
因此,在创建对SERIAL PK的引用时要小心,因为该引用列必须是这种类型。
答案 1 :(得分:10)
AUTO_INCREMENT
是任何数字类型(int或float)的特定列的属性,有符号和无符号。插入行时,它会自动分配序号,因此您不必(例如,使用LAST_INSERT_ID()
)。见http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
SERIAL
是一个别名,它结合了列类型转换(具体为BIGINT
),AUTO_INCREMENT
,UNSIGNED
以及特定列的其他属性(请参阅下面的文档引用)。见http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
整数列定义中的SERIAL DEFAULT VALUE是NOT NULL AUTO_INCREMENT UNIQUE的别名。
答案 2 :(得分:1)
SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。
整数列定义中的SERIAL DEFAULT VALUE是一个 NOT NULL AUTO_INCREMENT UNIQUE的别名。
如果没有为AUTO_INCREMENT列指定值,MySQL会自动分配序列号。您还可以显式为列分配NULL或0以生成序列号。删除行时,MySQL不会自动降低自动增量值。原因是: