適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric の SQL データベース
データベース オブジェクトの名前は識別子と呼ばれます。
サーバーやデータベース、またはテーブル、ビュー、列、インデックス、トリガー、プロシージャ、制約、規則などのデータベース オブジェクトに対して識別子を割り当てることができます。 ほとんどのオブジェクトには識別子が必要ですが、制約などの一部のオブジェクトでは省略可能です。
オブジェクトを定義するときに、オブジェクト識別子を作成します。 識別子を使用してオブジェクトを参照します。 たとえば、次のステートメントは識別子が TableXであるテーブル 1 つと、識別子がそれぞれ KeyCol 、 Descriptionである 2 つの列を作成します。
CREATE TABLE TableX (
KeyCol INT PRIMARY KEY,
Description NVARCHAR(80)
);
このテーブルには名前のない制約も含まれます。 主キー制約には識別子がないため、 PK__TableX__D7CB9CCCEEF0806Cなどのシステム生成名が割り当てられ、 sys.key_constraintsなどのシステム メタデータ ビューで確認できます。
制約名とその他のスキーマ スコープ オブジェクトは、データベース スキーマ内で一意である必要があります。 たとえば、2 つの主キー制約で名前を共有することはできません。 ただし、列名はスキーマ内ではなく、各テーブル内でのみ一意である必要があります。
識別子の照合順序は、定義するレベルによって異なります。
- インスタンスの既定の照合順序は、ログインやデータベース名など、インスタンス レベルのオブジェクトの識別子に割り当てられます。
- データベースの既定の照合順序は、テーブル、ビュー、列名など、データベース内のオブジェクトの識別子に割り当てられます。 たとえば、大文字と小文字を区別する照合順序を持つデータベースでは、大文字と小文字のみが異なる名前の 2 つのテーブルを作成できますが、大文字と小文字を区別しない照合順序を持つデータベースでは作成できません。
Note
変数名、関数およびストアド プロシージャのパラメーター名は、Transact-SQL 識別子の規則に従っている必要があります。
識別子のクラス
識別子のクラスには、次の 2 種類があります。
標準識別子は、識別子の形式に関する規則に準拠しています。 Transact-SQL ステートメントで使用するときは、標準識別子を区切る必要はありません。
USE AdventureWorks2022; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;区切られた識別子は、二重引用符 (
") または括弧 ([と]) で囲まれています。 識別子の形式に関する規則に従っている識別子は、区切らなくてもかまいません。 例えば次が挙げられます。USE AdventureWorks2022; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
識別子の規則に従わない識別子を Transact-SQL ステートメントで使用する場合は、必ず区切らなければなりません。 例えば次が挙げられます。
USE AdventureWorks2022;
GO
--Identifier contains a space and uses a reserved keyword.
CREATE TABLE [SalesOrderDetail Table] (
[Order] INT NOT NULL,
[SalesOrderDetailID] INT IDENTITY(1, 1) NOT NULL,
[OrderQty] SMALLINT NOT NULL,
[ProductID] INT NOT NULL,
[UnitPrice] MONEY NOT NULL,
[UnitPriceDiscount] MONEY NOT NULL,
[ModifiedDate] DATETIME NOT NULL,
CONSTRAINT [PK_SalesOrderDetail_Order_SalesOrderDetailID] PRIMARY KEY CLUSTERED (
[Order] ASC,
[SalesOrderDetailID] ASC
)
);
GO
SELECT *
FROM [SalesOrderDetail Table] --Identifier contains a space and uses a reserved keyword.
WHERE [Order] = 10; --Identifier is a reserved keyword.
標準識別子および区切られた識別子は、文字、記号 (_ @ #)、および数字を含む 1 ~ 128 個の文字で構成されます。 ローカル一時テーブルの場合、識別子は 116 文字以下でなければなりません。
標準識別子に関する規則
変数、関数、およびストアド プロシージャの名前は、Transact-SQL 識別子のこれらの規則に従う必要があります。
最初の文字は、次のいずれかの文字である必要があります。
Unicode 規格 3.2 で定義されている文字。 Unicode の文字定義には、各国言語の文字の他に、ラテン文字
a~zとA~Zも含まれます。アンダースコア (
_)、アット マーク (@)、または番号記号 (#)。SQL Server では、識別子の先頭にある一定の記号には特別な意味があります。 アット マークで始まる標準識別子は、常にローカル変数またはローカル パラメーターを表し、他の種類のオブジェクトの名前としては使用できません。 番号記号で始まる識別子は一時テーブルまたは一時プロシージャを表します。 2 つの番号記号 (
##) で始まる識別子は、グローバルな一時オブジェクトを表します。 1 つまたは 2 つの番号記号で始まる名前を、他の種類のオブジェクトの名前として使用することもできますが、このような番号記号の使用はお勧めしません。一部の Transact-SQL 関数の名前は、2 つのアット マーク (
@@) から始まります。 これらの関数との混乱を避けるために、@@で始まる名前を使用しないでください。
次の一覧の文字を含めることができます。
Unicode 規格 3.2 で定義されている文字
Basic Latin スクリプトまたはその他の各国スクリプトの 10 進数の数値
アット マーク (
@)、ドル記号 ($)、番号記号 (#)、またはアンダースコア (_)。
Transact-SQL 予約語を識別子として使用することはできません。 SQL Server の予約語は、大文字、小文字ともに予約されています。 Transact-SQL ステートメントで識別子を使用する場合は、二重引用符または角かっこを使用して、これらの規則に準拠していない識別子を区切ります。 予約語は、データベースの互換性レベルによって異なります。 ALTER DATABASE 互換性レベル ステートメントを使用して、 データベース互換性レベル を設定します。
埋め込みスペースや特殊文字は使用しないでください。
補助文字は使用しないでください。
Transact-SQL ステートメントで識別子を使用する場合は、二重引用符または角かっこを使用して、これらの規則に準拠していない識別子を区切ります。
標準識別子の形式に関する規則は、データベースの互換性レベルに応じて異なります。
Azure SQL データベースにおけるカタログの照合順序設定
Azure SQL データベースでは論理サーバーの照合順序を変更または設定することはできません。 ただし、各データベースの照合順序は、データベース内のデータとカタログ用に個別に構成できます。 カタログの照合順序は、オブジェクト識別子などのシステム メタデータの照合順序を決定します。 Azure portal、CREATE DATABASE を使用した T-SQL、または New-AzSqlDatabase を使用した PowerShell でデータベースを作成する場合は、両方の照合順序を個別に指定できます。
詳細と例については、「CREATE DATABASE」を参照してください。 データ (COLLATE) の照合順序と、システム メタデータとオブジェクト識別子 (CATALOG_COLLATION) のカタログ照合順序を指定します。
Microsoft Fabric の SQL データベースのカタログ照合順序
現時点では、既定では Fabric の SQL データベースの照合順序は SQL_Latin1_General_CP1_CI_ASされていますが、デプロイ時に構成できます。 展開後に照合順序を更新することはできません。 個々の列での照合順序がサポートされています。 デプロイ オプションの詳細については、「 Fabric で SQL データベースを作成するオプション」を参照してください。