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

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

使用AUTO_INCREMENT

MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。

实例

以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 |
+----+-------------+------------+------------+
rows in set (0.00
sec)

获取AUTO_INCREMENT值

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

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

PERL实例

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

1
2
3
$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列的值。

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

  

重置序列

如果你删除了数据表中的多条记录,并希望对剩下数据的AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增的列,然后重新添加来实现。 不过该操作要非常小心,如果在删除的同时又有新记录添加,有可能会出现数据混乱。操作如下所示:

1
2
3
4
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,那我们可以通过以下语句来实现:

1
2
3
4
5
6
7
8
mysql> CREATE TABLE insect
    ->
(
    ->
id 
INT UNSIGNED NOT NULL AUTO_INCREMENT
= 100,
    -> PRIMARY KEY (id),
    -> name VARCHAR(30) NOT NULL,
# type 
of insect
    -> date DATE NOT NULL,
date collected
    ->
origin 
VARCHAR(30) NOT NULL where collected
);

或者你也可以在表创建成功后,通过以下语句来实现:

1
mysql> ALTER TABLE t
AUTO_INCREMENT = 100;

  

原文地址:http://www.manongjc.com/mysql/mysql_using_sequences.html

mysql相关阅读:

mysql div除法的取模运算和 mod取余运算

mysq div除法的取模运算

mysql MOD()求余函数实例讲解

mysql least()函数获取最小值

mysql GREATEST()函数获取集合中最大的值

MySQL 序列 AUTO_INCREMENT的更多相关文章

  1. mysql 序列与pg序列的比较

    mysql序列(这里只谈innodb引擎): 在使用mysql的AUTO_INCREMENT时,使用AUTO_INCREMENT的字段必须建有索引,也可以为索引的一部分.当没有索引时会报错:      ...

  2. MySQL 序列使用

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

  3. 二十九、MySQL 序列使用

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

  4. DB-MySQL:MySQL 序列使用

    ylbtech-DB-MySQL:MySQL 序列使用 1.返回顶部 1. MySQL 序列使用 MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想 ...

  5. MySQL序列解决方案

    MySQL序列解决方案 MySQLOracleSQL  MySQL自增长与Oracle序列的区别: 自增长只能用于表中的其中一个字段 自增长只能被分配给固定表的固定的某一字段,不能被多个表共用. 自增 ...

  6. 吴裕雄--天生自然MySQL学习笔记:MySQL 序列使用

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

  7. MySQL使用AUTO_INCREMENT列的表注意事项之update自增列篇

    1)对于MyISAM表,如果用UPDATE更新自增列,如果列值与已有的值重复,则会出错:如果大于已有的最大值,则会自动更新表的AUTO_INCREMENT,操作是安全的. (2)对于innodb表,u ...

  8. mysql 约束条件 auto_increment 自动增长目录

    mysql 约束条件 auto_increment 自动增长 mysql 约束条件 auto_increment 自动增长起始值 布长 起始偏移量 mysql 约束条件 auto_increment ...

  9. MySQL中auto_increment的基本特性

    创建数据表时,经常会出现auto_increment这个词,下面就来了解一下它吧. MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,可在一定程度上代替Oracl ...

随机推荐

  1. python3:定时执行自动化测试脚本

    转载请注明出处:https://www.cnblogs.com/shapeL/p/9172990.html 1.windows任务计划定时执行脚本 (1)创建 .bat 文件,执行脚本的命令(inte ...

  2. Spring学习(二)--IOC

    一.什么是IOC? 孤傲苍狼总结的理解: https://www.cnblogs.com/xdp-gacl/p/4249939.html 我的理解(不知道对不对哈,不对的话请各位大神指出): IOC往 ...

  3. cocos2dx 3.1.1移植安卓apk (lua项目交叉编译 mac环境下)

    cocos2dx 3.1.1 lua项目安卓交叉编译 mac环境下 本文基于ant,sdk,ndk,adt等软件和环境已经事前设置好 1\新建项目 在mac的终端下输入命令: cocos new te ...

  4. magento增加左侧导航栏

    1.打开 app\design\frontend\default\modern\layout\catalog.xml,在适当位置加入以下代码: <reference name=”left”> ...

  5. SIM800C 使用基站定位

    /******************************************************************************* * SIM800C 使用基站定位 * ...

  6. 允许发生http请求

  7. Fire! 又是图 bfs

    Joe works in a maze.  Unfortunately, portions of the maze havecaught on  re, and the owner of the ma ...

  8. cache、session与cookie

    cache.session.cookie的区别 session把数据保存在服务器端,每一个用户都有属于自己的Session,与别人的不冲突 就是说,你登陆系统后,你的信息(如账号.密码等)就会被保存在 ...

  9. android 图片解码显示流程

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jingxia2008/article/details/32327699 问题来源 android 能 ...

  10. APP自动化测试各项指标分析

    一.内存分析专项 启动App. DDMS->update heap 操作app,点几次GC dump heap hprof-conv转化 MAT分析 二.区分几种内存 VSS- Virtual ...