MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

SHOW TABLE STATUSを使わずにMySQLでテーブルのAUTO_INCREMENT値を確認する方法

MySQLでテーブルの次のAUTO_INCREMENT(自動採番)値を確認したい場合、SHOW TABLE STATUS コマンドを使わなくても、INFORMATION_SCHEMA.TABLES を参照することで簡単に取得できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、AUTO_INCREMENT値を照会する手順を解説します。

1. サンプルテーブルの作成

まず、AUTO_INCREMENT列を持つテーブルを作成します。

mysql> create table viewtheauto_incrementValueForATableDemo
    -> (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(20)
    -> );
Query OK, 0 rows affected (0.84 sec)

ここでは StudentId を主キーとするAUTO_INCREMENT列として定義しています。行が挿入されるたびに、IDが自動的に採番されます。

2. レコードの挿入

続いて、INSERT文を使って複数のレコードを登録します。StudentIdは指定しないため、自動的に連番が割り当てられます。

mysql> insert into viewtheauto_incrementValueForATableDemo(StudentName)
values('Ramit');
Query OK, 1 row affected (0.23 sec)

mysql> insert into viewtheauto_incrementValueForATableDemo(StudentName) values('Bob');
Query OK, 1 row affected (0.14 sec)

mysql> insert into viewtheauto_incrementValueForATableDemo(StudentName) values('Chris');
Query OK, 1 row affected (0.15 sec)

mysql> insert into viewtheauto_incrementValueForATableDemo(StudentName)
values('Robert');
Query OK, 1 row affected (0.12 sec)

mysql> insert into viewtheauto_incrementValueForATableDemo(StudentName) values('John');
Query OK, 1 row affected (0.46 sec)

3. 登録されたデータの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from viewtheauto_incrementValueForATableDemo;

実行結果は以下のとおりです。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Ramit       |
| 2         | Bob         |
| 3         | Chris       |
| 4         | Robert      |
| 5         | John        |
+-----------+-------------+
5 rows in set (0.00 sec)

5件のレコードに対して、IDが1〜5まで自動的に採番されていることがわかります。

4. INFORMATION_SCHEMA.TABLESでAUTO_INCREMENT値を取得

次のAUTO_INCREMENT値を確認するには、information_schema.TABLES テーブルに対して、スキーマ名(データベース名)とテーブル名を条件にクエリを実行します。

mysql> SELECT `AUTO_INCREMENT` AS 'NextAutoIncrementValue'
    -> FROM `information_schema`.`TABLES`
    -> WHERE `TABLE_SCHEMA` = 'test'
    -> AND `TABLE_NAME` = 'viewtheauto_incrementValueForATableDemo';

実行結果:

+------------------------+
| NextAutoIncrementValue |
+------------------------+
| 6                      |
+------------------------+
1 row in set (0.00 sec)

結果として「6」が返されました。これは、次に挿入されるレコードに割り当てられるStudentIdの値です。

ポイントまとめ

  • AUTO_INCREMENT 列には、次に採番される値が information_schema.TABLESAUTO_INCREMENT カラムに格納されています。
  • TABLE_SCHEMA にはデータベース名、TABLE_NAME には対象テーブル名を指定します。
  • SHOW TABLE STATUSの出力全体を見る必要がない場合、この方法なら必要な情報だけをピンポイントで取得でき、スクリプトやアプリケーションからの利用にも便利です。
  1. MySQLでテーブルに存在しない値だけを抽出する方法(UNION ALLとNOT EXISTSの活用)

    MySQLでテーブルに存在しない値を照会するには? MySQLで「テーブルにまだ登録されていない値だけ」を取得したい場合、UNION ALLとWHERE NOT EXISTSを組み合わせるのが有効です。サブクエリで候補となる値をUNION ALLで列挙し、NOT EXISTSによって既にテーブル内に存在する値を除外することで、存在しない値のみを抽出できます。 ここでは、実際の手順をサンプルコードとともに解説します。 1. サンプルテーブルを作成する まず、自動採番(AUTO_INCREMENT)のカラムを持つテーブルを作成します。 mysql> create table DemoTab

  2. MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法

    あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82     -> (