2012-01-07 7 views
1

をCREATE:MySQLの私は、MySQL(好奇心、自己学習)で遊んでいると私は奇妙なことに気づいたTABLEスクリプトとテーブル名

私はテーブルを作成したい:

use `a`; 

CREATE TABLE `Languages` (
    `Id` int(11) NOT NULL AUTO_INCREMENT, 
    `LanguageName` char(10) NOT NULL DEFAULT '', 
    PRIMARY KEY (`Id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; 

ですが、結果として、テーブル名はLanguagesではなくlanguagesとなります。どうして ?テーブルを作成する前に何かを知っていなければなりませんか?

+1

はい、次のようにします。テーブル名は、通常、MySQLでは大文字と小文字が区別されません –

答えて

1

SQLは一般的には大文字と小文字を区別しません(キーワードと名前)。大文字と小文字は関係ありません。 mysqlはテーブルをファイル(少なくともMyISAMテーブル)にマップするので、LinuxシステムやWindowsシステムを使用する場合に違いがあります。あなたは大文字と小文字を区別する必要はありません。

2

lower_case_table_namesシステム変数の値を確認してください。この変数の値が1の場合、MySQLはすべてのテーブル名を格納用に小文字に変換します。この動作に関する詳細情報はここで見つけることができます:レターケースから生じるデータ転送の問題を回避するために

MySQL Identifier Case Sensitivity

MySQLは実際に(上記のリンクDOC)からのデータ転送の問題を回避する方法として、この動作を推奨していますまたは テーブル名の場合、2つのオプションがあります。

すべてのシステムでlower_case_table_names = 1を使用します。主な欠点 これは、SHOW TABLESまたはSHOW DATABASESを使用すると、 は元のレターケースの名前が表示されないことになります。

UNIXではlower_case_table_names = 0、Windowsでは ではlower_case_table_names = 2を使用してください。これにより、データベース名とテーブル名の文字は保持されます。 この点の欠点は、文 が、Windows上で常に正確な 文字のデータベースとテーブル名を参照するようにする必要があることです。あなたのステートメントをUnixに転送すると、 の大文字は重要ですが、大文字のアルファベットが であれば動作しません。

関連する問題