mysql sql使用序列 SQL 使用序列

2021-10-18 03:32:57 字數 2674 閱讀 6049

sql 使用序列

序列是根據需要產生的一組有序整數:1, 2, 3 ... 序列在資料庫中經常用到,因為許多應用要求資料表中的的每一行都有乙個唯一的值,序列為此提供了一種簡單的方法。

本節闡述在 mysql 中如何使用序列。

使用 auto_increment 列:

在 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 和 php 各自提供了其獨有的函式,用於獲得最後一條記錄的 auto_increment 值。

perl 示例:

使用 mysql_insertid 屬性來獲取 sql 查詢產生的 auto_increment 值。根據執行查詢的方式不同,該屬性可以通過資料庫控制代碼或者語句控制代碼來訪問。下面的示例通過資料庫控制代碼取得自增值:

$dbh->do ("insert into insect (name,date,origin)

values(『moth『,『2001-09-14『,『windowsill『)");

my $seq = $dbh->;

php 示例:

在執行完會產生自增值的查詢後,可以通過呼叫 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 列重新定序時,從表中刪除該列,然後再將其新增回來,就可以達到目的了。下面的示例展示了如何使用這種方法,為 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);

從特定值的序列

預設情況下,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;

mysql sql提示 MySQL 使用SQL提示

sql提示 sql hint 是優化資料庫的一種重要手段,簡單來說就是在sql語句中加入一些人為的提示來達到優化操作的目的。下面是乙個使用sql提示的例子 select sql buffer results from 這個語句將強制mysql 生成乙個臨時結果集。只要臨時結果集生成後,所有表上的鎖定...

mysql sql提示 MySQL 使用SQL提示

sql提示 sql hint 是優化資料庫的一種重要手段,簡單來說就是在sql語句中加入一些人為的提示來達到優化操作的目的。下面是乙個使用sql提示的例子 select sql buffer results from 這個語句將強制mysql 生成乙個臨時結果集。只要臨時結果集生成後,所有表上的鎖定...

SQL 使用序列

序列是根據需要產生的一組有序整數 1,2,3 序列在資料庫中經常用到,因為許多應用要求資料表中的的每一行都有乙個唯一的值,序列為此提供了一種簡單的方法。本節闡述在 mysql 中如何使用序列。在 mysql 中使用序列最簡單的方式是,把某列定義為 auto increment,然後將剩下的事情交由 ...