MySQLでデータベースとテーブルを存在しない場合のみ1回だけ作成する方法(IF NOT EXISTS)
PHPからMySQLデータベースへ接続して開発を行う際、「データベースやテーブルがまだ存在しない場合にだけ、1回だけ作成したい」というニーズはよくあります。MySQLでは IF NOT EXISTS 句を使うことで、これを簡単かつ安全に実現できます。
データベースを1回だけ作成する構文
データベースがまだ存在しない場合にのみ作成するには、以下の構文を使用します。
CREATE DATABASE IF NOT EXISTS yourDatabaseName;
この構文では、指定した名前のデータベースがすでに存在している場合はエラーにならず、何もせずに処理が完了します。そのため、スクリプトを何度実行しても安全です。
テーブルを1回だけ作成する構文
同様に、テーブルがまだ存在しない場合にのみ作成するには、以下の構文を使用します。
CREATE TABLE IF NOT EXISTS yourTableName ( yourColumnName yourDatatype, . . . N );
CREATE TABLE IF NOT EXISTS を使えば、テーブルが既に存在していてもエラーが発生せず、重複して作成されることもありません。
実際の実行例
それでは、上記の両方の構文を実装して、データベースとテーブルが存在しない場合にのみ作成してみましょう。
データベースの作成例
mysql> CREATE DATABASE IF NOT EXISTS login; Query OK, 1 row affected (0.23 sec)
上記のクエリにより、「login」というデータベースが正常に作成されました。
テーブルの作成例
続いて、テーブルを作成するクエリは次のとおりです。
mysql> CREATE TABLE IF NOT EXISTS DemoTable ( Id int ); Query OK, 0 rows affected (0.56 sec)
上記のクエリにより、「DemoTable」というテーブルが正常に作成されました。
まとめ
IF NOT EXISTS を活用することで、データベースやテーブルの重複作成によるエラーを防ぎ、初期化処理を冪等(べきとう)に保つことができます。PHPアプリケーションのセットアップスクリプトなどで繰り返し実行される可能性があるSQLには、この構文を使うのがベストプラクティスです。
-
MySQL:テーブルがまだ存在しない場合は作成し、同じクエリでレコードを挿入する方法
CREATE TABLE IF NOT EXISTS を使ったテーブル作成とデータ挿入MySQLでは、テーブルがまだ存在しない場合にのみテーブルを作成し、そのまま1つのクエリでレコードを挿入することができます。この処理には CREATE TABLE IF NOT EXISTS を使用します。基本の構文は以下のとおりです。create table if not exists yourTableName ( yourColumnName1 dataType, yourColumnName2 dataType, yourColumnName3 dataType, .
-
MySQLで特定の値が存在しないレコードを抽出する方法(NOT IN句の使い方)
MySQLでテーブルから「特定の値を含まない」レコードだけを取得したい場合は、NOT IN() 句を使用します。この記事では、実際にサンプルテーブルを作成しながら、NOT IN句の基本的な使い方を解説します。サンプルテーブルの作成まず、学生情報を格納するためのテーブルを作成しましょう。StudentId を主キー(AUTO_INCREMENT)とし、StudentName カラムを持つシンプルなテーブルです。mysql> create table DemoTable1991 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,