Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
テーブル名に漢字を使ったらどうなるか調べてみよう。
実は、データベース名に漢字を使った場合についてずいぶん詳しく調べたが、 それがほとんどそのままテーブル名にも適用できると思われるので、 今回は、かなり飛ばして行こうと思う。
テーブルの作製は、CREATE TABLE で行なうのだが、 実は結構面倒で、私も詳細までは憶えていなくて、 必要なときは本やオンラインマニュアルを見ながらやっている。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options] [select_statement]
今回は、上の、tbl_name に漢字を使った場合を調べる。
とりあえず、「日本」というデータベースの下で実験しよう。
mysql> SET NAMES eucjpms; Query OK, 0 rows affected (0.02 sec) mysql> CREATE DATABASE `日本`; Query OK, 1 row affected (0.00 sec) mysql> USE `日本`; Database changed mysql>
「都道府県」というテーブルを作り、 都道府県名と県庁所在地を入れられるようにしてみよう。
いきなりであるが、テーブルを作ってみる。 テーブル名だけでなく、カラム名も漢字を使ってみる。 いずれもメタデータ(識別子)なので、バッククォートで囲む。
mysql> CREATE TABLE `都道府県` (`名` varchar(20), `都` varchar(20))
-> DEFAULT CHARACTER SET eucjpms;
Query OK, 0 rows affected (0.07 sec)
mysql> DESCRIBE `都道府県`;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| 名 | varchar(20) | YES | | NULL | |
| 都 | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.03 sec)
mysql> SHOW CREATE TABLE `都道府県`\G
*************************** 1. row ***************************
Table: 都道府県
Create Table: CREATE TABLE `都道府県` (
`名` varchar(20) default NULL,
`都` varchar(20) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=eucjpms
1 row in set (0.00 sec)
mysql>
という具合に、どうもちゃんと出来ちゃったみたいである。
あまりに順調だ。
一応、データを少しだけ入れてみよう。
文字列は シングルクォートで、メタデータはバッククォートというのを 間違えないように注意しながらやってみた。
mysql> INSERT INTO `都道府県` VALUES
-> ('神奈川県', '横浜市'),
-> ('山梨県','甲府市'),
-> ('北海道','札幌市'),
-> ('愛知県','名古屋市');
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM `都道府県`;
+----------+----------+
| 名 | 都 |
+----------+----------+
| 神奈川県 | 横浜市 |
| 山梨県 | 甲府市 |
| 北海道 | 札幌市 |
| 愛知県 | 名古屋市 |
+----------+----------+
4 rows in set (0.00 sec)
mysql>
最後に、削除してみよう。
mysql> DROP TABLE `都道府県`; Query OK, 0 rows affected (0.00 sec) mysql> SHOW TABLES; Empty set (0.00 sec) mysql>
とても正しく動いてしまって、何も問題が起きない。 これでは、話が面白くならないではないか。 いや、まあ、データベースなんで、完璧に動かないと使い物にならないんであるが、 今のところ問題はないようだ。
もっと詳しく調べれば、何か問題が出て来るかもしれないが、 それは次回にしよう。
フィードバック: