MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード

MySQL シーケンスは、1、2、3、... という整数のセットです。データ テーブルには自動増分主キー フィールドを 1 つしか持てないため、他のフィールドの自動増分を実現するには、MySQL シーケンスを使用できます。

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

AUTO_INCREMENTの使用

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

次の例では、insequent という名前のデータ テーブルを作成します。insequent の id は、値を指定しなくても自動的に増加します。

mysql> CREATE TABLE 昆虫
  -> (
  -> id INT UNSIGNED NOT NULL AUTO_INCREMENT、
  -> 主キー (id)、
  -> name VARCHAR(30) NOT NULL, # 昆虫の種類
  -> date DATE NOT NULL、# 収集日
  -> origin VARCHAR(30) NOT NULL # 収集場所
);
クエリは正常、影響を受けた行は 0 行 (0.02 秒)
mysql> INSERT INTO 昆虫 (id,name,date,origin) 値
  -> (NULL,'イエバエ','2001-09-10','キッチン'),
  -> (NULL,'ヤスデ','2001-09-10','車道'),
  -> (NULL,'バッタ','2001-09-10','前庭');
クエリは正常、3 行が影響を受けました (0.02 秒)
記録: 3 重複: 0 警告: 0
mysql> SELECT * FROM 昆虫 ORDER BY id;
+----+-------------+-------------+-------------+
| ID | 名前 | 日付 | 出典 |
+----+-------------+-------------+-------------+
| 1 | イエバエ | 2001-09-10 | キッチン |
| 2 | ヤスデ | 2001-09-10 | 車道 |
| 3 | バッタ | 2001-09-10 | 前庭 |
+----+-------------+-------------+-------------+
セット内の 3 行 (0.00 秒)

AUTO_INCREMENT値を取得する

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

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

PERLの例

AUTO_INCREMENT の値を取得するには、mysql_insertid 属性を使用します。 以下に例を示します。

$dbh->do ("INSERT INTO 昆虫 (名前、日付、起源)
VALUES('moth','2001-09-14','windowsill')");
私の$seq = $dbh->{mysql_insertid};

PHPの例

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

mysql_query ("INSERT INTO 昆虫 (名前、日付、起源)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);

リセットシーケンス

テーブル内の複数のレコードを削除し、残りのデータの AUTO_INCREMENT 列を再配置する場合は、自動増分列を削除してから再度追加することでこれを実行できます。 ただし、この操作は慎重に実行する必要があります。レコードの削除中に新しいレコードが追加されると、データの混乱が発生する可能性があります。操作は以下のとおりです。

mysql> ALTER TABLE 昆虫 DROP id;
mysql> ALTER TABLE 昆虫
  -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST、
  -> 主キー (id) を追加します。

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

通常、シーケンスの開始値は 1 ですが、開始値 100 を指定する必要がある場合は、次のステートメントで指定できます。

mysql> CREATE TABLE 昆虫
  -> (
  -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
  -> 主キー (id)、
  -> name VARCHAR(30) NOT NULL, # 昆虫の種類
  -> date DATE NOT NULL、# 収集日
  -> origin VARCHAR(30) NOT NULL # 収集場所
);

または、テーブルが正常に作成された後に、次のステートメントを使用してこれを実行することもできます。

mysql> ALTER TABLE t AUTO_INCREMENT = 100;

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL インストール図 MySQL グラフィック インストール チュートリアル (詳細な手順)
  • ローカルホスト上の MySQL サーバーに接続できない (10061) 解決策
  • MySQL の日付データ型と時刻型の使用法の概要
  • MySQL の左結合、右結合、内部結合の使用法の超詳細な分析
  • Windows での MySQL 5.6 のインストールと設定 (スクリーンショットと詳細な手順付き)
  • MySQL ユーザーの作成と認証方法
  • MySQL CASE WHEN ステートメントの使用手順
  • MySQL の int、bigint、smallint、tinyint の違いについて詳しく紹介します。
  • MySQL での replace の使用
  • mysql update ステートメントの詳細な使用方法
  • mysql インデックスの追加 mysql インデックスの作成方法

<<:  JS で配列をループする 4 つの方法のまとめ

>>:  Dockerのインストール方法とDockerの4つのネットワークモードの詳細説明

推薦する

inline-blockプロパティとの互換性

<br />1年前、インターネット上にはinline-blockプロパティに関する記事は...

WeChatアプレット開発によりホームページポップアップボックスアクティビティガイダンス機能が実現

目次1. 需要2. データベース設計3.Javaバックグラウンド構成の実装4. WeChatアプレッ...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

よく使用される Linux コマンドの完全なリスト (推奨コレクション)

目次1. システム情報2. シャットダウン(システムのシャットダウン、再起動、ログアウト) 3. フ...

vue3.0 プロジェクトを素早く構築するための手順を完了する

目次1. 3.0をより適切にサポートするには、vue/cliのバージョンが4.5.0以上であることを...

docker を使用した pxc クラスターのインストールに関する詳細なチュートリアル

目次序文事前準備ディレクトリを作成するcustom.cnf を作成する証明書を作成するpxc クラス...

設定操作からMySQLへのNULLが見つからない問題を解決する

興味深い発見:合計 1000 件のレコードを含むテーブルがあります。クエリ ステートメントは次のよう...

uniapp アプレットでウォーターフォール フロー レイアウトを実装するためのアイデアとコード

1. はじめに今、ウォーターフォールフローについて書くことは、古い内容の焼き直しと見なされますか?気...

Linux\Nginx 環境での仮想ドメイン名の設定とテスト検証

Nginx 仮想ドメイン名設定を使用すると、ドメイン名を購入せずに特定のドメイン名を介してローカル ...

JS の new 関数の詳細な説明

目次1. 例2. 兵士100人を作成する3. 質問4. 改善点5. エレガント? 6. JSの父から...

太字の <b> と <strong> の違いの分析

私たちウェブマスターは皆、ウェブサイトを最適化する際に記事内のキーワードを太字にすることが最適化に非...

Linux Cron によるパラメータ付き PHP コードのスケジュール実行

1. 引き続き PHP スクリプトを使用して実行します。コマンドラインに入力: php /home/...

更新とデータ整合性処理のためのMySQLトランザクション選択の説明

MySQL のトランザクションはデフォルトで自動的にコミットされます (autocommit = 1...

DQL コマンドを使用して MySQL でデータをクエリする方法

この記事では、MySQL でよく使用されるデータ クエリ言語について説明します。 DQL (データク...