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.02sec)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.02sec)

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;

mysql数据库序列作用_MySQL 序列使用相关推荐

  1. mysql数据库字符集作用_MYSQL数据库字符集支持

    MySQL4.1以前版本服务器只能使用单一字符集,从MySQL4.1版本开始,不仅服务器能够使用多种字符集,而且在服务器.数据库.数据表.数据列以及字符串常数多个级别上设置不同的字符集. 1.4.1. ...

  2. mysql leave的作用_MySQL数据库中DELIMITER的作用

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 下面是一个 ...

  3. mysql delimiter的作用_MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...

  4. mysql数据库根目录恢复_MySQL中数据导入恢复的简单教程

    有两个简单的方法MySQL中的数据加载到MySQL数据库从先前备份的文件. LOAD DATA导入数据: MySQL提供了LOAD DATA语句,作为一个大容量数据加载.下面是一个例子声明中,读取一个 ...

  5. mysql 慢日志 作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

  6. mysql数据库物理备份_MySQL数据库之xtrabackup物理备份(一)

    (1)备份开始时会开启一个后台检测进程,实时检测mysql redo(已提交的事务)的变化,一旦发现redo中有新日志写入,立刻将日志记入后台日志文件xtrabackup_log中, (2)复制Inn ...

  7. mysql数据库帐户_MySQL数据库用户帐号管理基础知识详解

    MySQL管理员应该知道怎样通过指定哪些用户可连接到服务器.从哪里进行连接,以及在连接 时做什么,来设置MySQL用户账号.MySQL3.22.11引入了两个更容易进行这项工作的语句:GRANT 语句 ...

  8. mysql数据库优化大全_MySQL数据库优化技巧大全

    简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...

  9. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

最新文章

  1. Cell封面:王二涛组在丛枝菌根共生“自我调节”研究中取得重大进展(视频+漫画解读)...
  2. python绘制中国加油_软件开发|使用 Python 为你的油箱加油
  3. 实际工程里的长宽设定
  4. 用数学方法构造神经网路的迭代次数1-9
  5. SCI录用的最后一步——答复审稿人的策略和答复信的写作技巧
  6. 不要迷失在技术的海洋中【转】
  7. 使用Spring Integration轮询http端点
  8. Windows批处理文件(.bat文件和.cmd文件)简单使用
  9. Spring Boot笔记-@PathVariable的使用
  10. iOS UIWebView清除缓存
  11. intellij常用快捷键
  12. 打印系统开发(56)——打印机驱动程序设计指南
  13. CSS font-family字体大合集
  14. 南航计算机考研调剂,南京航空航天大学接受调剂生的时间定了,南航读研就业会咋样...
  15. macOS上使用aircrack-ng暴力破解Wi-Fi密码
  16. Unity切割图片:把一张图片中的物体裁成多个单独的游戏物体
  17. python小案例程序安徽工程大学专用百词斩(刚接触python不喜勿喷)
  18. 安装Ubuntu 16.04后的系统设置和软件安装(搜狗输入法、Chrome、网易云音乐等)
  19. Javascript进阶笔记
  20. 图像处理课程大设计--汽车牌照自动识别

热门文章

  1. kali操作系统SSH问题解决方案
  2. 阿里云获全球第一张云安全国际认证金牌
  3. CRM系统能否用好 究竟是谁说了算?
  4. 《C陷阱与缺陷》一第1章 词法“陷阱”1.1 =不同于==
  5. Freezer - 备份云硬盘实现
  6. Perl中的替换(七)
  7. php获取excel表格中数据的小方法
  8. jquery学习系列8(过滤选择器)
  9. struts框架学习过程中的问题。
  10. linux中GIT组件,linux – 使用git和符号链接的基于组件的Web项目目录布局