テーブルを作成するときはいつでもCREATE TABLE table_name
、データベース システムのいずれかで指定します。postgre でテーブルを作成するときは、
CREATE TABLE "tabl_name"
. " "
postgreSqlでテーブルを作成するために二重引用符を使用している場合、違いはありますか.
3 に答える
テーブル名を二重引用符で囲むと、名前の大文字と小文字が区別されます。デフォルトでは、引用符で囲まれていないテーブル名 (および一般的な識別子) は、大文字と小文字が区別されません。
たとえば、引用符なしで次の create ステートメントを使用します。
CREATE TABLE TestTable...
次のすべてを使用してテーブルを参照できることを意味します: TESTTABLE、testtable、TesTTabLe
一方、create ステートメントで引用符を使用した場合:
CREATE TABLE "TestTable"...
このテーブルを参照するために使用できるのは「TestTable」のみであり、他のテーブルは機能しません。
マニュアルには、まさにこのトピックに関するセクションが含まれており、より詳細に説明しています: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
実際にはいくつかの違いがあります。
二重引用符は、含まれているものが大文字と小文字を区別する識別子であり、文字通り読み取られることをパーサーに通知します。
これは多くの違いにつながります。次のようなことができます。
CREATE TABLE "table" ( ... );
だがしかし
CREATE TABLE table (...);
大文字と小文字が区別されるだけでなく(PostgreSQLは引用符で囲まれていない識別子を小文字に折りたたむ)、それ以外の場合は禁止されているキーワードを含めることができます。
ただし、これは、後で次のようなものを使用する必要があることを意味します。
SELECT * FROM "table"
しかし、あなたはできません
SELECT * FROM table
小文字のみを使用しても違いはありません (大文字にする必要があるという SQL 標準とは異なります)。
引用符なしで大文字を使用すると、小文字に変換されます。
引用符で大文字を使用すると、変換されず、このテーブル (または列またはその他の識別子) にアクセスするために常に大文字を使用する必要があります。
最良の方法は、識別子に引用符を使用しないことです。