Apa perbedaan antara tanda kutip tunggal dan tanda kutip ganda dalam SQL?
Kutipan tunggal digunakan untuk menunjukkan awal dan akhir suatu string dalam SQL. Kutipan ganda umumnya tidak digunakan dalam SQL, tetapi itu dapat bervariasi dari basis data ke basis data.
Tetap menggunakan tanda kutip tunggal.
Lagi pula, itulah penggunaan utama. Anda dapat menggunakan tanda kutip tunggal untuk alias kolom - di mana Anda ingin nama kolom yang Anda rujuk dalam kode aplikasi Anda menjadi sesuatu selain dari apa yang sebenarnya disebut kolom dalam database. Misalnya: PRODUCT.id
akan lebih mudah dibaca product_id
, jadi Anda menggunakan salah satu dari berikut ini:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
Baik bekerja di Oracle, SQL Server, MySQL ... tapi saya tahu beberapa mengatakan bahwa TOAD IDE tampaknya memberikan sedikit kesedihan ketika menggunakan pendekatan tanda kutip tunggal.
Anda harus menggunakan tanda kutip tunggal ketika alias kolom menyertakan karakter spasi, misalnya product id
, tetapi tidak disarankan praktik untuk alias kolom lebih dari satu kata.
SELECT * FROM USERS 'Users'
tidak bekerja di SQL Server, tetapiSELECT * FROM USERS "Users"
tidak.SELECT PRODUCT.id 'product_id'
tidak akan berfungsi di Oracle. Kutipan tunggal hanya untuk karakter literal. Mereka tidak dapat digunakan untuk pengidentifikasi dalam (standar) SQL (meskipun beberapa DBMS mengabaikan standar SQL ketika datang ke pengidentifikasi yang dikutip)Aturan sederhana bagi kita untuk mengingat apa yang harus digunakan dalam hal ini:
Di MySQL dan MariaDB, simbol ` (backtick) sama dengan " simbol. Anda dapat menggunakan " ketika Anda
SQL_MODE
telahANSI_QUOTES
mengaktifkan.sumber
Kutipan tunggal membatasi konstanta string atau konstanta tanggal / waktu.
Tanda kutip ganda membatasi pengidentifikasi misalnya nama tabel atau nama kolom. Ini umumnya hanya diperlukan ketika pengidentifikasi Anda tidak sesuai dengan aturan untuk pengidentifikasi sederhana.
Lihat juga:
Anda dapat membuat MySQL menggunakan tanda kutip ganda per standar ANSI:
Anda dapat membuat Microsoft SQL Server menggunakan tanda kutip ganda per standar ANSI:
sumber
Dalam ANSI SQL, tanda kutip ganda mengutip nama objek (misalnya tabel) yang memungkinkan mereka memuat karakter yang tidak diizinkan, atau sama dengan kata-kata yang dipesan (Hindari ini, sungguh).
Kutipan tunggal untuk string.
Namun, MySQL tidak menyadari standar (kecuali SQL_MODE-nya diubah) dan memungkinkannya digunakan secara bergantian untuk string.
Selain itu, Sybase dan Microsoft juga menggunakan tanda kurung siku untuk kutipan pengenal.
Jadi ini agak spesifik untuk vendor.
Basis data lain seperti Postgres dan IBM benar-benar mematuhi standar ansi :)
sumber
Saya menggunakan mnemonik ini:
Ini tidak 100% benar menurut spesifikasi, tetapi mnemonik ini membantu saya (manusia).
sumber
Perbedaannya terletak pada penggunaannya. Kutipan tunggal sebagian besar digunakan untuk merujuk string di WHERE, HAVING dan juga di beberapa fungsi SQL bawaan seperti CONCAT, STRPOS, POSISI dll.
Saat Anda ingin menggunakan alias yang memiliki ruang di antaranya, Anda bisa menggunakan tanda kutip ganda untuk merujuk alias itu.
Sebagai contoh
Berikut adalah subquery dari tabel pesanan yang memiliki account_id sebagai kunci Asing yang saya gabungkan untuk mengetahui berapa banyak pesanan yang ditempatkan setiap akun. Di sini saya telah memberikan satu kolom nama acak sebagai "hitungan" demi tujuan.
Sekarang mari kita menulis kueri luar untuk menampilkan baris di mana "hitungan" lebih besar dari 20.
Anda dapat menerapkan kasus yang sama untuk ekspresi Common Table juga.
sumber