mysql sequence 关键字_MySQL Using Sequences序列

序列就是按照要求的顺序产生的一组整数,比如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 范例

当查询生成了 AUTO_INCREMENT 值后,通过调用 mysql_insert_id() 函数来获取该值。mysql_query ("INSERT INTO insect (name,date,origin)

VALUES('moth','2001-09-14','windowsill')", $conn_id);

$seq = mysql_insert_id ($conn_id);

对已有序列进行重新编号

假如从表中删除了许多记录,必须对记录再次排序。这时可以使用一个小技巧来解决,但要记住当表还连接着其他表时,一定要非常小心。

如果一定要对 AUTO_INCREMENT 列进行重新排序,那么正确的方式是将该列从表中删除,然后再添加它。下面这个范例中就用了这个技巧,在 insect 表中对 id 值重新排序。mysql> ALTER TABLE insect DROP id;

mysql> ALTER TABLE insect

-> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,

-> ADD PRIMARY KEY (id);

以特定值作为序列初始值

MySQL 默认以 1 作为序列初始值,但你也可以在创建表时指定其他的数字。下面的范例以 100 作为序列初始值。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

);

另外一种方法是,先创建表,然后再使用 ALTER TABLE 来改变初始序列值。mysql> ALTER TABLE t AUTO_INCREMENT = 100;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值