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

広告

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

(2021 年 07 月 15 日公開 / 2021 年 07 月 15 日更新)

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

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

CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

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

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

CREATE DATABASE db_name

指定した名前のデータベースを作成します。

それでは実際にデータベースを作成してみます。 MariaDB コマンドラインツールを起動し MariaDB へ接続したあと次のように実行してください。

create database mydb;

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

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

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

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

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

create database mydb;

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

「Can't create database 'mydb'; database exists」というエラーが発生しました。このようにすでに作成済みのデータベースと同じ名前のデータベースを作成しようとエラーが発生します。

IF NOT EXISTS

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

CREATE DATABASE IF NOT EXISTS db_name

作成しようとするデータベースと同じ名前のデータベースが存在していなければ新しいデータベースを作成します。同じ名前のデータベースが既に存在していたら何もしません。

実際に試してみます。 mydb というデータベースが既に存在している状態で、次のように実行してみます。

create database if not exists mydb;

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

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

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

show warnings;

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

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

OR REPLACE

データベースを作成する時に、同じ名前のデータベースが存在したときは存在したデータベースを削除して新しいデータベースを作成するには次の書式を使用してください。

CREATE OR REPLACE DATABASE db_name

同じ名前のデータベースが存在した場合は削除した上で新しいデータベースを作成します。( OR REPLACE は MariaDB 10.1.3 から導入された構文です)。

実際に試してみます。確認のために作成済みの mydb データベースにテーブルを一つ作成しておきます。

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

そのあとで次のように実行してください。

create or replace database mydb;

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

同じ名前のデータベースが既に存在していましたが、エラーにならずに新しいデータベースが作成されました。元々作成されていたデータベースは削除されています。

確認のためにデータベースの中に作成されているテーブルの一覧を取得してみると、テーブルが存在せず新しいデータベースが作成されていることが確認できます。

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

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

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

CREATE DATABASE db_name
  CHARACTER SET charset_name
  COLLATE collation_name

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

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

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

それでは実際に試してみます。最初に文字セットとして 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)

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

続いて文字セットと照合順序を両方指定してみます。文字セットとして cp932 、照合順序として cp932_bin を指定してデータベースを作成します。次のように実行してください。

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)

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

-- --

MariaDB で新規にデータベースを作成する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。