kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

MySQL データベースの作成

MySQLでデータベースの作成に関するSQLについて、以下に示します。

※ここではMySQLのバージョン5.6を使用して、動作確認を行っています。

※CentOSへのMySQLのインストールについては、当サイトのCentOSのyumリポジトリにMySQLを追加し、最新バージョンをインストールのページCentOSにMySQLをRPMからインストールのページもご覧ください。

※テーブルの作成については、当サイトのMySQL テーブルの作成のページをご覧ください。

※データベース接続ユーザーの作成については、当サイトのMySQL データベース接続ユーザーの作成のページをご覧ください。

データベースの作成

データベースを作成するには、以下のようなSQLを実行します。

mysql> CREATE DATABASE db01 CHARACTER SET utf8 COLLATE utf8_bin;
  • 「CREATE DATABASE」に続けて、作成するデータベースの名前を指定します。

    ここでは「db01」という名前のデータベースを作成するようにしています。

  • 「CHARACTER SET」に続けて、データベースで使用するデフォルトの文字コードを指定します。

    文字コードはテーブル毎にも指定することができますが、テーブルへの指定を省略した場合は、データベースに指定されているものが使用されるようになります。

    ここでは「utf8」を指定しています。

    文字コードはWeb等でもUTF-8を使用することが主流となっていますので、特別な理由がなければ、UTF-8を使用するのが良いかと思います。

  • 「COLLATE」に続けて、データベースで使用するデフォルトの照合順序を指定します。

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

    照合順序はテーブル毎にも指定することができますが、テーブルへの指定を省略した場合は、データベースに指定されているものが使用されるようになります。

    ここでは「utf8_bin」を指定しています。

    「utf8_bin」を指定すると、文字データはコード値で扱われるようになりますので、大文字、小文字を区別し、文字のソートはコード順に行われるようになります。

照合順序について

照合順序に指定するものによって、どのような違いがあるのか例を示しておきます。

文字コードに「utf8」を指定し、照合順序に「utf8_bin」を指定している場合、ORDER BY句でのソート順は、以下のように文字のコード順になります。

mysql> SELECT txt01 FROM tbl01 ORDER BY txt01;
+-------+
| txt01 |
+-------+
| Axx   |
| Bxx   |
| axx   |
| bxx   |
| ぁxx  |
| あxx  |
| ぃxx  |
| いxx  |
| ァxx  |
| アxx  |
| ィxx  |
| イxx  |
| Axx  |
| Bxx  |
| axx  |
| bxx  |
| アxx   |
| イxx   |
+-------+

「utf8_bin」では、WHERE句での検索条件は、以下のように大文字、小文字が区別されます。

mysql> SELECT txt01 FROM tbl01 WHERE txt01 LIKE 'a%';
+-------+
| txt01 |
+-------+
| axx   |
+-------+

文字コードに「utf8」を指定し、照合順序にデフォルトの「utf8_general_ci」を指定している場合、ORDER BY句でのソート順は、以下のように英字の大文字、小文字を区別しないものになります。

※「ci」は、「case insensitive」(大文字、小文字を区別しない)を略したものになります。

※全角の英字も大文字、小文字を区別しないものになります。

mysql> SELECT txt01 FROM tbl01 ORDER BY txt01;
+-------+
| txt01 |
+-------+
| axx   |
| Axx   |
| bxx   |
| Bxx   |
| ぁxx  |
| あxx  |
| ぃxx  |
| いxx  |
| ァxx  |
| アxx  |
| ィxx  |
| イxx  |
| Axx  |
| axx  |
| Bxx  |
| bxx  |
| アxx   |
| イxx   |
+-------+

「utf8_general_ci」では、WHERE句での検索条件は、以下のように英字の大文字、小文字が区別されません。

mysql> SELECT txt01 FROM tbl01 WHERE txt01 LIKE 'a%';
+-------+
| txt01 |
+-------+
| axx   |
| Axx   |
+-------+

データベース一覧の確認

データベースの一覧を確認するには、以下のようなSQLを実行します。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db01               |
| mysql              |
| performance_schema |
+--------------------+
  • ここではデフォルトで作成されているデータベースに、「db01」を追加で作成した際の結果になっています。

既存のデータベースのCREATE DATABASE文の確認

既存のデータベースのCREATE DATABASE文を確認するには、以下のようなSQLを実行します。

mysql> SHOW CREATE DATABASE db01;
+----------+--------------------------------------------------------------------------------+
| Database | Create Database                                                                |
+----------+--------------------------------------------------------------------------------+
| db01     | CREATE DATABASE `db01` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+--------------------------------------------------------------------------------+
  • 「SHOW CREATE DATABASE」に続けて、CREATE DATABASE文を確認するデータベースの名前を指定します。

    ここでは上記で作成した「db01」という名前のデータベースのCREATE DATABASE文を確認するようにしています。

  • 結果に表示されている「/*!40100 〜 */」の部分は、この場合MySQLのバージョンが4.01.00以上の場合に、実行されることを示しています。

データベースの削除

データベースを削除するには、以下のようなSQLを実行します。

mysql> DROP DATABASE db01;
  • 「DROP DATABASE」に続けて、削除するデータベースの名前を指定します。

    ここでは「db01」という名前のデータベースを削除するようにしています。

MySQL データベースの作成については、以上です。

SQLのテクニックに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのテクニックに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

SQLのパフォーマンスに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのパフォーマンスに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

DB設計、SQLに関するおすすめの書籍

当サイトの書籍紹介ページで、DB設計、SQLに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。