SQL:2008およびSQL-99標準では、識別子が引用されていない限り、データベースは大文字と小文字を区別しないと定義されています。私は、ほとんどのORMが生成する SQL で識別子を引用することを発見しました。
ただし、ご存じのとおり、すべてのリレーショナル データベースが厳密に標準に準拠しているわけではありません。DB2 と Oracle は 100% 準拠しています。PostgreSQL は、引用符で囲まれていないものを自動的に小文字にするという事実を除いて、ほぼ準拠しています (個人的にはこれが好きです)。
mySQL は、各テーブルをファイル システムにファイルとして格納するため、少し奇妙です。このため、ファイル システムの大文字と小文字の区別の影響を受けます。Windows の場合:
CREATE TABLE FOO (a INTEGER);
CREATE TABLE 'Foo' (a INTEGER); -- Errors out, already exists
Linux では次のようになります。
CREATE TABLE FOO (a INTEGER); -- Creates FOO table
CREATE TABLE 'Foo' (a INTEGER); -- Creates Foo table
SQL Server はさらに奇妙です。作成時に大文字と小文字が区別されますが、後で任意の方法で参照できます (名前を引用したとしても!) 大文字と小文字だけが異なる 2 つのテーブルを作成することはできません。注: SQL Server には、識別子の大文字と小文字の区別がデータベース インスタンスの既定の照合順序に依存するため、このようなことを制御する構成オプションがあります。なんて紛らわしい!
ほとんどの場合、コンピューター(プログラミング言語、データベース、ファイル システム、URL、パスワードなど) は大文字と小文字を区別する必要があることに同意しますが、すべてのシステムは個別に実装されており、準拠している場合と準拠していない場合があります。存在。大文字と小文字を区別するデータベースを実装することは、特定のデータベース システムの詳細とその動作方法を知っていれば、間違いなく可能です。
システムを自分に合った方法で実装するのは本当に自分の責任であり、テクノロジ業界全体が一貫した方法ですべてを実装して生活を楽にするわけではありません。