SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】カラム名の大文字、小文字の区別

データベース名、テーブル名では大文字、小文字の区別があるが、カラム名に関しては大文字、小文字の区別をしないとのこと。

http://dev.mysql.com/doc/refman/5.1/ja/identifier-case-sensitivity.html

確かに、これ↓はできない。

create table T (
	aa int,
	Aa int,
	AA int
);

→ ERROR 1060: Duplicate column name 'Aa'

しかし、

# こうすると
create table T (aA int);

#取得のときこうなる
select * from T;
+--------+
| aA     |
+--------+
|      1 |
|      2 |
+--------+

#さらにこうなる
select aa, AA, Aa, aA from T;
+--------+--------+--------+--------+
| aa     | AA     | Aa     | aA     |
+--------+--------+--------+--------+
|      1 |      1 |      1 |      1 |
|      2 |      2 |      2 |      2 |
+--------+--------+--------+--------+

MySQL側は区別しないが、プログラム(php)側に渡ってきたとき、$row[‘aa’]と$row[‘AA’]は区別されてしまう。

混乱するので、カラム名もCamelCaseだ!なんてことはしないで、小文字とアンダーバーで命名するのがよさそうな気がします。

関連するメモ

コメント