MySQL AUTO_INCREMENT と例

自動インクリメントとは何ですか?

自動インクリメントは、数値データ型を操作する関数です。自動インクリメントとして定義されたフィールドのテーブルにレコードが挿入されるたびに、連続した数値が自動的に生成されます。

自動インクリメントを使用する場合?

データベースの正規化に関するレッスンでは、主キーと外部キーを使用して相互に関連付けられた多くの小さなテーブルにデータを保存することにより、最小限の冗長性でデータを保存する方法を検討しました。

MySQL AUTO_INCREMENT と例

主キーはデータベース内の行を一意に識別するため、一意である必要があります。しかし、主キーが常に一意であることを保証するにはどうすればよいですか? 考えられる解決策の 1 つは、データを追加する前にテーブル内のキーの存在を確認する式を使用して主キーを生成することです。これはうまく機能するかもしれませんが、ご覧のとおり、この方法は複雑で確実ではありません。このような複雑さを回避し、主キーが常に一意であることを保証するために、次の式を使用できます。 MySQLの自動インクリメント機能を使用して主キーを生成します。自動インクリメントは INT データ型で使用されます。INT データ型は、符号付きと符号なしの両方の値をサポートします。符号なしデータ型には正の数のみを含めることができます。ベスト プラクティスとして、自動インクリメント主キーに符号なし制約を定義することをお勧めします。

自動インクリメント構文

次に、映画カテゴリ テーブルの作成に使用されるスクリプトを見てみましょう。

CREATE TABLE `categories` (
  `category_id` int(11) AUTO_INCREMENT,
  `category_name` varchar(150) DEFAULT NULL,
  `remarks` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
);

category_id フィールドの「AUTO_INCREMENT」に注目してください。 これにより、テーブルに新しい行が挿入されるたびにカテゴリ ID が自動的に生成されます。 テーブルにデータを挿入するときは指定されません。 MySQL それを生成します。

デフォルトでは、AUTO_INCREMENT の開始値は 1 で、新しいレコードごとに 1 ずつ増加します。

カテゴリ テーブルの現在の内容を調べてみましょう。

SELECT * FROM `categories`;

上記のスクリプトを実行すると、 MySQL myflixdb に対する workbench の結果は次のようになります。

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

ここで、カテゴリ テーブルに新しいカテゴリを挿入しましょう。

INSERT INTO  `categories` (`category_name`) VALUES ('Cartoons');

上記のスクリプトを myflixdb に対して実行します。 MySQL 作業台 以下に示す結果が得られます。

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

カテゴリ ID を指定していないことに注意してください。 MySQL カテゴリ ID は自動増分として定義されているため、自動的に生成されます。

によって生成された最後の挿入 ID を取得したい場合は、 MySQL、LAST_INSERT_ID 関数を使用してこれを行うことができます。以下に示すスクリプトは、生成された最後の ID を取得します。

SELECT LAST_INSERT_ID();

上記のスクリプトを実行すると、INSERT クエリによって生成された最後の自動増分番号が得られます。 結果を以下に示します。

MySQL 自動増加

製品概要

  • 数値データ型の列に自動増分属性を指定すると、データベースに新しい行が追加されるたびに、番号が順番に生成されます。
  • 自動インクリメントは主キーの生成によく使用されます。
  • 自動増分で定義されたデータ型は、多くのレコードを収容できる十分な大きさである必要があります。 自動増分フィールドのデータ型として TINYINT を定義すると、テーブルに追加できるレコード数が 255 に制限されます。これを超える値は TINYINT データ型では受け入れられないためです。
  • 負の数値を回避するために、自動増分主キーに unsigned 制約を指定することが推奨されます。
  • テーブルから行が削除されると、その自動増分 ID は再利用されません。 MySQL 順次新しい数字を生成し続けます。
  • デフォルトでは、AUTO_INCREMENT の開始値は 1 で、新しいレコードごとに 1 ずつ増加します。
  • AUTO_INCREMENT シーケンスを別の値で開始するには、AUTO_INCREMENT = 10 を使用します。