Bagikan melalui


Pengidentifikasi database

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Nama objek database disebut sebagai pengidentifikasinya.

Server, database, dan objek database, seperti tabel, tampilan, kolom, indeks, pemicu, prosedur, batasan, dan aturan, dapat memiliki pengidentifikasi. Sebagian besar objek memerlukan pengidentifikasi, tetapi beberapa objek, seperti batasan, membuatnya opsional.

Anda membuat pengidentifikasi objek saat menentukan objek. Gunakan pengidentifikasi 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 kunci utama tidak memiliki pengidentifikasi, sehingga akan diberi nama yang dihasilkan sistem seperti PK__TableX__D7CB9CCCEEF0806C, yang dapat Anda amati dalam tampilan metadata sistem seperti sys.key_constraints.

Nama batasan dan objek cakupan skema lainnya harus unik dalam skema database. Misalnya, dua batasan kunci utama tidak dapat berbagi nama. Namun, nama kolom hanya perlu unik dalam setiap tabel, tidak dalam skema.

Pengurutan pengidentifikasi bergantung pada tingkat di mana Anda menentukannya.

  • Pengurutan default instance ditetapkan pada pengidentifikasi objek tingkat instance, seperti login dan nama database.
  • Pengurutan bawaan database diberikan kepada pengidentifikasi objek dalam database, seperti tabel, tampilan, dan nama kolom. Misalnya, Anda dapat membuat dua tabel dengan nama yang berbeda hanya berdasarkan perbedaan huruf kapital dan kecil dalam database yang memiliki pengurutan peka huruf besar/kecil, tetapi Anda tidak dapat membuatnya dalam database yang memiliki pengurutan tidak peka huruf besar/kecil.

Note

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 mengikuti aturan ini untuk pengidentifikasi Transact-SQL.

  1. Karakter pertama harus salah satu karakter 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, jangan gunakan 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 at (@), tanda dolar ($), tanda angka (#), atau garis bawah (_).

  3. Pengidentifikasi tidak boleh berupa kata kunci Transact-SQL. SQL Server menyediakan versi huruf besar dan huruf kecil dari kata kunci yang dicadangkan. Saat Anda menggunakan pengidentifikasi dalam pernyataan Transact-SQL, batasi pengidentifikasi yang tidak mematuhi aturan ini dengan menggunakan tanda kutip ganda atau tanda kurung. Penggunaan kata yang dicadangkan tergantung pada tingkat kompatibilitas basis data. Atur tingkat kompatibilitas database dengan menggunakan pernyataan tingkat kompatibilitas ALTER DATABASE .

  4. Jangan gunakan spasi yang disematkan atau karakter khusus.

  5. Jangan gunakan karakter Tambahan.

Saat Anda menggunakan pengidentifikasi dalam pernyataan Transact-SQL, batasi pengidentifikasi yang tidak mematuhi aturan ini dengan menggunakan tanda kutip ganda atau tanda kurung.

Beberapa aturan untuk format pengidentifikasi reguler bergantung pada tingkat kompatibilitas database.

Kolase katalog di Azure SQL Database

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

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

Kolase katalog dalam database SQL di Microsoft Fabric

Saat ini, secara default pengurutan database SQL di Fabric adalah SQL_Latin1_General_CP1_CI_AS, tetapi ini dapat dikonfigurasi ketika menerapkannya. Kolase tidak dapat diperbarui setelah penyebaran. Kolasasi pada kolom individual didukung. Untuk informasi selengkapnya tentang opsi penyebaran, lihat Opsi untuk membuat database SQL di Fabric.