MySQLでテーブルのAUTO_INCREMENT値を確認する2つの方法【実例付き】
MySQLでは、テーブルに設定されたAUTO_INCREMENT(自動採番)の現在値を簡単に確認できます。主な方法は次の2つです。
方法1:SHOW TABLE STATUSコマンドを使う
まず1つ目は、SHOW TABLE STATUSコマンドを使用する方法です。構文は以下のとおりです。
SHOW TABLE STATUS LIKE 'yourTableName'\G
方法2:information_schemaを参照する
2つ目は、システムデータベースであるinformation_schemaから直接取得する方法です。必要な情報だけをピンポイントで取得できるため、スクリプトやアプリケーションからの利用にも向いています。
SELECT `AUTO_INCREMENT`
FROM `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA` = 'yourDatabaseName'
AND `TABLE_NAME` = 'yourTableName';
実際に試してみよう
これらの構文の動きを理解するために、実際にテーブルを作成して確認してみましょう。まずはテーブル作成のクエリです。
mysql> create table viewAutoIncrementDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName varchar(20)
-> );
Query OK, 0 rows affected (0.59 sec)
次に、INSERT文を使ってレコードをいくつか登録します。
mysql> insert into viewAutoIncrementDemo(UserName) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Bob');
Query OK, 1 row affected (0.08 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Sam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('David');
Query OK, 1 row affected (0.16 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Larry');
Query OK, 1 row affected (0.11 sec)
SELECT文ですべてのレコードを表示してみます。
mysql> select *from viewAutoIncrementDemo;
実行結果は以下のとおりです。UserIdが自動的に1から7まで採番されているのがわかります。
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | David | | 7 | Larry | +--------+----------+ 7 rows in set (0.00 sec)
AUTO_INCREMENT値を確認する
それでは、このテーブルのAUTO_INCREMENT値を実際に確認してみましょう。まずはSHOW TABLE STATUSを使ったクエリです。
mysql> SHOW TABLE STATUS LIKE 'viewAutoIncrementDemo'\G
実行結果は以下のとおりです。Auto_increment: 8という行があり、次に採番される値が「8」であることが確認できます。
*************************** 1. row ***************************
Name: viewautoincrementdemo
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 7
Avg_row_length: 2340
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 8
Create_time: 2019-03-02 04:05:20
Update_time: 2019-03-02 04:06:11
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.08 sec)
続いて、2つ目の方法であるinformation_schemaを使ったクエリです。ここではデータベース名に「sample」を指定しています。
mysql> SELECT `AUTO_INCREMENT` -> FROM `information_schema`.`TABLES` -> WHERE `TABLE_SCHEMA` = 'sample' -> AND `TABLE_NAME` = 'viewAutoIncrementDemo';
実行結果は以下のとおりです。こちらでも同じく「8」が取得できました。
+----------------+ | AUTO_INCREMENT | +----------------+ | 8 | +----------------+ 1 row in set (0.00 sec)
まとめ
テーブルのAUTO_INCREMENT値を確認するには、SHOW TABLE STATUSコマンドか、information_schema.TABLESへのSELECT文のどちらかを使います。前者はエンジンや照合順序などテーブル全体の詳細情報も一緒に確認でき、後者は必要な値だけをシンプルに取得できるという特徴があります。用途に応じて使い分けるとよいでしょう。
-
MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法
MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法MySQLでは、テーブル作成時にAUTO_INCREMENTオプションを指定することで、連番の開始値を任意の数値に設定できます。これにより、IDを100や1000など、特定の値から採番することが可能になります。以下の手順で、開始値を100に設定したAUTO_INCREMENTカラムを持つテーブルを作成し、その動作を確認してみましょう。1. テーブルの作成まず、AUTO_INCREMENT=100を指定してテーブルを作成します。mysql> create table DemoTable1907 (
-
MySQLでテーブルに存在しない値だけを抽出する方法(UNION ALLとNOT EXISTSの活用)
MySQLでテーブルに存在しない値を照会するには? MySQLで「テーブルにまだ登録されていない値だけ」を取得したい場合、UNION ALLとWHERE NOT EXISTSを組み合わせるのが有効です。サブクエリで候補となる値をUNION ALLで列挙し、NOT EXISTSによって既にテーブル内に存在する値を除外することで、存在しない値のみを抽出できます。 ここでは、実際の手順をサンプルコードとともに解説します。 1. サンプルテーブルを作成する まず、自動採番(AUTO_INCREMENT)のカラムを持つテーブルを作成します。 mysql> create table DemoTab