视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
在MySQL中使用序列的简单教程_MySQL
2020-11-09 19:50:18 责编:小采
文档


序列是一组整数1,2,3,...中生成的顺序。序列中经常使用的数据库,因为很多应用都需要一个表中的每一行包含一个独特的值和序列提供了一个简单的方法来产生。本章介绍如何使用MySQL中的序列。
使用自动递增列:

在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和PHH的脚本提供了独特的功能来检索的最后一个记录的自动递增值。
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列的方式,这样做是从表中删除列,然后重新添加它。下面的例子演示了如何使用这种技术在BUG重新编号的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,但在创建表的时候可以指定任何其他数字。下面的例子,MySQL将从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;

下载本文
显示全文
专题