在MySQL中使用序列的簡單教程

amadan發表於2021-09-09

序列是一組整數1,2,3,...中生成的順序。序列中經常使用的資料庫,因為很多應用都需要一個表中的每一行包含一個獨特的值和序列提供了一個簡單的方法來產生。本章介紹如何使用MySQL中的序列。
使用自動遞增列:

在MySQL中使用序列最簡單的方法是定義一個AUTO_INCREMENT列,剩下的事情留給MySQL處理。
例項:

試試下面的例子。這將建立表之後,它會在此表中它不是必需的記錄ID插入幾行,因為它由MySQL自動遞增。

?

123456789101112131415161718192021222324 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: 0mysql> 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值。此屬性的訪問是透過一個資料庫控制程式碼或語句控制程式碼,這取決於如何發出查詢。下面的示例引用,它透過資料庫控制程式碼:

?

123 $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():

?

123 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值:

?

1234 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開始順序。

?

12345678 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。

?

1 mysql> ALTER TABLE t AUTO_INCREMENT = 100;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2310/viewspace-2811115/,如需轉載,請註明出處,否則將追究法律責任。

相關文章