答えて
データベース名にドットを使用することはできません。また、私はどの識別子でも使用しないでください。一般的な方法は、代わりにアンダースコアを使用することです。それは同じ目的を果たし、多くの混乱を避けるでしょう。 をにすると、テーブル名やフィールド名に奇妙な文字やそれ以外の文字を使用する正当な理由がある場合は、それをエスケープする必要があります。私の意見では良い習慣です関わらず、あなたかどうか必要性のを
SELECT `select`, `some.field name`, `crazy()naming+here`
FROM `my-=+table`
すべてのフィールド名をbacktickingの習慣に入るが、それはまた別の話だ:
は使用し、MySQLではバッククォートを識別子をエスケープします。
私は良い練習であることを強く反対しています。 MySQL固有。あなたがする必要がある場合を除き、それをしないでください。列名は、純粋な^ [a-z0-9 _] + $であり、予約語と衝突しないようにする必要があります(imho)。postgresに相当するのは "奇妙な列名"です(大文字と小文字の区別、スペース、予約語などがあります)。 backtickingである理由 – tommym
user37607 @、いくつかの情報は、悪い習慣は素晴らしいことです! – Sam
@Samは、MySQLに特有のものです。つまり、別のデータベースベンダーに切り替える必要がある場合は、すべてのSQLを更新する必要があります。 MySQLエスケープ文字を変更して、ANSI_QUOTESフラグを使用してANSI準拠の構文にすることができます。http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_ansi_quotes – nickf
のMySQL 5.0.22がそれを許可するように表示されません:それはそれを許可しなかった場合
% mysqladmin -uroot -pXXX create foo.bar
mysqladmin: CREATE DATABASE failed; error: 'Incorrect database name 'foo.bar''
でもそれ、私は強く反対をお勧めします。
少なくとも、それを使っているすべてのクエリでバッククォートを使ってそのデータベースへの参照をエスケープする必要があります。
を許可しません。できます。空白やUnicode、大文字と小文字の区別があるテーブル名も同じです。あなたはそのようなトラブルを求めています。 – Thilo
のMySQL 5.1.6前に、データベース名とテーブル名は、ファイル名(8.2. Schema Object Namesを参照)で許可されていない/
、\
、.
、または文字を含めることはできません。 5.1.6以降のバージョンでは、タブ名にバックティック(`
)を付ける必要がありますが、他の人も同様にアドバイスしています。
.
は、MySQL 5.1.6 according to the documentationの名前に使用できます。
しかし、言われているように、そして再び言われるように、をにしないでください。あなたが今解決していると思うすべての問題について、あなたは後であなたを噛む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);
*厳密には正しくありません - あなたは、英数字または_
または$
ではありません任意の文字を引用する必要がありますが、。あなたの名前に入れるのは特に面倒なオプションです。
+1「do.not.do.this」と「asking.for.problems」...ただ美しい。 "。"を使用して@RichardMorgan –
テーブルの名前で: "あなたがそれを行うたびに、神は子犬を殺す"。 – user3791372
- 1. mySQLデータベースを作成できません
- 2. MySQL:centosでコマンド `cp`を使ってデータベースを作成できますか? mysqlコマンドを使用してデータベースを作成
- 3. mysqlで作成できるデータベースの最大数はどれですか?
- 4. pytest mysql db fixture:データベースを作成できません
- 5. dockerでmySQLのデータベースとスキーマを作成
- 6. データベース内のMySQLでサブクエリを作成
- 7. MySQLデータベースからエンティティを作成する
- 8. mysqlにトランザクションマージテーブルを作成することはできますか?
- 9. エクスプレスでMySQLデータベースでページネーションを作成する方法は?
- 10. Entityフレームワークは他のデータベースにテーブルを作成できますか?
- 11. PHPMyAdminとmySQL:既存のデータベースに挿入し、新しいデータベースを作成しない。エラー "データベースを作成できません;データベースは存在します"
- 12. pandasはmysqlデータベースからデータフレームを作成します
- 13. MySQL Workbenchでのデータベースの作成
- 14. SQLデータベースを作成できません
- 15. MySQLデータベースのインデックス作成で「seq_in_index」とは何を意味しますか?
- 16. oracleデータベースで固定長タイプを作成できますか?
- 17. クラスライブラリプロジェクトでデータベース接続を作成できますか?
- 18. mySQL - テーブルを作成できません
- 19. ドット付きのリーダーでタブストップを作成する方法(........)
- 20. レストランメニューのデータベースはどのように作成できますか?
- 21. Python:PyMySQLでmysqlデータベースを作成するには?
- 22. MySQL Pythonでデータベースを作成するには?
- 23. PHPで作成した変数をmysqlデータベースに渡すには?
- 24. 対物レンズcでドットでQrコードを作成するには?
- 25. Pythonanywhere [Flask] - MySQLデータベースの作成
- 26. ループを作成してSQLデータベースを更新できますか?
- 27. フラスコアプリケーションでsqlite3データベースを作成できませんか?
- 28. MySQL 32bitデータベースを64bit MySQLにインポート/コピーできますか?
- 29. springbootでMySqlデータベースを生成
- 30. MySqlの単一データベースで作成できるテーブルの数に制限はありますか?
MySQLは( '.')(' .') – user3791372