Tips

MySQL 文字コード 【初級編 第5回】

MySQL 文字コード 【初級編 第5回】

MySQLの文字コード

データベースやテーブルごとに文字コードの指定をする必要がある

文字コードを設定できる箇所

MySQLには、文字コードが設定できる箇所は3か所がある。
・MySQL全体のデフォルト文字コード
・データベースの文字コード
・テーブルの文字コード

それぞれの文字コードの確認方法

全体の文字コードの確認

MySQL全体の文字コードは次のコマンドで確認できる

mysql> show variables like ‘character_set%’;

すると、次のように表示された。

mysql全体の文字コードの確認

mysql> show variables like ‘character_set%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8  |
| character_set_system | latin1 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)

また以下のコマンドでも確認できる
mysql> s
————–
mysql Ver 14.14 Distrib 5.1.58, for redhat-linux-gnu (i686) using readline 5.1

Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.1.58 MySQL Community Server (GPL) by Utter Ramblings
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 15 sec

Threads: 1 Questions: 5 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.333
————–

データベースの文字コードの確認

どんなデータベースが存在しているかを確認する
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| sample |
| test |
+——————–+
4 rows in set (0.03 sec)

実際にデータベースに適用されている文字コードを調べるには以下のようにする
mysql> show create database sample;
+———-+——————————————————————-+
| Database | Create Database |
+———-+——————————————————————-+
| sample | CREATE DATABASE `sample` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+———-+——————————————————————-+
1 row in set (0.00 sec)

デフォルトの文字コードである latin1 になっていた。

テーブルの文字コードの確認

mysql> use sample;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

作成されているテーブルを確認する
mysql> show tables;
+——————+
| Tables_in_sample |
+——————+
| catalyst |
| cisco |
| members |
| members_view |
| router |
| sales |
+——————+
6 rows in set (0.00 sec)

テーブルの文字コードを調べるには以下のようにする。
だが ;で見ると —- が邪魔で見づらい
mysql> show create table members;
+———+————————————————————————————————–+
| Table | Create Table |
+———+————————————————————————————————–+
| members | CREATE TABLE `members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`goukei` int(11) DEFAULT NULL,
`max` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=256 DEFAULT CHARSET=latin1 |
+———+————————————————————————————————–+
1 row in set (0.00 sec)

以下のように G にすれば見やすくなる。
mysql> show create table membersG
*************************** 1. row ***************************
Table: members
Create Table: CREATE TABLE `members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`goukei` int(11) DEFAULT NULL,
`max` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=256 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

SQLが学べる 関連連載リンク

データベースの基礎が学べるSQL基礎講座
SQL基礎 連載

練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集

Recent News

Recent Tips

Tag Search