当前位置:网站首页 > SQL数据库编程 > 正文

mysql主键自增的好处(mysql主键自增长有什么好处)



自动增量序列是 MySQL 提供的 一个有用的特性。它为表中的每个新插入行 生成唯一标识。通常,我们对表中的主键字段使用自增属性。每次我们将新记录插入表中时,MySQL 都会自动将值递增到自动递增列。
有时,我们需要删除这些行并重置自增列,以便在我们下次插入表时,第一条记录的标识的主键值为 1。
MySQL 允许通过多种方式重置自动递增列值。这些方式是:
  1. 使用 ALTER TABLE 语句
  2. 使用 TRUNCATE TABLE 语句
  3. 使用一对 DROP TABLE 和 CREATE TABLE 语句

MySQL 中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义序列。以下实例中 创建了数据表 insect, insect 表中 id 无需指定值可实现自动增长。
 
 
   
 
mysql> CREATE TABLE insect
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id),
-> name VARCHAR(30) NOT NULL, # type of insect
-> date DATE NOT NULL, # date collected
-> origin VARCHAR(30) NOT NULL # where collected
);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO insect (id,name,date,origin) VALUES
-> (NULL,'housefly','2001-09-10','kitchen'),
-> (NULL,'millipede','2001-09-10','driveway'),
-> (NULL,'grasshopper','2001-09-10','front yard');
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM insect ORDER BY id;
+----+-------------+------------+------------+
| id | name | date | origin |
+----+-------------+------------+------------+
| 1 | housefly | 2001-09-10 | kitchen |
| 2 | millipede | 2001-09-10 | driveway |
| 3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)


在MySQL的客户端中你可以使用 SQL中的LAST_INSERT_ID( ) 函数来获取最后的插入表中的自增列的值。
在PHP或PERL脚本中也提供了相应的函数来获取最后的插入表中的自增列的值。

使用 ALTER TABLE 语句

如果你删除了数据表中的多条记录,并希望对剩下数据的AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增的列,然后重新 添加来实现。 操作如下所示:
 
 
   
 
mysql> ALTER TABLE insect DROP id;
mysql> ALTER TABLE insect
-> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
-> ADD PRIMARY KEY (id);

该操作要非常小心,如果在删除的同时又有新记录添加,有可能会出现数据混乱。

使用 TRUNCATE TABLE 语句

MySQL 中的 TRUNCATE TABLE 语句在不删除表结构的情况下完全删除表的数据,并且始终将自增列值重置为零。
以下语法说明了用于重置自动递增列值的 TRUNCATE TABLE 语句:
TRUNCATE TABLE TAB_NAME;   
需要注意的是,执行 TRUNCATE TABLE 语句后,我们无法从表中恢复已删除的数据。

使用 DROP TABLE 和 CREATE TABLE 语句

我们还可以使用一对 DROP TABLE 和 CREATE TABLE 语句重置自动递增列值。此方法从表中永久删除完整记录。
与 TRUNCATE TABLE 查询类似,DROP TABLE 和 CREATE TABLE 语句对首先删除表,然后重新创建它。因此,MySQL 将自动递增列值重置为零。
 
 
   
 
DROP TABLE table_name;
CREATE TABLE table_name( fiels_name(s) datatypes);

一般情况下序列的开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现:
 
 
   
 
mysql> CREATE TABLE insect
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id),
-> name VARCHAR(30) NOT NULL,
-> date DATE NOT NULL,
-> origin VARCHAR(30) NOT NULL
)engine=innodb auto_increment=100 charset=utf8;

或者你也可以在表创建成功后,通过以下语句来实现:
 
 
   
 
mysql> ALTER TABLE t AUTO_INCREMENT = 100;

长按二维码关注公众号,查阅更多教程

到此这篇mysql主键自增的好处(mysql主键自增长有什么好处)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • sql文件怎么导入mysql数据库(把sql文件导入数据库)2025-03-16 12:00:06
  • 数据库增删改查面试题(sql数据库增删改查操作面试)2025-03-16 12:00:06
  • mysql自增主键和uuid(mysql自增主键缺点)2025-03-16 12:00:06
  • pymysql由于目标计算机积极拒绝(sqlserver由于目标计算机积极拒绝,无法连接)2025-03-16 12:00:06
  • sqlldr跳过某一列(sqlldr skip=1)2025-03-16 12:00:06
  • 增删改查sql语句(增删改查sql语句面试)2025-03-16 12:00:06
  • sql循环语句(sql中循环)2025-03-16 12:00:06
  • sqlserver数据库基础知识(sql server数据库基础)2025-03-16 12:00:06
  • pymysql怎么安装(安装pymysql模块)2025-03-16 12:00:06
  • sql文件转换成csv(sql文件转json)2025-03-16 12:00:06
  • 全屏图片