【MySQL】テーブルが存在しない場合のみ作成する方法:CREATE TABLE IF NOT EXISTSとINSERT INTOの使い方
MySQLで開発を進めていると、「テーブルが既に存在するかどうかを確認し、存在しない場合だけ新しく作りたい」という場面によく出会います。そんなときに活躍するのが CREATE TABLE IF NOT EXISTS 構文です。この記事では、テーブルの存在チェックを行いながら安全にテーブルを作成し、その後データを挿入する手順を具体的な例とともに解説します。
CREATE TABLE IF NOT EXISTSの基本構文
テーブルが既に存在しているかどうかを判定しながら作成するには、以下のような構文を使用します。
create table if not exists テーブル名
(
カラム名1 データ型,
...
);
insert into テーブル名 values(値1, ......N);ポイントは IF NOT EXISTS を指定することです。これにより、同名のテーブルがすでに存在していた場合にはエラーにならず、テーブル作成処理が自動的にスキップされます。スクリプトやアプリケーションの初期化処理などで繰り返し実行される可能性があるSQLにおいて、非常に便利な機能です。
実際にテーブルを作成してみよう
それでは、実際にテーブルを作成してみましょう。
mysql> create table if not exists DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentSubject varchar(100)
);
Query OK, 0 rows affected (0.60 sec)ここでは、自動採番される主キー StudentId と、科目名を格納する StudentSubject の2つのカラムを持つテーブルを作成しました。「Query OK」が表示されれば作成は成功です。
INSERTコマンドでレコードを挿入する
次に、INSERTコマンドを使ってテーブルにレコードを追加していきます。
mysql> insert into DemoTable(StudentSubject) values('Java');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(StudentSubject) values('MySQL');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentSubject) values('C');
Query OK, 1 row affected (0.23 sec)StudentIdはAUTO_INCREMENT(自動採番)に設定されているため、挿入時にはStudentSubjectの値を指定するだけでOKです。IDは自動的に1、2、3と割り振られます。
SELECT文で登録データを確認する
最後に、SELECT文を使ってテーブル内の全レコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-----------+----------------+ | StudentId | StudentSubject | +-----------+----------------+ | 1 | Java | | 2 | MySQL | | 3 | C | +-----------+----------------+ 3 rows in set (0.00 sec)
3件のレコードが正しく挿入されていることが確認できます。
まとめ
- CREATE TABLE IF NOT EXISTS を使えば、テーブルの存在有無を意識せずに安全なテーブル作成が可能。
- 既存テーブルがある場合はエラーが出ず、作成処理がスキップされるため、再実行しても安心。
- AUTO_INCREMENTカラムを主キーに設定すれば、IDを意識せずにデータ挿入ができる。
バッチ処理やマイグレーションスクリプトなど、同じSQLを何度も実行する可能性がある環境では、IF NOT EXISTSを活用することでエラーを防ぎ、より堅牢なデータベース運用を実現できます。ぜひ日常の開発に取り入れてみてください。
-
MySQLテーブルにJSONデータを挿入する方法
MySQLでは、JSON型のカラムを作成することで、構造化されたデータをそのまま保存できます。ここでは、JSON型カラムを持つテーブルを作成し、実際にデータを挿入・取得する手順を解説します。 1. JSON型カラムを持つテーブルを作成する まず、JSON型のカラム「ListOfNames」を持つテーブルを作成します。 mysql> create table DemoTable1832 ( ListOfNames JSON ); Query OK,
-
MySQLでテーブルAとBを比較し、Bに存在しないデータをテーブルCに挿入する方法
MySQL:テーブルAとBを比較し、Bに存在しないデータをCへ挿入する方法テーブルAのデータとテーブルBを比較し、Bに存在しないレコードだけをテーブルCに挿入したい場合は、LEFT JOIN(左外部結合)を使うのが最もシンプルで確実な方法です。ここでは、3つのテーブル(demo20=テーブルA、demo21=テーブルB、demo22=テーブルC)を使って、具体的な手順を順番に解説します。ステップ1:テーブルA(demo20)を作成するまず、比較元となる最初のテーブルを作成します。mysql> create table demo20 −> ( −> id