データベースを作成する(CREATE DATABASE文)

新しいデータベースを作成するには CREATE DATABASE 文を使用します。ここでは MySQL で CREATE DATABASE文を使ってデータベースを新規に作成する方法について解説します。

(Last modified: )

新しいデータベースを作成する

データベースを作成します。 CREATE DATABASE 文を使います。書式は次の通りです。

CREATE DATABASE [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

この中でも基本となる部分は次の通りです。

CREATE DATABASE db_name

指定した名前のデータベースを作成します。データベース名は64文字以内で指定してください。

実際にデータベースを作成してみます。次のように入力して下さい。

create database mydb;

新しいデータベースを作成する(1)

mydb データベースが作成されました。

存在しているデータベースと同じ名前のデータベースを作成した場合

既に存在するデータベースと同じ名前を指定して新しいデータベースを作成しようとするとエラーが発生します。

実際に試してみます。先ほど mydb というデータベースを作成しましたが、同じ名前で再度データベースを作ってみます。

create database mydb;

存在しているデータベースと同じ名前のデータベースを作成した場合(1)

Can't create database 'データベース名'; database exists というエラーが発生しました。

データベースを作成する時に、すでに同じ名前のデータベースが存在している場合はデータベースの作成を行わないようにするには次の書式を使用してください。

CREATE DATABASE IF NOT EXISTS db_name

実際に試してみます。

create database if not exists mydb;

存在しているデータベースと同じ名前のデータベースを作成した場合(2)

既に存在しているデータベース名を指定した場合でもエラーとはなりませんでした。既存のデータベースはそのままで、新しいデータベースは作成されません。

なお 1 warning と表示されているようにエラーは出ていませんが警告は表示されています。下記のように実行することで警告の内容を確認できます。

show warnings;

存在しているデータベースと同じ名前のデータベースを作成した場合(3)

警告の内容は IF NOT EXISTS を付けずに既存のデータベースと同じ名前でデータベースを作成しようとしたときに表示されたエラーと同じ内容でした。

文字セットと照合順序を指定してデータベースを作成する

データベースを作成するときにデータベースでデフォルトで使用される文字セット( charset_name )と照合順序( collation_name )を指定してデータベースを作成することができます。書式は次の通りです。

CREATE DATABASE db_name
  CHARACTER SET charset_name COLLATE collation_name

文字セット( charset_name )だけを指定することもできますし、文字セットと照合順序( collation_name )の両方を指定することもできます。

データベースを作成するときに文字セットと照合順序を指定しなかった場合は、 my.ini ファイルで設定されている文字セットと照合順序が設定されます。(詳しくは「文字コードに関する設定を記述する」を参照されてください)。

ここで設定された文字セットと照合順序は、データベースに文字セットと照合順序を指定せずにテーブルを作成したときにテーブルの文字セットと照合順序として使用されます。

MySQL で指定可能な文字セットや文字セット毎に利用できる照合順序については「文字セットと照合順序」を参照されてください。例えば文字セットの1つである cp932 をデフォルトの文字セットにしてデータベースを作成する場合は次のように実行します。

create database mydb2 character set cp932;

文字セットと照合順序を指定してデータベースを作成する(1)

文字セットだけを指定した場合は、文字セットに設定されているデフォルトの照合順序が設定されます。 cp932 のデフォルトの照合順序は cp932_japanese_ci ですので今回は 照合順序として cp932_japanese_ci が設定されています。

それでは作成したデータベースの情報を確認してみます。(データベースの情報を確認する方法については「データベースに関する情報の取得」を参照されてください)。

select SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME from INFORMATION_SCHEMA.SCHEMATA where SCHEMA_NAME = 'mydb2';

文字セットと照合順序を指定してデータベースを作成する(2)

データベースを作成する時に指定した文字セット(および文字セットのデフォルト照合順序)が設定されていることが確認できます。

-- --

今度は文字セットに加えて照合順序を指定してデータベースを作成してみます。

create database mydb3 character set cp932 collate cp932_bin;

文字セットと照合順序を指定してデータベースを作成する(3)

それでは作成したデータベースの情報を確認してみます。

select SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME from INFORMATION_SCHEMA.SCHEMATA where SCHEMA_NAME = 'mydb3';

文字セットと照合順序を指定してデータベースを作成する(4)

データベースを作成する時に指定した文字セットと照合順序が設定されていることが確認できます。

-- --

MySQL で CREATE DATABASE 文を使って新しいデータベースを作成する手順について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。