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.
Bahasa kueri menyediakan sintaksis seperti SQL yang kuat untuk bekerja dengan data JSON. Bahasa ini dirancang untuk akrab bagi pengguna dengan pengalaman SQL, sekaligus mendukung fleksibilitas dan sifat hierarkis dokumen JSON. Artikel ini memperkenalkan konsep inti, sintaksis, dan fitur bahasa kueri.
Konsep inti bahasa kueri
Bahasa kueri dibuat untuk menyediakan akses ekspresif dan efisien ke data yang disimpan sebagai dokumen JSON. Pada dasarnya, bahasa ini dirancang untuk bekerja secara asli dengan data hierarkis dan fleksibel, mendukung kueri sederhana dan kompleks atas dokumen yang dapat memiliki berbagai struktur.
Kueri terdiri menggunakan sintaks seperti SQL yang sudah dikenal, tetapi diadaptasi untuk model dokumen. Adaptasi ini berarti bahwa, tidak seperti database relasional tradisional, tidak ada skema tetap—properti dapat hilang atau memiliki jenis yang berbeda di seluruh dokumen. Bahasa ini peka huruf besar/kecil dan mendukung referensi properti berlapis, array, dan objek langsung dalam kueri. Operator logis, perbandingan, dan aritmatika tersedia, dan bahasa ini dirancang untuk menjadi intuitif bagi pengembang tersebut dengan pengalaman SQL sambil merangkul fleksibilitas data NoSQL.
Mesin kueri dioptimalkan untuk performa dan skalabilitas tinggi, secara otomatis menggunakan indeks untuk memfilter, mengurutkan, dan menggabungkan data secara efisien. Ini mendukung berbagai pola kueri, dari pencarian sederhana hingga agregasi dan subkueri yang kompleks. Dukungan ini membuat mesin kueri cocok untuk beban kerja transaksi dan analitik. Bahasa ini juga menyediakan konstruksi untuk bekerja dengan array, menangani nilai null dan tidak terdefinisi, dan memproyeksikan menghasilkan bentuk JSON yang fleksibel. Konstruksi ini memungkinkan pengembang untuk mengambil data yang mereka butuhkan dalam format yang diperlukan oleh aplikasi mereka.
Struktur Kueri Dasar
Kueri umum terdiri dari klausul berikut:
-
SELECT: Menentukan bidang atau nilai mana yang akan dikembalikan. -
FROM: Mengidentifikasi kontainer sumber dan dapat menetapkan alias. -
WHERE: Memfilter dokumen berdasarkan kondisi. -
ORDER BY: Mengurutkan hasilnya. -
GROUP BY: Mengelompokkan hasil menurut satu atau beberapa properti.
Contoh: Kueri Sederhana
SELECT p.id, p.name
FROM products p
WHERE p.price > 20
ORDER BY p.price ASC
Kueri ini mengembalikan id dan name produk dengan harga lebih besar dari 20, diurutkan berdasarkan harga dalam urutan naik.
Bekerja dengan Properti JSON
Anda dapat mengakses properti berlapis menggunakan notasi titik atau notasi tanda kurung:
SELECT p.manufacturer.name, p["metadata"].sku
FROM products p
Array dapat dilalui menggunakan JOIN subkueri atau :
SELECT p.name, c AS color
FROM products p
JOIN c IN p.metadata.colors
Memfilter Data
Klausa ini WHERE mendukung berbagai operator, termasuk operasi aritmatika, logis, perbandingan, dan string:
SELECT *
FROM products p
WHERE p.category IN ("Accessories", "Clothing") AND p.price BETWEEN 10 AND 50
Agregasi dan Pengelompokan
Anda dapat menggunakan fungsi agregat dan hasil grup:
SELECT p.category, COUNT(1) AS productCount
FROM products p
GROUP BY p.category
Berbeda, Atas, dan Suka
-
DISTINCTmenghapus nilai duplikat. -
TOP Nmembatasi jumlah hasil. -
LIKEmendukung pencocokan pola dengan kartubebas.
SELECT DISTINCT VALUE p.category
FROM products p
SELECT TOP 5 *
FROM products p
ORDER BY p.price DESC
SELECT *
FROM products p
WHERE p.name LIKE "%bike%"
Subkueri
Subkueri memungkinkan pemfilteran dan proyeksi yang lebih canggih, termasuk memeriksa keberadaan nilai dalam array:
SELECT VALUE p.name
FROM products p
WHERE EXISTS (
SELECT VALUE c FROM c IN p.metadata.colors WHERE c LIKE "%blue%"
)