MySQL 序列是一组整数:1, 2, 3, …,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。

本章我们将介绍如何使用MySQL的序列。

使用 AUTO_INCREMENT

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)

获取AUTO_INCREMENT值

在MySQL的客户端中你可以使用 SQL中的LAST_INSERT_ID( ) 函数来获取最后的插入表中的自增列的值。

在PHP或PERL脚本中也提供了相应的函数来获取最后的插入表中的自增列的值。

PERL实例

使用 mysql_insertid 属性来获取 AUTO_INCREMENT 的值。 实例如下:

$dbh->do ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysql_insertid};

PHP实例

PHP 通过 mysql_insert_id ()函数来获取执行的插入SQL语句中 AUTO_INCREMENT列的值。

mysql_query ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);

重置序列

如果你删除了数据表中的多条记录,并希望对剩下数据的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);

设置序列的开始值

一般情况下序列的开始值为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;

了解更多数据库知识,点击原文链接:www.shulanxt.com/database/mysql/mysql-using-sequences

MySQL 序列使用相关推荐

  1. mysql序列increment_MySQL 序列 AUTO_INCREMENT

    MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列 ...

  2. 删除行对MySQL序列有这么多影响?

    墨墨导读:MySQL序列概述为了达到标识的目的,许多应用程序需要生成唯一编号,比如:商品编号.交易流水号等. 一.MySQL序列概述 为了达到标识的目的,许多应用程序需要生成唯一编号,比如:商品编号. ...

  3. 雷林鹏分享:MySQL 序列使用

    MySQL 序列使用 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如 ...

  4. mysql重复记录大于十的数据库_MySQL专题10之MySQL序列使用、MySQL处理重复数据、MySQL以及SQL的注入...

    1.MySQL序列使用 -  MySQL序列是一组整数:1,2,3...,由于一张数据表只能有一个字段自增主键,如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. -  使用AUTO ...

  5. 第30章 MySQL 序列使用教程

    MySQL 序列是一组整数:1, 2, 3, -,由于一张数据表只能有一个字段自增主键, 如果仁兄想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章咱们将介绍如何使用MySQL的序列 ...

  6. mysql 序列_MySql中序列的应用和总结

    Mysql中的序列主要用于主键,主键是递增的字段,不可重复. Mysql与Oracle不同的是,它不支持原生态的sequence,需要用表和函数的组合来实现类似序列的功能. 1.首先创建序列的主表 / ...

  7. mysql序列 mybatis_MySQL实现序列(Sequence)效果以及在Mybatis中如何使用这种策略

    前言: 在oracle中一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长.开 ...

  8. 并发安全的mysql序列实现

    --仿照序列表 drop table if exists sequence;    create table sequence (        seq_name        VARCHAR(50) ...

  9. mysql 序列自增长 恢复到1_大数据教程分享MySQL数据库约束条件和自增长序列

    大数据教程分享MySQL数据库约束条件和自增长序列,一.约束(constraint) 约束就是在表上强制执行的一种校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合,将无法执行. 约束的全 ...

最新文章

  1. ubuntu 进入 recovery mode
  2. mybatis.xml中sql编写规范
  3. 11、MySQL算术运算符
  4. C语言程序练习- L1-040 最佳情侣身高差 (10分)
  5. 去掉Phoca Download的Powered By
  6. python3 shutil模块
  7. go使用mongodb
  8. 中国顶级AI盛会,10月魔都等你来解密!
  9. 蓝桥杯 ADV-194 算法提高 盾神与积木游戏 java版
  10. CondaHTTPError问题的解决
  11. 第一个python程序-判断登陆用户名和密码是否正确
  12. 反编译那些事儿(一)
  13. GeoTiff及GDAL切图(java)
  14. “长江第一灯光秀”引关注 景观工程首次应用4G 路由
  15. C语言利用switch的简单计算器
  16. 优动漫PAINT基础系列之图层模式
  17. SQLZOOL练习题答案和解析 第2关 SELECT from World
  18. 小米应用开发者文档(标注需要注意的地方)
  19. 前端开发行业真的会被AI取代吗?
  20. JSP与Servlet 基础知识

热门文章

  1. A. Serval and Mocha‘s Array codeforces 1789A
  2. 【ZUFE-校内竞赛】校内常见竞赛难度分类及参赛建议(浙江财经大学信智学院角度)
  3. python同步异步,python异步回调转为同步并实现超时
  4. python实战(二)模拟登陆两小无猜网
  5. c51时钟数码管显示流程图_基于单片机89C51的数码管显示时钟设计.doc
  6. ppt流程图字体太小_PPT基础不好?这5个高大上的PPT技巧,瞬间让老板刮目相看!...
  7. 日语教程下载 日语学习方法
  8. 高中生黑了学校所有的电子屏,结果老师转发点赞,当地政府还上门求合作
  9. (附源码)计算机毕业设计ssm服装创意定制管理系统
  10. 大一学生课设c——服装管理系统