Mysql 简明教程
MySQL - Sequences
序列是一系列整数,从 1 开始,每个连续数值递增 1。这些序列通常用于数据库,因为许多应用程序要求表中的每一行具有一个唯一标识符,而序列提供了生成此类值的简便方法。
Sequences in MySQL
MySQL 没有内置的序列功能,但提供了以 AUTO_INCREMENT 列的形式作为替代,它具有类似的目的。
在 MySQL 中,AUTO_INCREMENT 属性用于为某一列自动生成唯一整数值(序列)。默认情况下,此序列以 1 为初始值,并随着所添加的每一新行而递增 1。
Syntax
以下是 MySQL 中 AUTO_INCREMENT 属性的语法:
CREATE TABLE table_name (
column1 datatype AUTO_INCREMENT,
column2 datatype,
column3 datatype,
...
columnN datatype
);
Example
在以下示例中,我们将创建一个名为“CUSTOMERS”的表,此外,为该表的“ID”列定义 AUTO_INCREMENT 属性 -
CREATE TABLE CUSTOMERS (
ID INT AUTO_INCREMENT,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
现在,让我们将一些记录插入到上面创建的表中 −
INSERT INTO CUSTOMERS VALUES
(NULL, 'Ramesh', 32, 'Ahmedabad', 2000.00),
(NULL, 'Khilan', 25, 'Delhi', 1500.00),
(NULL, 'Kaushik', 23, 'Kota', 2000.00),
(NULL, 'Chaitali', 25, 'Mumbai', 6500.00),
(NULL, 'Hardik', 27, 'Bhopal', 8500.00),
(NULL, 'Komal', 22, 'Hyderabad', 4500.00),
(NULL, 'Muffy', 24, 'Indore', 10000.00);
Retrieving AUTO_INCREMENT Values
若要获取 MySQL 中的值,可以使用 LAST_INSERT_ID() SQL 函数。可以在任何可以发布 SQL 语句的客户端中使用此函数。或者,在 PERL 和 PHP 脚本中,提供了特定的函数来检索最后一条记录的自动增量值。
Renumbering an Existing Sequence
在某些情况下,您可能需要对表中的记录重新排序,特别是如果您已删除了许多记录。如果您表的表通过联接与其他表相关联,请在重新排序时小心。
如果您确定 AUTO_INCREMENT 列的重新排序是不可避免的,那么执行此操作的方法是从表中删除 AUTO_INCREMENT 列,然后再次将其添加进去。
Example
以下示例显示了使用此技术如何重新编号表中的 id values 。
ALTER TABLE CUSTOMERS DROP id;
ALTER TABLE CUSTOMERS
ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (id);