CREATE TABLE pet ( pet_id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, breed CHAR(30), sex CHAR(1), birth DATE, death DATE, PRIMARY KEY (pet_id) );
在这个例子中,大家创建了一张宠物表(pet),大家将会自动为每个新记录分配一个pet_id。大家将这些ID存储为INT类型。
为什么要使用自动增量呢?这种做法有几个优势:
- 消除了ID号码之间的冲突。
- 自动增量可以提高查询效率。
- 适用于所有的MySQL数据类型。
自动增量的唯一限制是ID只能为整数类型,因为大家需要确保即便是负载很大的数据库也不会有重复的ID。
使用MySQL数据库自动填写ID非常简单。大家可以在MySQL的create table语句中为大家的表定义一个Auto_Increment列,MySQL将自动为大家分配下一个可用的编号。
CREATE TABLE test ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, PRIMARY KEY (id) );
这就是大家的Auto_Increment列,它是大家表的第一个列,必须被标识为外键。在上面的例子中,大家将这个列的名字命名为“id”,并将它的值设为“INT”类型。
上述SQL语句将创建一个新的test表,并自动分配一个不断增加的id号作为主键。每次大家创建一个新的记录时,MySQL都会自动填写一个下一个可用的编号。
自动编号在MySQL中还有一个更完美的地方:MySQL使用了一个buffer pool,允许在发送记录到磁盘之前存储多个记录。因此,如果多个人同时向同一表中插入记录,MySQL也可以系统效率最大化地处理它们。
这就是MySQL数据库自动填写id的基本原理。虽然看起来很简单,但利用好这个功能可以大大提高大家的开发效率。