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

MySQL MySQL

MySQLでデータベースを作成する方法について書いています。
データベースを作成するときには、CREATE DATABASE文を使うと良いです。

MySQLのバージョン8.0.32で、動作を検証しています。

データベースを作成するには?

MySQLでデータベースを作成するには、CREATE DATABASE文を使います。
CREATE DATABASE文の後に、データベース名を入れると作成することができます。

CREATE DATABASE codelike;

上記ではcodelikeという名前のデータベースを作成しています。
名前は好きなようにつけることができますが、次項の命名規則には従う必要があります。

データベース名の命名規則

データベース名の命名規則は下記になります。

・数値だけで名前をつけることができない
・64文字を超えることができない
・スペース文字を終わりに使うことができない

スペースも使うことができますが、スペースはアンダースコアに置き換えて作成するのが通例です。
ちなみにスペースを含む名前のデータベースは、下記のようにすることで作成できます。

CREATE DATABASE `fuga hoge`;

グレイヴ・アクセント(`)で囲うと、スペースを含めて文字列として認識されて、登録することができます。

データベース作成時にエラーになる4パターン

データベース作成時にエラーになる4つのパターンを検証してみました。

既に存在する

既に存在するデータベースを作成しようとすると、ERROR 1007 (HY000)が発生します。

ERROR 1007 (HY000): Can't create database 'test'; database exists

名前を変えるか、既にあるデータベースが必要なかったら削除しましょう。

数値だけで名前をつける

数字だけで、下記のようにデータベースを作ろうとすると、ERROR 1064 (42000)エラーが発生します。

create database 111;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '111' at line 1

シンプルなアルファベットで名前をつけましょう。

最後がスペースになる

データベース名の最後がスペースだと、ERROR 1102 (42000)エラーが発生します。

CREATE DATABASE `test `;

ERROR 1102 (42000): Incorrect database name 'test '

アンダーバーを使うようにして、スペースはなるべく使わない方が良いかと思います。

名前が64文字を超える

データベース名が64文字を超える場合は、下記のようにエラーになります。

CREATE DATABASE `testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestt`;

ERROR 1059 (42000): Identifier name 'testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestt' is too long

なるべく短くわかりやすい名前が好ましいかと思います。

データベースが存在するときには無視して実行する

IF NOT EXISTSを使うことで、同じデータベース名のデータベースが存在する場合にも、無視してSQL文を実行することができます。
例えば、下記のように使います。

CREATE DATABASE IF NOT EXISTS codelike;

既にcodelikeデータベースがある場合にも、エラーにならずに実行されます。

データベース作成時に文字コード・照合順序を指定する

データベース作成時に文字コードと照合順序を指定することができます。

照合順序は、文字コード内の文字を比較するためのルールです。
公式ページのこちらに記載されています。

文字コードを指定する

データベースの文字コードを指定して、作成するには下記のようにします。

CREATE DATABASE codelike DEFAULT CHARACTER SET utf8mb4;

DEFAULT CHARACTER SETの後に文字コードを指定することで、データベースの文字コードを設定できます。

照合順序を指定する

データベースの照合順序を指定して、作成するには下記のようにします。

CREATE DATABASE codelike DEFAULT COLLATE utf8mb4_bin;

この場合には、照合順序にあった文字コードが指定されるようです。

文字コードと照合順序を指定する

下記のようにすることで、文字コードと照合順序を一緒に指定できます。

CREATE DATABASE codelike DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

データベース作成に使える文字コードを調べる

下記のSQLを実行すると、データベース作成時に指定できる文字コードを調べることができます。

SHOW CHARACTER SET

実行すると、下記のように文字コードの一覧が表示されます。

+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian              | armscii8_general_ci |      1 |
| ascii    | US ASCII                        | ascii_general_ci    |      1 |
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| binary   | Binary pseudo charset           | binary              |      1 |
| cp1250   | Windows Central European        | cp1250_general_ci   |      1 |
| cp1251   | Windows Cyrillic                | cp1251_general_ci   |      1 |
| cp1256   | Windows Arabic                  | cp1256_general_ci   |      1 |
| cp1257   | Windows Baltic                  | cp1257_general_ci   |      1 |
| cp850    | DOS West European               | cp850_general_ci    |      1 |
| cp852    | DOS Central European            | cp852_general_ci    |      1 |
| cp866    | DOS Russian                     | cp866_general_ci    |      1 |
| cp932    | SJIS for Windows Japanese       | cp932_japanese_ci   |      2 |
# ---- 省略 -----

文字コードを指定して使える照合順序を調べる

文字コードを指定して、使える照合順序を調べるには、下記のようにします。

SHOW COLLATION WHERE CHARSET = 'sjis';

実行すると、下記のように照合順序の一覧が表示されます。
sjisを指定したので、sjisで使える照合順序が表示されました。

+------------------+---------+----+---------+----------+---------+---------------+
| Collation        | Charset | Id | Default | Compiled | Sortlen | Pad_attribute |
+------------------+---------+----+---------+----------+---------+---------------+
| sjis_bin         | sjis    | 88 |         | Yes      |       1 | PAD SPACE     |
| sjis_japanese_ci | sjis    | 13 | Yes     | Yes      |       1 | PAD SPACE     |
+------------------+---------+----+---------+----------+---------+---------------+

データベースを作成する方法のまとめ

今回はMySQLでデータベースを作成する方法について書きました。
記事の内容をまとめると、下記のようになります。

・CREATE TABLE文を使うと、データベースを作成することができる。
・IF NOT EXISTSを使うと、SQL実行時にデータベースが既にある場合には無視する。
・データベース作成時に文字コードと照合順序の指定ができる。
・使える文字コードを調べるにはSHOW CHARACTER SETが使えた。
・照合順序を調べるにはSHOW COLLATIONが使えた。

コメント

タイトルとURLをコピーしました