web-dev-qa-db-ja.com

MySQLはドットでデータベースを作成できますか?

MySQLはドット(.)その名前に?

MySQL 5.1.22を使用しています。

25
GrZeCh

データベース名にドットを使用することはできません。また、どの識別子にも使用しないでください。一般的な規則は、代わりにアンダースコアを使用することです。同じ目的を果たし、混乱の多くを回避します。 doがテーブル名またはフィールド名に奇妙な文字や違法な文字を使用する正当な理由がある場合は、エスケープする必要があります。

mySQLで識別子をエスケープするには、バックティックを使用します。

SELECT `select`, `some.field name`, `crazy()naming+here`
FROM `my-=+table`

needに関係なくすべてのフィールド名をバックティックする習慣をつけるのは良い考えですが、それは別の話です。

37
nickf

MySQL 5.1.6の名前には.を使用できます ドキュメントによると

ただし、すでに述べたように、ください行わないでください。あなたが今解決していると思うすべての問題について、あなたは後であなたを噛む5つを作成するでしょう。以来。名前を修飾するために使用されます-例database.tableまたはtable.column使用するたびにデータベース名を引用する必要があります。*

あなたはこれをバックティックで行うことができます:

CREATE TABLE `do.not.do.this` (col INT);

または、次のオプションを設定する場合は二重引用符を使用します。

SET sql_mode='ANSI_QUOTES';
CREATE TABLE "asking.for.problems" (col INT);

*厳密には当てはまりません-英数字または_または$以外の文字は引用符で囲む必要があります。あなたの名前で持つのは特に厄介なオプションです。

26
Dave Webb

MySQL 5.1.6より前のバージョンでは、データベース名とテーブル名に/\.、またはファイル名で許可されていない文字を含めることはできません( 8.2。スキーマオブジェクト名を参照)。 )。 5.1.6より後のバージョンでは、テーブル名をバックティック(`)で引用する必要があります-しかし、他の人がアドバイスしたように、不要なトラブルを防ぐためにこれを行うべきではありません。

7
Stefan Gehrig

MySQL 5.0.22はそれを許可していないようです:

% mysqladmin -uroot -pXXX create foo.bar
mysqladmin: CREATE DATABASE failed; error: 'Incorrect database name 'foo.bar''

それが許されたとしても、私はそれを強くお勧めしません。

少なくとも、そのデータベースを使用するすべてのクエリでバッククォートを使用して、そのデータベースへの参照をエスケープする必要があります。

3
Alnitak