データーベースの作成

概要

CREATE DATABASE文でデーターベースを作成します。
1・CREATE DATABASE文の実行には、CREATE権限が必要です。(GRANTを参照)
2・version4.1からデータベースの文字コードを設定出来る様になっています。必ず付けましょう。
3・IF NOT EXISTSオプション は既存のデータベースを作成しようとするとエラーを返しますが、データベースを作成せずにCREATE文は正常終了します

書式

CREATE DATABASE hoge CHARACTER SET ujis COLLATE ujis_japanese_ci;

Version 4.1から

アンダーラインの部分はオプションです

文字コードオプション

1) バイナリで配布されている MySQL は大抵はデフォルトの文字コードが日本語にはなっていません。
プログラム側で入出力する文字コードが決まっているのであれば、設定をしておく方がよいです。
のちに文字化けや文字コードの変換といったことに悩まされることがなくなります。
# mysql -uroot -p
mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis(/etc/my.cnfで定義)    | 
| character_set_connection | ujis(/etc/my.cnfで定義)    | 
| character_set_database   | latin1 <- 文字コードを指定しないと大体こうなる| 
| character_set_filesystem | binary                     | 
| character_set_results    | ujis(/etc/my.cnfで定義)    | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
	

2) 以下の方法でデーターベース作成時に文字コードをセットします。
2-2) CREATE DATABASE hoge CHARACTER SET [文字コード] COLLATE [文字コード];

       オプションの意味は、データベースキャラクタセット [文字コード] 照合順序 [文字コード];
       となっています。照合する文字コードの順序は、以下の方法で確認できます。
mysql> create database hoge  CHARACTER SET ujis COLLATE ujis_japanese_ci;
Query OK, 1 row affected (0.00 sec)

mysql > use hoge;
Database changed

mysql> show variables like 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | ujis_japanese_ci  | 
| collation_database   | latin1_swedish_ci | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+
3 rows in set (0.00 sec)

mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       | 
| character_set_connection | ujis                       | 
| character_set_database   | ujis                       |
| character_set_filesystem | binary                     | 
| character_set_results    | ujis                       | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
	
2-3) デフォルト状態では、latin1(ISO 8859-1 ラテンアルファベットの文字コード)ですが、
       キャラクタセットと照合順序を設定したkとによりDBの文字と参照文字コードはujis(EUC-JP)
       となります。これは、あとからでも変更することは可能です。backup_dumpの補足を参照

補足

MySQLを使う上での注意点
プログラム言語を使う上で、文字コードは、多々変わると思いますが、MySQLは、テーブル毎にも、文字コードを指定できますので、プログラム上で文字コードを変更するよりも、必要に応じて、テーブル単位で文字コードを指定したほうがパフォーマンス的にも効率がよいと考えます。

お奨め参考書

MySQL全機能バイブル 〜現場で役立つAtoZ〜

以前技術評論者から出ていた、MySQL 全機能リファレンスも ver5.1 で対応できますが、こちらは、5.1の機能をすべて網羅している最新版になります。
MySQL version 5.1の機能をすべて引き出したい方は、こちらをお薦めします。

MySQL ver 3.xxから 4.xx に移行したときのエピソードですがchar型 varchar型のサイズが 3.xx のときは、半角で数えてたサイズが4.xxに移行した時、全角の1文字も1つと数えるのに気が付かなくて何議したことがあります。

3.xx varchar(6) とした場合 'テスト'の三文字しか入りませんが、
4.xxの場合 varchar(6) とした場合 'テストテスト' と入ってしまうのです(^^;
3.xxから4.xxに移行したとき、ダンプデータが入らないといった事があったのを記憶しています。

この本はversion毎に解説もされているので、そういった事例は紹介されてないかもしれませんが、問題の切り分けなどにも役立つ一冊になるかと思います。
関連商品