[MySQL]データベース作成する「CREATE DATABASE」必ず文字コードは指定する

[MySQL]データベース作成する「CREATE DATABASE」必ず文字コードは指定する
2021年05月03日2023年10月10日

MySQLでデータベースを作成する「CREATE DATABASE」方法を紹介します。

データベースの作成

MySQLでデータベースを作成するには「CREATE」文を使用して作成します。

CREATE DATABASE データベース名;

※データベースの接続できるユーザにCREATE権限が無いとデータベースの作成ができませんのでご注意ください。

作成時は必ず文字コードを指定して作成(CHARACTER SET)

データベースで多いトラブルが文字化けです。アプリとデータベースの文字コードがズレていると文字化けが発生してしまいます。

特にレンタルサーバーのデータベースを利用する場合は、各社文字コードが異なったりします。

データベース作成時には必ず文字コードを指定しましょう。

// 例
CREATE DATABASE データベース名 DEFAULT CHARACTER SET 文字コード;

// UTF-8
CREATE DATABASE データベース名 DEFAULT CHARACTER SET utf8;

// SJIS
CREATE DATABASE データベース名 DEFAULT CHARACTER SET sjis;

このようにデータベース作成時に文字コードを指定して作成することで、テーブルを作成する際はデータベースの文字コードを基準にテーブルが作成されます。
(テーブル作成時にも個別に文字コード指定は可能です。)

どの文字コードを使用したらよいかわからない場合は、UTF-8が主流ですので特段な理由がなければUTF-8で作成をおすすめします。

照合順序を指定する(COLLATE)

データベースで使用するデフォルトの照合順序を指定する方法です。

CREATE DATABASE データベース名 COLLATE 照合順序;

照合順序は、ORDER BY句でのソート順や、WHERE句での検索条件で、大文字、小文字を区別するかといった文字の比較方法を指定するものになります。

例えば、よく使われている「COLLATE utf8_general_ci」の場合。文字コードは「UTF-8」、言語は多言語を示す「general」、文字列の比較は大文字と小文字が区別しない 「ci」という意味になります。

データベースを作成するサンプル

データベースを作成する際のサンプルSQLになります。「sample_db」というデータベースで文字コードはUTF-8で作成されます。

CREATE DATABASE sample_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

既存データベースの設定を確認するには

既存のDBがどのように設定されているか確認することもできます。

mysql> SHOW CREATE DATABASE sample_db;
+--------------+----------------------------------------------------------------------------------------------------------+
| Database     | Create Database                                                                                          |
+--------------+----------------------------------------------------------------------------------------------------------+
| wifi_land_db | CREATE DATABASE `sample_db` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+--------------+----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

データベースの削除

もしデータベースを削除したい場合は、以下のようなSQLを実行します。

DROP DATABASE データベース名;

削除したデータベースは戻すことはできませんので、削除する場合は慎重におこなってください。

コメント

コメントを残す

お名前(任意)
コメント:新規