在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ SQL 使用序列
SQL AND 和 OR 連接運(yùn)算符
SQL 刪除數(shù)據(jù)庫(kù)
SQL 使用序列
SQL CONCAT 函數(shù)
SQL 使用視圖
SQL SELECT 語(yǔ)句
SQL 別名
SQL MAX 函數(shù)
SQL 創(chuàng)建表
SQL NULL 值
SQL 數(shù)據(jù)類型
SQL RAND 函數(shù)
SQL 臨時(shí)表
SQL INSERT 語(yǔ)句
SQL ALTER TABLE 命令
SQL 關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
SQL SUM 函數(shù)
SQL 子查詢
SQL UPDATE 語(yǔ)句
SQL 表達(dá)式
SQL 操作符
SQL ORDER BY 子句
SQL WHERE 子句
SQL 對(duì)結(jié)果進(jìn)行排序
SQL 注入
SQL AVG 函數(shù)
SQL 選擇數(shù)據(jù)庫(kù),USE 語(yǔ)句
SQL 克隆數(shù)據(jù)表
SQL COUNT 函數(shù)
SQL 語(yǔ)法
SQL DELETE 語(yǔ)句
SQL 約束
SQL 刪除表
SQL TOP、LIMIT 和 ROWNUM 子句
SQL 日期函數(shù)
SQL TRUNCATE TABLE 命令
SQL DISTINCT 關(guān)鍵字
SQL 處理重復(fù)數(shù)據(jù)
SQL 使用連接
SQL 索引
SQL 事務(wù)
SQL GROUP BY 子句
SQL HAVING 子句
SQL MIN 函數(shù)
SQL 概覽
SQL SQRT 函數(shù)
SQL LIKE 子句
SQL 通配符
SQL UNION 子句
SQL 數(shù)據(jù)庫(kù)
SQL 創(chuàng)建數(shù)據(jù)庫(kù)

SQL 使用序列

序列是根據(jù)需要產(chǎn)生的一組有序整數(shù):1, 2, 3 ... 序列在數(shù)據(jù)庫(kù)中經(jīng)常用到,因?yàn)樵S多應(yīng)用要求數(shù)據(jù)表中的的每一行都有一個(gè)唯一的值,序列為此提供了一種簡(jiǎn)單的方法。

本節(jié)闡述在 MySQL 中如何使用序列。

使用 AUTO_INCREMENT 列:

在 MySQL 中使用序列最簡(jiǎn)單的方式是,把某列定義為 AUTO_INCREMENT,然后將剩下的事情交由 MySQL 處理:

示例:

試一下下面的例子,該例將會(huì)創(chuàng)建一張新表,然后再里面插入幾條記錄,添加記錄時(shí)并不需要指定記錄的 ID,因?yàn)樵摿械闹涤?MySQL 自動(dòng)增加。

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() 是一個(gè) SQL 函數(shù),可以用在任何能夠執(zhí)行 SQL 語(yǔ)句地方。另外,Perl 和 PHP 各自提供了其獨(dú)有的函數(shù),用于獲得最后一條記錄的 AUTO_INCREMENT 值。

Perl 示例:

使用 mysql_insertid 屬性來(lái)獲取 SQL 查詢產(chǎn)生的 AUTO_INCREMENT 值。根據(jù)執(zhí)行查詢的方式不同,該屬性可以通過(guò)數(shù)據(jù)庫(kù)句柄或者語(yǔ)句句柄來(lái)訪問(wèn)。下面的示例通過(guò)數(shù)據(jù)庫(kù)句柄取得自增值:

$dbh->do ("INSERT INTO INSECT (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysql_insertid};

PHP 示例:

在執(zhí)行完會(huì)產(chǎn)生自增值的查詢后,可以通過(guò)調(diào)用 mysql_insert_id() 來(lái)獲取此值:

mysql_query ("INSERT INTO INSECT (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);

重新編號(hào)現(xiàn)有序列:

當(dāng)你從表中刪除了很多記錄后,可能會(huì)想要對(duì)所有的記錄重新定序。只要略施小計(jì)就能達(dá)到此目的,不過(guò)如果你的表與其他表之間存在連接的話,請(qǐng)千萬(wàn)小心。

當(dāng)你覺(jué)得不得不對(duì) AUTO_INCREMENT 列重新定序時(shí),從表中刪除該列,然后再將其添加回來(lái),就可以達(dá)到目的了。下面的示例展示了如何使用這種方法,為 INSECT 表中的 ID 值重新定序:

mysql> ALTER TABLE INSECT DROP id;
mysql> ALTER TABLE insect
    -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
    -> ADD PRIMARY KEY (id);

從特定值的序列

默認(rèn)情況下,MySQL 中序列的起始值為 1,不過(guò)你可以在創(chuàng)建數(shù)據(jù)表的時(shí)候,指定任意其他值。下面的示例中,MySQL 將序列的起始值設(shè)為 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ù)據(jù)表,然后使用 ALTER TABLE 來(lái)設(shè)置序列的起始值:

mysql> ALTER TABLE t AUTO_INCREMENT = 100;
上一篇:SQL 事務(wù)下一篇:SQL 操作符