名前と識別子 - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

名前と識別子

名前は、データベースオブジェクト (テーブルや列など) と、ユーザーおよびパスワードを識別します。名前という用語と識別子という用語は、ほとんど同じ意味で使用できます。2 種類の識別子があります。標準的な識別子と、引用符で囲まれた (すなわち、区切り記号付き) 識別子です。識別子は UTF-8 印字可能文字のみで構成する必要があります。標準的な識別子と区切り記号付き識別子の ASCII 文字は、大文字と小文字の区別がありませんが、データベースでは小文字で表記されます。クエリの結果では、列名は、デフォルトで小文字で返されます。列名を大文字で返すには、describe_field_name_in_uppercase 設定パラメータを true に設定します。

標準的な識別子

標準的な SQL 識別子はルールセットに準拠するものであり、以下の条件を満たしている必要があります。

  • ASCII のシングルバイトのアルファベット文字または下線文字、または UTF-8 のマルチバイト文字 (2 バイトから 4 バイト) で開始します。

  • 後続の文字には、ASCII のシングルバイトの英数字、下線、またはドル記号、またはマルチバイトの UTF-8 文字 (2 バイトから 4 バイト) を使用できます。

  • 長さは1~127バイトとし、区切り識別子の引用符は含まない。

  • 引用符とスペースは含めない。

  • 予約された SQL キーワードではない。

区切り記号付き識別子

区切り記号付き識別子 (引用符で囲まれた識別子とも言う) は、二重引用符 (") で囲まれます。区切り記号付き識別子を使用する場合は、そのオブジェクトへのすべての参照で二重引用符を使用する必要があります。識別子には、二重引用符自体以外の標準UTF-8印刷可能文字を含めることができます。したがって、任意の文字列 (スペースやパーセント記号など本来なら無効な文字も含む) で列またはテーブルの名前を作成できます。

区切り記号付き識別子の ASCII 文字は、大文字と小文字の区別がありませんが、小文字で表記されます。文字列で二重引用符を使用するには、その前に別の二重引用符文字を付ける必要があります。

Examples

次の表に、区切り記号付き識別子の例、結果として生じる出力、および説明を示します。

[構文] 結果 説明
"group" "group" GROUPは予約語であるため、識別子内での使用には二重引用符が必要です。
"""WHERE""" "where" WHERE も予約語です。文字列に引用符を含めるには、各二重引用符文字を追加の二重引用符文字でエスケープします。
"This name" this name スペースを維持するには二重引用符が必要です。
"This ""IS IT""" this "is it" IS IT を囲む引用符の前には、名前の一部となるために、それぞれ追加の引用符を付ける必要があります。

this "is it" という名前の列を持つ group という名前のテーブルを作成するには、以下のように記述します。

create table "group" ( "This ""IS IT""" char(10));

次のクエリは同じ結果を返します。

select "This ""IS IT""" from "group"; this "is it" -------------- (0 rows)
select "this ""is it""" from "group"; this "is it" -------------- (0 rows)

次に示す完全に修飾された table.column 構文も同じ結果を返します。

select "group"."this ""is it""" from "group"; this "is it" -------------- (0 rows)

次の CREATE TABLE コマンドは、列名にスラッシュを含むテーブルを作成します。

create table if not exists city_slash_id( "city/id" integer not null, state char(2) not null);