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

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

大家好,我是讯享网,很高兴认识大家。



自动增量序列是 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;


讯享网

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


小讯
上一篇 2025-05-18 08:45
下一篇 2025-06-11 07:18

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/168183.html