ホームページ  >  記事  >  データベース  >  【mysqlチュートリアル】MySQLシーケンスの使い方

【mysqlチュートリアル】MySQLシーケンスの使い方

黄舟
黄舟オリジナル
2016-12-26 17:28:511137ブラウズ

MySQL シーケンスの使用法

MySQL シーケンスは、1、2、3、... の整数のセットです。データ テーブルには自動インクリメント主キーを持つフィールドが 1 つしかないため、他のフィールドの自動インクリメントを実現したい場合は、フィールドでは、MySQL シーケンスを使用してこれを実現できます。

この章では、MySQL シーケンスの使用方法を紹介します。

AUTO_INCREMENT を使用する

MySQL でシーケンスを使用する最も簡単な方法は、MySQL AUTO_INCREMENT を使用してカラムを定義することです。

次の例では、Insect 内の ID を値を指定せずに自動的に拡張できます。

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 値を取得する

MySQL クライアントでは、SQL で LAST_INSERT_ID() 関数を使用して、テーブルに挿入された最後の自動インクリメント カラムの値を取得できます。

テーブルに挿入された最後の自動インクリメント列の値を取得するための、対応する関数が PHP または PERL スクリプトでも提供されています。

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 の例

PHP は、mysql_insert_id () 関数を使用して、実行された挿入 SQL ステートメントの AUTO_INCREMENT カラムの値を取得します。

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

シーケンスのリセット

データテーブル内の複数のレコードを削除し、残りのデータの AUTO_INCREMENT 列を再配置したい場合は、自動インクリメントされた列を削除してから再度追加することでこれを行うことができます。 ただし、この操作には十分な注意が必要です。削除中に新しいレコードが追加されると、データが混乱する可能性があります。操作は次のとおりです:

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

シーケンスの開始値を設定します

一般に、シーケンスの開始値は 1 ですが、開始値 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
);

または、これは、テーブルが正常に作成された後に次のステートメントを通じて達成することもできます:

mysql> ALTER TABLE t AUTO_INCREMENT = 100;


上記は、[mysql チュートリアル] MySQL シーケンスの使用方法の内容です。その他の関連コンテンツについては、こちらをご覧ください。 PHP 中国語 Web サイト (www.php.cn) に注意してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。