Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi ke:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL analytics endpoint di Microsoft Fabric
Warehouse di Microsoft Fabric
SQL database di Microsoft Fabric
Nama objek database adalah 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 memiliki batasan yang tidak disebutkan namanya. Batasan kunci utama tidak memiliki pengidentifikasi yang ditentukan pengguna, sehingga sistem menetapkan nama yang dihasilkan seperti PK__TableX__D7CB9CCCEEF0806C. Anda dapat melihat nama ini 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 format untuk pengidentifikasi. Mereka tidak dibatasi saat digunakan dalam pernyataan Transact-SQL. Pengidentifikasi reguler harus mengikuti aturan untuk pengidentifikasi reguler: mereka hanya dapat berisi huruf, digit, dan simbol tertentu (
_, ,@#,$), harus dimulai dengan huruf atau salah satu dari_,@,#, dan tidak dapat menjadi kata khusus.USE AdventureWorks2025; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;Pengidentifikasi yang dibatasi diapit dalam tanda kutip ganda (
") atau tanda kurung ([dan]). Pemisah memungkinkan Anda menggunakan nama yang sebaliknya akan dianggap tidak valid sebagai pengidentifikasi reguler, seperti kata kunci yang sudah dipesan, nama dengan spasi, atau nama dengan karakter khusus. Pengidentifikasi yang sudah mematuhi aturan pengidentifikasi reguler juga dapat dibatasi, tetapi pemisah bersifat opsional dalam hal ini. Untuk informasi selengkapnya, lihat Aturan untuk pengidentifikasi yang dibatasi.USE AdventureWorks2025; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919; --Delimiter is optional.
Pengidentifikasi yang tidak mematuhi aturan untuk pengidentifikasi reguler harus dibatasi dalam pernyataan Transact-SQL. Contohnya:
USE AdventureWorks2025;
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 yang dibatasi
Pengidentifikasi yang dibatasi diapit dalam tanda kurung siku ([ dan ]) atau tanda kutip ganda ("). Mereka dapat berisi kombinasi karakter apa pun, termasuk spasi, kata kunci yang telah dipesan, dan karakter khusus yang tidak diizinkan dalam pengenal reguler.
Pengidentifikasi yang dibatasi oleh braket
Pengidentifikasi yang dikelilingi oleh braket berada di dalam tanda kurung siku ([ dan ]). Jika pengidentifikasi itu sendiri berisi tanda kurung siku yang tepat (]), keluarkan dengan menggandakannya (]]). Tanda kurung kiri ([) tidak memerlukan pelepasan.
Misalnya, untuk membuat dan mengkueri tabel yang namanya berisi tanda kurung:
-- Create a table with a ] character in its name.
CREATE TABLE [My]]Table]
(
ID INT PRIMARY KEY
);
GO
-- Reference the table in a query.
SELECT *
FROM [My]]Table];
GO
Fungsi QUOTENAME mengembalikan pengidentifikasi yang dibatasi braket yang valid untuk string tertentu dan menangani penghindaran secara otomatis.
SELECT QUOTENAME('abc[]def');
Contoh sebelumnya mengembalikan [abc[]]def].
Pengidentifikasi ditandai dengan tanda kutip ganda
Pengidentifikasi yang dibatasi oleh kutipan ganda dikelilingi oleh tanda kutip ganda ("). Jika pengidentifikasi itu sendiri berisi tanda kutip ganda, pecahkan dengan menggandakannya ("").
Pemisah kutipan ganda memerlukan SET QUOTED_IDENTIFIER ON (default untuk sebagian besar koneksi). Ketika QUOTED_IDENTIFIEROFF, Database Engine memperlakukan string yang dikutip ganda sebagai literal string, bukan pengidentifikasi. Untuk informasi selengkapnya, lihat MENGATUR QUOTED_IDENTIFIER.
Misalnya, untuk membuat dan mengajukan kueri pada tabel yang menggunakan kata kunci yang telah ditentukan sebagai pengidentifikasi.
SET QUOTED_IDENTIFIER ON;
GO
-- Create a table using double-quote delimiters.
CREATE TABLE "My Table"
(
"Order" INT NOT NULL,
"Description" NVARCHAR (100)
);
GO
SELECT "Order",
"Description"
FROM "My Table";
GO
Note
SET QUOTED_IDENTIFIER tidak memengaruhi pengidentifikasi yang dibatasi dengan tanda kurung. Pembatas braket selalu berfungsi terlepas dari pengaturan QUOTED_IDENTIFIER.
Aturan untuk pengidentifikasi reguler
Nama variabel, fungsi, dan prosedur tersimpan harus mengikuti aturan ini untuk pengidentifikasi Transact-SQL.
Karakter pertama harus salah satu karakter berikut:
Huruf sebagaimana didefinisikan oleh Unicode Standard 3.2. Definisi huruf Unicode mencakup karakter Latin dari
amelaluiz, dariAmelaluiZ, dan juga karakter huruf dari bahasa lain.Garis bawah (
_), tanda (@), atau tanda nomor (#).Simbol tertentu di awal pengidentifikasi memiliki arti khusus dalam Database Engine. 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, Anda harus menghindari 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@@.
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 (_).
Pengidentifikasi tidak boleh berupa kata yang merupakan kata yang dicadangkan oleh lingkungan Transact-SQL. Database Engine mencadangkan kedua versi huruf besar dan huruf kecil dari kata kunci terlarang. 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 .
Jangan gunakan spasi yang disematkan atau karakter khusus.
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 ini bervariasi tergantung pada tingkat kompatibilitas database.
Koleksi katalog di Azure SQL Database
Anda tidak dapat mengubah atau mengatur kolase server logis pada 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 kolasi secara independen ketika Anda buat database di portal Azure, di Transact-SQL (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
Pengurutan bawaan database SQL di Fabric adalah SQL_Latin1_General_CP1_CI_AS. Anda dapat mengonfigurasi kolase yang berbeda pada waktu penyebaran, tetapi Anda tidak dapat mengubahnya setelah database dibuat. Setiap kolom dapat menggunakan kolasi mereka sendiri. Untuk informasi selengkapnya tentang opsi penyebaran, lihat Options untuk membuat database SQL di Fabric.