データベース識別子

データベース オブジェクトの名前は識別子と呼ばれます。 Microsoft SQL Server では、すべてのオブジェクトに識別子を設定できます。 サーバーやデータベース、またはテーブル、ビュー、列、インデックス、トリガー、プロシージャ、制約、規則などのデータベース オブジェクトに対して識別子を割り当てることができます。 ほとんどのオブジェクトには識別子が必要です。ただし、制約などの一部のオブジェクトについては、識別子は省略可能です。

オブジェクトの識別子は、オブジェクトを定義するときに作成されます。 作成された識別子を使用して、そのオブジェクトを参照できます。 たとえば、次のステートメントは識別子が TableX であるテーブル 1 つと、識別子がそれぞれ KeyCol、Description である 2 つの列を作成します。

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

このテーブルには名前のない制約も含まれます。 PRIMARY KEY 制約には識別子がありません。

識別子の照合順序は、識別子が定義されているレベルによって異なります。 ログイン名やデータベース名など、インスタンスレベルのオブジェクトの識別子には、インスタンスの既定の照合順序が指定されます。 テーブル名、ビュー名、列名など、データベース内のオブジェクトの識別子には、データベースの既定の照合順序が指定されます。 たとえば、大文字と小文字を区別する照合順序が指定されたデータベースでは、同じ名前で大文字と小文字のみが異なる 2 つのテーブルを作成できますが、大文字と小文字を区別しない照合順序が指定されたデータベースでは作成できません。

注意

変数、関数、およびストアド プロシージャの名前は、Transact-SQL 識別子の規則に従っている必要があります。

識別子のクラス

識別子のクラスには、次の 2 種類があります。

  • 標準識別子
    識別子の形式に関する規則に従います。 Transact-SQL ステートメントで使用するときは、標準識別子を区切る必要はありません。

    SELECT *
    FROM TableX
    WHERE KeyCol = 124
    
  • 区切られた識別子
    二重引用符 (") または角かっこ ([ ]) で囲まれています。 識別子の形式に関する規則に従っている識別子は、区切らなくてもかまいません。 次に例を示します。

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

    識別子の規則に従わない識別子を Transact-SQL ステートメントで使用する場合は、必ず区切らなければなりません。 次に例を示します。

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

標準識別子および区切られた識別子は、文字、記号 (_ @ #)、および数字を含む 1 ~ 128 個の文字で構成されます。 ローカル一時テーブルの場合、識別子は 116 文字以下でなければなりません。

予約語

Transact-SQL 予約語を識別子として使用することはできません。 SQL Server の予約語は、大文字、小文字ともに予約されています。 これらの規則に従っていない識別子を Transact-SQL ステートメントで使用する場合は、二重引用符または角かっこで区切る必要があります。 予約語は、データベースの互換性レベルによって異なります。 このレベルは、ALTER DATABASE ステートメントを使用して設定できます。

関連項目

参照

ALTER TABLE (Transact-SQL)

CREATE DATABASE (Transact-SQL)

CREATE DEFAULT (Transact-SQL)

CREATE PROCEDURE (Transact-SQL)

CREATE RULE (Transact-SQL)

CREATE TABLE (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

CREATE VIEW (Transact-SQL)

DECLARE @local\_variable (Transact-SQL)

DELETE (Transact-SQL)

INSERT (Transact-SQL)

予約済みキーワード (Transact-SQL)

SELECT (Transact-SQL)

UPDATE (Transact-SQL)