Bagikan melalui


Pengidentifikasi database

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Nama objek database disebut sebagai pengidentifikasinya. Semua yang ada di 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 sensitif 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 yang dibatasi diapit dalam tanda kutip ganda (") atau tanda kurung ([ dan ]). 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 T-SQL. Contohnya:

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.

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 item berikut:

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

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

      Simbol tertentu di awal pengidentifikasi memiliki arti khusus di SQL Server. Pengidentifikasi reguler yang dimulai dengan tanda at 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 menyertakan daftar berikut:

    • Huruf seperti yang didefinisikan dalam Unicode Standard 3.2.

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

    • Tanda (@), 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 tingkat kompatibilitas ALTER DATABASE.

  4. Spasi yang disematkan atau karakter khusus tidak diizinkan.

  5. Karakter tambahan tidak diizinkan.

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 tingkat kompatibilitas ALTER DATABASE.

Kolase katalog di Azure SQL Database

Anda tidak dapat mengubah atau mengatur kolase server logis di Azure SQL Database. Namun, Anda dapat mengonfigurasi kolamen 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).