MySQL 序列是一种特殊的数据类型,它可以用来生成唯一的整数序列。它可以用来为表中的每一行生成唯一的标识符,也可以用来跟踪事务。MySQL 序列是一个非常有用的工具,它可以帮助开发人员在不同表之间建立关联,并且还能够保证数据的安全性。
MySQL 序列有三个重要的属性:起始值、步长和循环次数。起始值是序列中第一个生成的整数;步长是序列中每两个生成的整数之间相差多少;循环次数是序列中最大能够生成多少个不同的整数。
MySQL 序列可以使用 CREATE SEQUENCE 语句来创建,也可以使用 ALTER SEQUENCE 语句来修改已存在的序列。当你想要使用 MySQL 序列时,你需要使用 NEXT VALUE FOR 这样的函数来获得新生成的序列值。
CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 MAXVALUE 10 CYCLE;
MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。
本章我们将介绍如何使用MySQL的序列。
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)
在MySQL的客户端中你可以使用 SQL中的LAST_INSERT_ID( ) 函数来获取最后的插入表中的自增列的值。
在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_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 = 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;
对于开发人员来说,mysql管理工具可以说是必不可缺的,它能帮助开发人员在许多方面支持包括PostgreSQL、MySQL、Redis、MongoDB等...
要正常关闭数据库连接,请在connection对象上调用end()方法。end()方法确保在数据库连接关闭之前始终执行所有剩余的查询。connec...
使用 mysqladmin 创建数据库使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。所以我们这边使用root用户登录,r...
创建MySQL数据表需要以下信息:表名表字段名定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_nam...
MySQL 表中使用 INSERT INTO SQL语句来插入数据。你可以通过 mysql 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数...
在MySQL中,只支持Union(并集)集合运算,而对于交集Intersect和差集Except并不支持。那么如何才能在MySQL中实现交集和差集...
连接数据库前,请先确认以下事项:您已经创建了数据库 TESTDB.在TESTDB数据库中您已经创建了表 EMPLOYEEEMPLOYEE表字段为 FIRST_...
以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录:#!/usr/bin/python# -*- coding: UTF-8 -*-import MySQLdb# 打开数据...
我们知道从MySQL表中使用SQL SELECT 语句来读取数据。 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句...
你可能想知道MySQL以下三种信息:查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。 数据库和数据表的信息: 包含了数...