データベースの列名で大文字と小文字は区別される?
データベースのテーブル名で大文字と小文字は区別される? と同じ結果になると思われるが、一応確認してみた。
Oracle
SQL> create table case_column_test (c1 char(2), C1 char(2)); create table case_column_test (c1 char(2), C1 char(2)) * 行1でエラーが発生しました。: ORA-00957: 列名が重複しています。 SQL> create table case_column_test ("c1" char(2), C1 char(2), c2 char(2)); 表が作成されました。 SQL> desc case_column_test; 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- c1 CHAR(2) C1 CHAR(2) C2 CHAR(2) SQL>
デフォルトでは大文字/小文字は区別されないが、引用符を付けると区別される。
MySQL
Windows
mysql> create table case_column_test (`c1` char(2), `C1` char(2)); ERROR 1060 (42S21): Duplicate column name 'C1' mysql>
Windowsでは、大文字/小文字は区別されない。
Linux
mysql> create table case_test (id1 char(2)); Query OK, 0 rows affected (0.03 sec) mysql> create table CASE_TEST (id1 char(2)); Query OK, 0 rows affected (0.02 sec) mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | CASE_TEST | | case_test | +----------------+ 2 rows in set (0.00 sec) mysql> create table case_column_test (c1 char(2), C1 char(2)); ERROR 1060 (42S21): Duplicate column name 'C1' mysql> create table case_column_test (`c1` char(2), `C1` char(2)); ERROR 1060 (42S21): Duplicate column name 'C1'
Linuxでは、テーブル名は大文字と小文字は区別される。
列名も区別されるかと思ったら…、列名はそ引用符で囲んだとしても区別されないようだ。
PostgreSQL
testdb=# create table case_column_test (c1 char(2), C1 char(2)); ERROR: 列"c1"が複数指定されました testdb=# create table case_column_test ("c1" char(2), "C1" char(2), C2 char(2)); CREATE TABLE testdb=# \d case_column_test テーブル "public.case_column_test" 列 | 型 | 修飾語 ----+--------------+-------- c1 | character(2) | C1 | character(2) | c2 | character(2) | testdb=#
Oracleと同様、デフォルトでは大文字/小文字は区別されないが、引用符を付けると区別される。
SQL Server
照合順序CI
1> create table case_column_test (c1 char(2), C2 char(2)); 2> go 1> sp_help case_column_test 2> go Name ... case_column_test ... Column_name ... c1 ... C2 ... 1> create table case_column_test ([c1] char(2), [C1] char(2)) 2> go メッセージ 2705、レベル 16、状態 3、サーバー xxxxxxxx\SQLEXPRESS、行 1 各テーブルの列名は一意にしてください。テーブル 'case_column_test' の列名 'C1' が 複数指定されています。 1>
照合順序がCIの場合は、大文字/小文字が区別されない。
照合順序CS
1> create table case_test (id1 char(2)) 2> go 1> create table CASE_TEST (id1 char(2)) 2> go 1> create table case_column_test (c1 char(2), C1 char(2)) 2> go 1> sp_help case_column_test 2> go Name ... case_column_test ... Column_name ... c1 ... C1 ...
照合順序がCSの場合は、大文字/小文字が区別される。