データベース識別子Database Identifiers

適用対象: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

データベース オブジェクトの名前は識別子と呼ばれます。The database object name is referred to as its identifier. MicrosoftMicrosoft SQL ServerSQL Server では、すべてのオブジェクトに識別子を設定できます。Everything in MicrosoftMicrosoft SQL ServerSQL Server can have an identifier. サーバーやデータベース、またはテーブル、ビュー、列、インデックス、トリガー、プロシージャ、制約、規則などのデータベース オブジェクトに対して識別子を割り当てることができます。Servers, databases, and database objects, such as tables, views, columns, indexes, triggers, procedures, constraints, and rules, can have identifiers. ほとんどのオブジェクトには識別子が必要です。ただし、制約などの一部のオブジェクトについては、識別子は省略可能です。Identifiers are required for most objects, but are optional for some objects such as constraints.

オブジェクトの識別子は、オブジェクトを定義するときに作成されます。An object identifier is created when the object is defined. 作成された識別子を使用して、そのオブジェクトを参照できます。The identifier is then used to reference the object. たとえば、次のステートメントは識別子が TableXであるテーブル 1 つと、識別子がそれぞれ KeyColDescriptionである 2 つの列を作成します。For example, the following statement creates a table with the identifier TableX, and two columns with the identifiers KeyCol and Description:

CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80))

このテーブルには名前のない制約も含まれます。This table also has an unnamed constraint. PRIMARY KEY 制約には識別子がありません。The PRIMARY KEY constraint has no identifier.

識別子の照合順序は、識別子が定義されているレベルによって異なります。The collation of an identifier depends on the level at which it is defined. ログイン名やデータベース名など、インスタンスレベルのオブジェクトの識別子には、インスタンスの既定の照合順序が指定されます。Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. テーブル名、ビュー名、列名など、データベース内のオブジェクトの識別子には、データベースの既定の照合順序が指定されます。Identifiers of objects in a database, such as tables, views, and column names, are assigned the default collation of the database. たとえば、大文字と小文字を区別する照合順序が指定されたデータベースでは、同じ名前で大文字と小文字のみが異なる 2 つのテーブルを作成できますが、大文字と小文字を区別しない照合順序が指定されたデータベースでは作成できません。For example, two tables with names that differ only in case can be created in a database that has case-sensitive collation, but cannot be created in a database that has case-insensitive collation.

注意

変数名、関数およびストアド プロシージャのパラメーター名は、 Transact-SQLTransact-SQL 識別子の規則に従っている必要があります。The names of variables, or the parameters of functions and stored procedures must comply with the rules for Transact-SQLTransact-SQL identifiers.

識別子のクラスClasses of Identifiers

識別子のクラスには、次の 2 種類があります。There are two classes of identifiers:

標準識別子は、識別子の形式に関する規則に準拠しています。Regular identifiers Comply with the rules for the format of identifiers. Transact-SQLTransact-SQL ステートメントで使用するときは、標準識別子を区切る必要はありません。Regular identifiers are not delimited when they are used in Transact-SQLTransact-SQL statements.

SELECT *
FROM TableX
WHERE KeyCol = 124

区切られた識別子は、二重引用符 (") または角かっこ ([ ]) で囲まれています。Delimited identifiers Are enclosed in double quotation marks (") or brackets ([ ]). 識別子の形式に関する規則に従っている識別子は、区切らなくてもかまいません。Identifiers that comply with the rules for the format of identifiers might not be delimited. 例:For example:

SELECT *
FROM [TableX]         --Delimiter is optional.
WHERE [KeyCol] = 124  --Delimiter is optional.

識別子の規則に従わない識別子を Transact-SQLTransact-SQL ステートメントで使用する場合は、必ず区切らなければなりません。Identifiers that do not comply with all the rules for identifiers must be delimited in a Transact-SQLTransact-SQL statement. 例:For example:

SELECT *
FROM [My Table]      --Identifier contains a space and uses a reserved keyword.
WHERE [order] = 10   --Identifier is a reserved keyword.

標準識別子および区切られた識別子は、文字、記号 (_ @ #)、および数字を含む 1 ~ 128 個の文字で構成されます。Both regular and delimited identifiers must contain from 1 through 128 characters. ローカル一時テーブルの場合、識別子は 116 文字以下でなければなりません。For local temporary tables, the identifier can have a maximum of 116 characters.

標準識別子に関する規則Rules for Regular Identifiers

変数、関数、およびストアド プロシージャの名前は、次の Transact-SQLTransact-SQL 識別子の規則に従っている必要があります。The names of variables, functions, and stored procedures must comply with the following rules for Transact-SQLTransact-SQL identifiers.

  1. 最初の文字が次のいずれかである必要があります。The first character must be one of the following:

    • Unicode 規格 3.2 で定義されている文字。A letter as defined by the Unicode Standard 3.2. Unicode の文字定義には、各国言語の文字の他に、ラテン文字 a ~ z と A ~ Z も含まれます。The Unicode definition of letters includes Latin characters from a through z, from A through Z, and also letter characters from other languages.

    • アンダースコア ()、アット マーク (@)、または番号記号 (#)。The underscore (), at sign (@), or number sign (#).

      SQL ServerSQL Serverでは、識別子の先頭にある一定の記号には特別な意味があります。Certain symbols at the beginning of an identifier have special meaning in SQL ServerSQL Server. アット マークで始まる標準識別子は、常にローカル変数またはローカル パラメーターを表し、他の種類のオブジェクトの名前としては使用できません。A regular identifier that starts with the at sign always denotes a local variable or parameter and cannot be used as the name of any other type of object. 番号記号で始まる識別子は一時テーブルまたは一時プロシージャを表します。An identifier that starts with a number sign denotes a temporary table or procedure. 2 つの番号記号 (##) で始まる識別子は、グローバルな一時オブジェクトを表します。An identifier that starts with double number signs (##) denotes a global temporary object. 1 つまたは 2 つの番号記号で始まる名前を、他の種類のオブジェクトの名前として使用することもできますが、このような番号記号の使用はお勧めしません。Although the number sign or double number sign characters can be used to begin the names of other types of objects, we do not recommend this practice.

      一部の Transact-SQLTransact-SQL 関数の名前は、2 つのアット マーク (@@) から始まります。Some Transact-SQLTransact-SQL functions have names that start with double at signs (@@). これらの関数との混同を避けるために、@@ から始まる名前は使用しないでください。To avoid confusion with these functions, you should not use names that start with @@.

  2. 名前の先頭以外では、次の文字を使用できます。Subsequent characters can include the following:

    • Unicode 規格 3.2 で定義されている文字Letters as defined in the Unicode Standard 3.2.

    • Basic Latin スクリプトまたはその他の各国スクリプトの 10 進数Decimal numbers from either Basic Latin or other national scripts.

    • アット マーク、ドル記号 ($)、番号記号、またはアンダースコアThe at sign, dollar sign ($), number sign, or underscore.

  3. Transact-SQLTransact-SQL 予約語を識別子として使用することはできません。The identifier must not be a Transact-SQLTransact-SQL reserved word. SQL ServerSQL Server の予約語は、大文字、小文字ともに予約されています。reserves both the uppercase and lowercase versions of reserved words. これらの規則に従っていない識別子を Transact-SQLTransact-SQL ステートメントで使用する場合は、二重引用符または角かっこで区切る必要があります。When identifiers are used in Transact-SQLTransact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets. 予約語は、データベースの互換性レベルによって異なります。The words that are reserved depend on the database compatibility level. このレベルは、 ALTER DATABASE ステートメントを使用して設定できます。This level can be set by using the ALTER DATABASE statement.

  4. 埋め込み型スペースおよび特殊文字は使用できません。Embedded spaces or special characters are not allowed.

  5. 補助文字は使用できません。Supplementary characters are not allowed.

これらの規則に従っていない識別子を Transact-SQLTransact-SQL ステートメントで使用する場合は、二重引用符または角かっこで区切る必要があります。When identifiers are used in Transact-SQLTransact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.

注意

標準識別子の形式に関する規則は、データベースの互換性レベルに応じて異なります。Some rules for the format of regular identifiers depend on the database compatibility level. 互換性レベルは、 ALTER DATABASEを使用して設定できます。This level can be set by using ALTER DATABASE.

参照See Also