Pengidentifikasi database

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Nama objek database disebut sebagai pengidentifikasinya. Semua yang ada di Microsoft SQL Server dapat memiliki pengidentifikasi. Server, database, dan objek database, seperti tabel, tampilan, kolom, indeks, pemicu, prosedur, batasan, dan aturan, dapat memiliki pengidentifikasi. Pengidentifikasi diperlukan untuk sebagian besar objek, tetapi bersifat opsional untuk beberapa objek seperti batasan.

Pengidentifikasi objek dibuat saat objek ditentukan. Pengidentifikasi kemudian digunakan untuk mereferensikan objek. Misalnya, pernyataan berikut membuat tabel dengan pengidentifikasi TableX, dan dua kolom dengan pengidentifikasi KeyCol dan Description:

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

Tabel ini juga memiliki batasan yang tidak disebutkan namanya. Batasan PRIMARY KEY tidak memiliki pengidentifikasi.

Kolatasi pengidentifikasi tergantung pada tingkat di mana pengidentifikasi ditentukan. Pengidentifikasi objek tingkat instans, seperti login dan nama database, diberi kolase default instans. Pengidentifikasi objek dalam database, seperti tabel, tampilan, dan nama kolom, diberi kolase default database. Misalnya, dua tabel dengan nama yang berbeda hanya jika dapat dibuat dalam database yang memiliki kolase peka huruf besar/kecil, tetapi tidak dapat dibuat dalam database yang memiliki kolase tidak peka huruf besar/kecil.

Catatan

Nama variabel, atau parameter fungsi dan prosedur tersimpan harus mematuhi aturan untuk pengidentifikasi Transact-SQL.

Kelas pengidentifikasi

Ada dua kelas pengidentifikasi:

  • Pengidentifikasi reguler
    Mematuhi aturan untuk format pengidentifikasi. Pengidentifikasi reguler tidak dibatasi saat digunakan dalam pernyataan Transact-SQL.

    USE AdventureWorks2022;
    GO
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919
    
  • Pengidentifikasi pemisah
    Diapit dalam tanda kutip ganda (") atau tanda kurung siku ([ ]). Pengidentifikasi yang mematuhi aturan untuk format pengidentifikasi mungkin tidak dibatasi. Contohnya:

    USE AdventureWorks2022;
    GO
    SELECT *
    FROM [HumanResources].[Employee] --Delimiter is optional.
    WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
    

Pengidentifikasi yang tidak mematuhi semua aturan untuk pengidentifikasi harus dibatasi dalam pernyataan Transact-SQL. Contohnya:

USE AdventureWorks2022;
GO
CREATE TABLE [SalesOrderDetail Table] --Identifier contains a space and uses a reserved keyword.
(
    [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.

Pengidentifikasi reguler dan dibatasi harus berisi dari 1 hingga 128 karakter. Untuk tabel sementara lokal, pengidentifikasi dapat memiliki maksimal 116 karakter.

Aturan untuk pengidentifikasi reguler

Nama variabel, fungsi, dan prosedur tersimpan harus mematuhi aturan berikut untuk pengidentifikasi Transact-SQL.

  1. Karakter pertama harus salah satu dari berikut ini:

    • Huruf sebagaimana didefinisikan oleh Unicode Standard 3.2. Definisi huruf Unicode mencakup karakter Latin dari a hingga z, dari A hingga Z, dan juga karakter huruf dari bahasa lain.

    • Garis bawah (_), pada tanda (@), atau tanda angka (#).

      Simbol tertentu di awal pengidentifikasi memiliki arti khusus di SQL Server. Pengidentifikasi reguler yang dimulai dengan tanda selalu menunjukkan variabel atau parameter lokal dan tidak dapat digunakan sebagai nama jenis objek lainnya. Pengidentifikasi yang dimulai dengan tanda angka menunjukkan tabel atau prosedur sementara. Pengidentifikasi yang dimulai dengan tanda angka ganda (##) menunjukkan objek sementara global. Meskipun tanda angka atau karakter tanda nomor ganda dapat digunakan untuk memulai nama jenis objek lain, kami tidak merekomendasikan praktik ini.

      Beberapa fungsi Transact-SQL memiliki nama yang dimulai dengan tanda ganda (@@). Untuk menghindari kebingungan dengan fungsi-fungsi ini, Anda tidak boleh menggunakan nama yang dimulai dengan @@.

  2. Karakter berikutnya dapat mencakup yang berikut ini:

    • Huruf seperti yang didefinisikan dalam Unicode Standard 3.2.

    • Angka desimal dari Bahasa Latin Dasar atau skrip nasional lainnya.

    • Tanda at (@), tanda dolar ($), tanda angka (#), atau garis bawah (_).

  3. Pengidentifikasi tidak boleh berupa kata yang dipesan Transact-SQL. SQL Server mencadangkan versi huruf besar dan huruf kecil dari kata yang dipesan. Ketika pengidentifikasi digunakan dalam pernyataan Transact-SQL, pengidentifikasi yang tidak mematuhi aturan ini harus dibatasi oleh tanda kutip ganda atau tanda kurung. Kata-kata yang dicadangkan bergantung pada tingkat kompatibilitas database. Tingkat ini dapat diatur dengan menggunakan pernyataan ALTER DATABASE .

  4. Spasi yang disematkan atau karakter khusus tidak diperbolehkan.

  5. Karakter tambahan tidak diperbolehkan.

Ketika pengidentifikasi digunakan dalam pernyataan Transact-SQL, pengidentifikasi yang tidak mematuhi aturan ini harus dibatasi oleh tanda kutip ganda atau tanda kurung.

Catatan

Beberapa aturan untuk format pengidentifikasi reguler bergantung pada tingkat kompatibilitas database. Tingkat ini dapat diatur dengan menggunakan ALTER DATABASE.

Kolase katalog di Azure SQL Database

Anda tidak dapat mengubah atau mengatur kolase server logis di Azure SQL Database, tetapi Anda dapat mengonfigurasi kolase setiap database secara terpisah untuk data dalam database dan untuk katalog. Kolase katalog menentukan kolase untuk metadata sistem, seperti pengidentifikasi objek. Kedua kolase dapat ditentukan secara independen saat Anda membuat database di portal Azure, di T-SQL dengan CREATE DATABASE, di PowerShell dengan New-AzSqlDatabase.

Untuk detail dan contohnya, lihat MEMBUAT DATABASE. Tentukan kolate untuk database (COLLATE) dan kolatasi katalog untuk metadata sistem dan pengidentifikasi objek (CATALOG_COLLATION).

Langkah berikutnya