在MySQL中應用序列的簡略教程。本站提示廣大學習愛好者:(在MySQL中應用序列的簡略教程)文章只能為提供參考,不一定能成為您想要的結果。以下是在MySQL中應用序列的簡略教程正文
序列是一組整數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;