MySQL 使用序列
序列是一组整数1、2、3 ,...这是按需求顺序生成的。序列在数据库中经常使用,因为许多应用程序要求表中的每一行包含唯一的值,序列提供了生成它们的简单方法。本章介绍如何在
MySQL 使用序列 序列是一组整数1、2、3 ,...这是按需求顺序生成的。序列在数据库中经常使用,因为许多应用程序要求表中的每一行包含唯一的值,序列提供了生成它们的简单方法。本章介绍如何在MySQL中使用序列。 使用AUTO_INCREMENT列: 在MySQL中,使用序列的最简单的方法是将列定义为AUTO_INCREMENT,并将剩余的东西留给MySQL来处理。 示例: 试试下面的例子。这将创建表,然后它将在此表中插入几行,因为它不需要提供记录id,因为它自动由MySQL增加。 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 值: LAST_INSERT_ID( )是一个SQL函数,因此您可以在任何了解如何发出SQL语句的客户端中使用它。否则,perl和PHP脚本提供独占函数以检索上次记录的自动递增值。 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示例: 使用 mysql_insertid 属性来获取 AUTO_INCREMENT 的值。 实例如下: mysql_query?("INSERT?INTO?insect?(name,date,origin) 重置序列 如果你删除了数据表中的多条记录,并希望对剩下数据的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,但如果你需要指定一个开始值100MySQL 序列使用,那我们可以通过以下语句来实现: 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 ); 或者你也可以在表创建成功后,通过以下语句来实现: mysql>?ALTER?TABLE?t?AUTO_INCREMENT?=?100; (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |