Apa kegunaan tanda kurung siku [] dalam pernyataan sql?

163

Saya perhatikan bahwa Visual Studio 2008 menempatkan tanda kurung di sekitar nama kolom dalam sql. Apakah kurung menawarkan keuntungan? Ketika saya memberikan kode T-SQL saya tidak pernah peduli dengan mereka.

Contoh:

Studio visual:

SELECT [column1], [column2] etc...

Cara saya sendiri:

SELECT column1, column2 etc...
Paulj
sumber
Ini adalah hal yang baik bahwa kode tangan Anda SQL tidak pernah membutuhkan tanda kurung, konvensi penamaan basis data Anda harus mengecualikan nama yang membutuhkan tanda kurung.
Christian Oudard
Jawaban terkait membahas pengaturan QUOTED_IDENTIFIER: stackoverflow.com/questions/19657101/…
Jared Beck
8
Saya mungkin menambahkan bahwa tanda kurung adalah Microsoft quirk. SQL Standard sebenarnya menggunakan tanda kutip ganda ( "), yang juga didukung oleh Microsoft . Jika, Microsoft merasa perlu untuk membatasi segalanya, akan lebih baik menggunakan tanda kutip ganda sebagai gantinya. Tapi saya kira itu akan membuatnya terlalu mudah untuk port ke DBMS lain, dan itu tidak akan pernah terjadi ...
Manngo

Jawaban:

181

Tanda kurung diperlukan jika Anda menggunakan kata kunci atau karakter khusus dalam nama kolom atau pengidentifikasi. Anda bisa memberi nama kolom [First Name](dengan spasi) - tetapi Anda harus menggunakan tanda kurung setiap kali Anda merujuk ke kolom itu.

Alat yang lebih baru menambahkannya di mana-mana untuk berjaga-jaga atau untuk konsistensi.

Michael Haren
sumber
3
apakah ini satu-satunya tujuan kurung kotak?
1
@mow, sepertinya begitu, tapi saya tidak punya referensi yang menunjukkan secara eksplisit.
Michael Haren
2
T terkait: stackoverflow.com/questions/9917196/…
Michael Haren
2
sql juga menggunakan tanda kurung siku di operator sejenis dari kueri pemilihan untuk membatasi hasil menggunakan ekspresi reguler. codeproject.com/Articles/33941/SQL-LIKE-Operator
Jens Frandsen
2
Anda juga dapat mendefinisikan nama kolom yang dipanggil selecttetapi select select from mytableakan membuat kesalahan sehingga select [select] from mytablemembuatnya menjadi permintaan yang valid. Apa pun kata yang penuh warna di studio manajemen SQL Anda, harus dikelilingi oleh tanda kurung jika Anda ingin menggunakannya sebagai nama kolom / tabel / sp / dll. Dalam MySQL, tanda kutip tunggal `` `` akan menjadi setara dengan ini.
Barry Guvenkaya
59

Mereka berguna jika kolom Anda memiliki nama yang sama dengan kata kunci SQL, atau memiliki spasi di dalamnya.

Contoh:

create table test ( id int, user varchar(20) )

Oh tidak! Sintaksis salah di dekat kata kunci 'pengguna'. Tapi ini:

create table test ( id int, [user] varchar(20) )

Bekerja dengan baik.

Blorgbeard keluar
sumber
@ Blordbeard apakah ini sesuatu yang spesifik untuk Microsoft SQL Server atau kurung siku juga berfungsi sama untuk Oracle, mySQL, PostgreSQL dll?
user3700562
4
Kurung bukan SQL standar, tidak yakin karakter apa yang digunakan semua mesin DB. Sebagai contoh: MySQL menggunakan backticks: stackoverflow.com/questions/2889871/…
Blorgbeard keluar
12

Mereka berguna jika Anda (karena alasan tertentu) menggunakan nama kolom dengan karakter tertentu misalnya.

Select First Name From People

tidak akan bekerja, tetapi menempatkan tanda kurung di sekitar nama kolom akan berhasil

Select [First Name] From People

Singkatnya, ini adalah cara mendeklarasikan nama objek secara eksplisit; kolom, tabel, basis data, pengguna atau server.

GateKiller
sumber
6

Nama kolom dapat berisi karakter dan kata-kata khusus yang akan membingungkan mesin eksekusi kueri, jadi menempatkan tanda kurung di sekelilingnya setiap saat mencegah hal ini terjadi. Lebih mudah daripada memeriksa masalah dan kemudian menanganinya, saya kira.


sumber
5

Tanda kurung dapat digunakan ketika nama kolom dicadangkan kata-kata.

Jika Anda membuat pernyataan SQL secara terprogram dari kumpulan nama kolom yang tidak Anda kontrol, maka Anda dapat menghindari masalah dengan selalu menggunakan tanda kurung.

Torlack
sumber
5

Terlepas dari mengikuti konvensi penamaan yang menghindari penggunaan kata-kata yang dicadangkan, Microsoft memang menambahkan kata-kata yang dicadangkan baru. Menggunakan tanda kurung memungkinkan kode Anda ditingkatkan ke versi SQL Server baru, tanpa terlebih dahulu perlu mengedit kata-kata Microsoft yang baru saja dicadangkan dari kode klien Anda. Pengeditan itu bisa menjadi perhatian yang signifikan. Ini dapat menyebabkan proyek Anda menjadi pensiun dini ...

Kurung juga bisa bermanfaat saat Anda ingin Ganti Semua dalam skrip. Jika kumpulan Anda berisi variabel bernama @String dan kolom bernama [String], Anda bisa mengganti nama kolom menjadi [NewString], tanpa mengubah nama @String ke @NewString.

Tagihan
sumber
5

Selama zaman kegelapan SQL pada 1990-an itu adalah praktik yang baik karena desainer SQL berusaha untuk menambahkan setiap kata dalam kamus sebagai kata kunci untuk longsoran tak berujung fitur baru dan mereka menyebutnya konsep SQL3.

Jadi terus kompatibilitas.

Dan saya menemukan bahwa ia memiliki efek samping yang bagus, banyak membantu ketika Anda menggunakan grep dalam ulasan kode dan refactoring.

Lothar
sumber
4

Selain itu, beberapa database Sharepoint mengandung tanda hubung dalam namanya. Menggunakan tanda kurung siku dalam Pernyataan SQL memungkinkan nama diuraikan dengan benar.

HSchlarb
sumber
3

Saya percaya itu menambahkan mereka di sana untuk konsistensi ... mereka hanya diperlukan ketika Anda memiliki ruang atau karakter khusus dalam nama kolom, tetapi lebih bersih untuk hanya memasukkan mereka setiap saat ketika IDE menghasilkan SQL.

Jeff Donnici
sumber