在MySQL中使用序列的簡單教程
序列是一組整數(shù)1,2,3,...中生成的順序。序列中經(jīng)常使用的數(shù)據(jù)庫,因為很多應(yīng)用都需要一個表中的每一行包含一個獨特的值和序列提供了一個簡單的方法來產(chǎn)生。本章介紹如何使用MySQL中的序列。
使用自動遞增列:
在MySQL中使用序列最簡單的方法是定義一個AUTO_INCREMENT列,剩下的事情留給MySQL處理。
實例:
試試下面的例子。這將創(chuàng)建表之后,它會在此表中它不是必需的記錄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的函數(shù),可以用它在任何客戶端來了解如何發(fā)出SQL語句。否則PERL和PHH的腳本提供了獨特的功能來檢索的最后一個記錄的自動遞增值。
PERL 例子:
使用mysql_insertid屬性來獲得查詢產(chǎn)生的AUTO_INCREMENT值。此屬性的訪問是通過一個數(shù)據(jù)庫句柄或語句句柄,這取決于如何發(fā)出查詢。下面的示例引用,它通過數(shù)據(jù)庫句柄:
$dbh->do ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};
PHP 例子:
發(fā)出后產(chǎn)生一個AUTO_INCREMENT值的查詢,檢索的值調(diào)用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);
重編為一個現(xiàn)有的序列:
有可能出現(xiàn)這樣的情況:當(dāng)記錄從表中刪除了一部分要重新排序的所有記錄。這可以通過使用一個簡單的技巧,但應(yīng)該非常小心,如果表是參加與其他表。
如果確定是不可避免的重測序的AUTO_INCREMENT列的方式,這樣做是從表中刪除列,然后重新添加它。下面的例子演示了如何使用這種技術(shù)在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,但在創(chuàng)建表的時候可以指定任何其他數(shù)字。下面的例子,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 );
或者也可以創(chuàng)建表,然后設(shè)置初始序列值A(chǔ)LTER TABLE。
mysql> ALTER TABLE t AUTO_INCREMENT = 100;
相關(guān)文章
mysql 大表批量刪除大量數(shù)據(jù)的實現(xiàn)方法
這篇文章主要介紹了mysql 大表批量刪除大量數(shù)據(jù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02MySQL——修改root密碼的4種方法(以windows為例)
本文以windows為例為大家詳細介紹下MySQL修改root密碼的4種方法,大家可以可以根據(jù)的自己的情況自由選擇,希望對大家有所幫助2013-07-07window10下mysql 8.0.20 安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了window10下mysql 8.0.20 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05解決阿里云ECS服務(wù)器下安裝MySQL無法遠程連接的問題
這篇文章介紹了解決阿里云ECS服務(wù)器安裝MySQL無法遠程連接的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07mysql 5.7.5 m15 winx64.zip安裝教程
這篇文章主要為大家詳細介紹了mysql 5.7.5 m15 winx64.zip安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06