第30章 MySQL 序列使用教程

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;

本专栏所有文章

第1章 MySQL 教程第2章 MySQL 安装教程
第3章 MySQL 管理教程第4章 MySQL PHP 语法教程
第5章 MySQL 连接教程第6章 MySQL 创建数据库教程
第7章 MySQL 删除数据库教程第8章 MySQL 选择数据库教程
第9章 MySQL 数据类型教程第10章 MySQL 创建数据表教程
第11章 MySQL 删除数据表教程第12章 MySQL 插入数据教程
第13章 MySQL 查询数据教程第14章 MySQL WHERE 子句教程
第15章 MySQL UPDATE 更新教程第16章 MySQL DELETE 语句教程
第17章 MySQL LIKE 子句教程第18章 MySQL UNION教程
第19章 MySQL 排序教程第20章 MySQL 分组教程
第21章 MySQL 连接的使用教程第22章 MySQL NULL 值处理教程
第23章 MySQL 正则表达式教程第24章 MySQL 事务教程
第25章 MySQL ALTER命令教程第26章 MySQL 索引教程
第27章 MySQL 临时表教程第28章 MySQL 复制表教程
第29章 MySQL 元数据教程第30章 MySQL 序列使用教程
第31章 MySQL 处理重复数据教程第32章 MySQL 及 SQL 注入教程
第33章 MySQL 导出数据教程第34章 MySQL 导入数据教程
第35章 MySQL 函数教程第36章 MySQL 运算符教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 今天,大家学得很好,认识了人民币、角、分和它们相邻单位间得二进关系,回家后,请把学到的知识讲给爸爸妈妈听,把爸爸妈妈给你的零花钱一分一分地攒起来,比比看谁是储蓄小能手。
  • 所谓健全的人格,内分四育,即:(一)体育,(二)智育,(三)德育,(四)美育。…学校教育注重学生健全的人格,故处处要使学生自动。
  • 春季是万物复苏季节。春季里鸟语花香,春季里充满生机。难怪许多诗人和作家会赞美春季,画家会以手中画笔来描绘春季。这真是一个春季。这样春季怎么会不令我们赞叹呢?
  • 有非常之人,然后有非常之事。有非常之事,然后有非常之功。
  • 第一,自信力和他信力;第二,遇到不公平的事要有正确心态;第三,先为别人创造价值,建立良好的人际氛围。当今即使一个科学家要出成果,也不可能一个人全面包办,在个体劳动越来越不重要的今天,合作尤其可贵。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值