データーベースの作成
概要
- 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毎に解説もされているので、そういった事例は紹介されてないかもしれませんが、問題の切り分けなどにも役立つ一冊になるかと思います。
関連商品