LINEで現役エンジニアに直接質問してみよう!登録無料

MySQLでデータベースの作成する方法(CREATE DATABASE)

MySQLのデータベースを作成するには「CREATE DATABASE」コマンドを使います。

mysql> CREATE DATABASE sampleapp_development;
Query OK, 1 row affected (0.02 sec)

なお、既に同名のデータベースが存在する場合は、下記のようにエラーになります。

mysql> CREATE DATABASE sampleapp_development;
ERROR 1007 (HY000): Can't create database 'sampleapp_development'; database exists

この対処方についても解説します。

CREATE DATABASEの基本

下記のコマンドでデータベース作成できます。最後のセミコロン(;)をつけるのを忘れないでください。

CREATE DATABASE データベース名;

CREATE DATABASEを実行してみる

実際にMySQLサーバーに接続してから実行しましょう。MySQLへのユーザー名とパスワードが、

だった場合、

$ mysql -u root -p

を実行した後、Enter password:の後ろに[email protected]を入力してEnterを押すと接続出来ます。

接続できると、mysql>が表示されるので、下記コマンドを実行してみましょう!最後のセミコロン(;)をつけるのを忘れないでください。

CREATE DATABASE sampleapp_development;

コマンドを実行して、下記のようにQuery OKと表示されれば、データベースが作成出来ています。

mysql> CREATE DATABASE sampleapp_development;
Query OK, 1 row affected (0.02 sec)

実際にデーベースが確認出来ているか確認するには「SHOW DATABASES」コマンドを使います。

mysql> SHOW DATABASES;
+-----------------------+
| Database              |
+-----------------------+
| information_schema    |
| mysql                 |
| performance_schema    |
| sampleapp_development |
| sys                   |
+-----------------------+
5 rows in set (0.00 sec)

ちゃんとsampleapp_developmentがありますね!

MEMO

なお、SHOW DATABASESの詳しい内容は、下記記事を参考にしてくださいね!

MySQLでデータベースの一覧を確認する方法(SHOW DATABASES)

ここまでが「CREATE DATABASE」の基本です。

この後は、同名のデータベースがあった時の対処法や、設定しておいたほうがいいオプションなどを解説します。

データベースが存在しないときのみ作成する方法

データベースが存在しない時のみに作成してほしい時はCREATE DATABASE IF NOT EXISTS データベース名;を使います。これを使うとエラーが発生しないので、たくさんのSQLを直接データベースに流し込む時に便利です。

mysql> CREATE DATABASE IF NOT EXISTS sampleapp_development;
Query OK, 1 row affected, 1 warning (0.00 sec)

何回実行してもエラーにはなりません。

mysql> CREATE DATABASE IF NOT EXISTS sampleapp_development;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> CREATE DATABASE IF NOT EXISTS sampleapp_development;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> CREATE DATABASE IF NOT EXISTS sampleapp_development;
Query OK, 1 row affected, 1 warning (0.00 sec)

データベース作成時の注意点

注意点を2つ紹介します。

  1. 文字コードを確認&設定しよう
  2. -の付いたデータベースは使わないようにしよう

文字コードを設定しよう

MySQLでは、内部で処理できる文字コードを最初に決定する必要があります。文字コードのオススメは「utf8mb4」です。

確認方法は「show variables like '%char%';」コマンドを使えば一発でわかります。

mysql> show variables like '%char%';
+--------------------------+------------------------------------------------------+
| Variable_name            | Value                                                |
+--------------------------+------------------------------------------------------+
| character_set_client     | utf8mb4                                              |
| character_set_connection | utf8mb4                                              |
| character_set_database   | utf8mb4                                              |
| character_set_filesystem | binary                                               |
| character_set_results    | utf8mb4                                              |
| character_set_server     | utf8mb4                                              |
| character_set_system     | utf8                                                 |
| character_sets_dir       | /usr/local/Cellar/mysql/8.0.19/share/mysql/charsets/ |
+--------------------------+------------------------------------------------------+
8 rows in set (0.12 sec)

この中のcharacter_set_databaseutf8mb4になっていることを確認してください。

なっていなければ、データベース作成時に文字コードを指定しましょう。

CREATE DATABASE sampleapp_development CHARACTER SET utf8mb4;
MEMO

MySQLにはutf8utf8mb4と似たようなも文字コードがあります。これらには大きな違いが2点あります。

  • utf8は絵文字を取り扱えないが、utf8mb4なら取り扱える
  • utf8mb4utf8の上位互換

今のアプリケーションでは、絵文字を使う機会も増えてきたので、予期せぬエラーを起こさないためにutf8mb4で設定するのがオススメです。

「-」をデータベース名に使わないようにしましょう

データベース名に-の入った名前使おうとすると、下記のようなエラーになります。

mysql> CREATE DATABASE sampleapp-development;
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 '-development' at line 1

エラーメッセージを見ると「-development部分が構文エラーですよ」となっていますね。

このように、-を使うと、思わぬエラーの原因になったりします。トラブルを避けるためにも-は使わないようにしましょう!

まずは-ではなくて_を使った名前はダメなのか検討しましょう!_ならば何の支障もなく使うことが出来ます。

もしどうしても使いたい場合は `で囲むという方法もあります。

mysql> CREATE DATABASE `sampleapp-development`;
Query OK, 1 row affected (0.01 sec)

まとめ

  • データベースを作成する時は、CREATE DATABASEを使う
  • データベースが存在しなかった場合の作成はCREATE DATABASE IF NOT EXISTS データベース名を使う
  • 文字コードにはutf8mb4を使う
  • -を使ったデータベース名はエラーの原因になるので使わない

以上、CREATE DATABASEの使い方でした!

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。