Pengidentifikasi Database

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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 ketika 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.

Kolae pengidentifikasi tergantung pada tingkat di mana pengidentifikasi ditentukan. Pengidentifikasi objek tingkat instans, seperti login dan nama database, ditetapkan kolase default instans. Pengidentifikasi objek dalam database, seperti tabel, tampilan, dan nama kolom, ditetapkan kolase default database. Misalnya, dua tabel dengan nama yang hanya berbeda 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 ketika digunakan dalam pernyataan Transact-SQL.

    USE AdventureWorks
    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 AdventureWorks
    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 AdventureWorks
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 nomor (#).

      Simbol tertentu di awal pengidentifikasi memiliki arti khusus dalam 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 sebagaimana didefinisikan dalam Standar Unicode 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 dicadangkan Transact-SQL. SQL Server memesan versi huruf besar dan 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.

Lihat juga

ALTER TABLE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
CREATE RULE (Transact-SQL)
BUAT TABEL (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
CREATE VIEW (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
Kata Kunci yang Dicadangkan (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)