Structured Query Language (SQL) adalah fondasi dari sistem manajemen basis data relasional dan harus dimiliki oleh siapa saja yang mengelola data. Namun, meskipun SQL dasar seperti SELECT, INSERT, atau UPDATE dan DELETE dapat melakukan aktivitas kerangka kerja, SQL tingkat lanjut dapat melakukan presentasi informasi yang kompleks, pertanyaan yang sangat tersusun, dan penggambaran visual. Pada artikel ini, kita akan mengeksplorasi teknik SQL yang kuat dan canggih untuk membawa kueri database Anda ke tingkat berikutnya.
1. Fungsi Jendela
SELECTemployee_id,department_id,salary,RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank_in_departmentFROM employees;
sumber: alphaservesp.com
2. CTE (Ekspresi Tabel Umum)
WITH SalesByCategory AS (SELECTcategory_id,SUM(sales_amount) AS total_salesFROM salesGROUP BY category_id)SELECTcategory_id,total_salesFROM SalesByCategoryWHERE total_sales > 10000;
3. Memutar dan Tidak Memutar
SELECT *FROM (SELECT product_id, month, salesFROM sales_data) AS sourcePIVOT (SUM(sales) FOR month IN ([Jan], [Feb], [Mar])) AS pivoted_data;
4. Gabungan Tingkat Lanjut
SELECTc.customer_id,o.latest_order_dateFROM customers cCROSS APPLY (SELECT TOP 1 order_date AS latest_order_dateFROM orders oWHERE o.customer_id = c.customer_idORDER BY order_date DESC) o;
Operator CROSS APPLY memungkinkan subkueri yang berkorelasi, yang sangat berguna untuk mengakses data terkait secara efisien.
5. Mengoptimalkan Kueri dan Indeks
Indeks membuat kueri untuk mendapatkan data lebih cepat dengan mengurangi waktu untuk mendapatkan data. Namun, penggunaannya harus direncanakan dengan hati-hati, karena pengindeksan yang tidak perlu dapat memperlambat operasi penulisan.
Teknik
- JELASKAN atau JELASKAN RENCANA untuk penjelasan kueri.
- Mencegah pemindaian tabel penuh dengan pengindeksan.
- Menulis ulang sedemikian rupa sehingga kolom yang diindeks mendapatkan bobot paling besar dalam perencanaan kueri.
Contoh:
CREATE INDEX idx_employee_department ON employees(department_id);
Indeks ini mempercepat pemfilteran kueri (atau penggabungan pada) department_id.
6. Menangani Data Hirarkis
Data hirarkis atau terstruktur pohon - seperti bagan organisasi - pada dasarnya membutuhkan pendekatan yang lebih kompleks seperti CTE rekursif atau model daftar kedekatan.
Contoh (CTE rekursif):
WITH RecursiveOrgChart AS (
SELECT
employee_id,
manager_id,
1 AS level
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT
e.employee_id,
e.manager_id,
roc.level + 1
FROM employees e
INNER JOIN RecursiveOrgChart roc ON e.manager_id = roc.employee_id
)
SELECT *
FROM RecursiveOrgChart;
Karyawan dengan hubungan manajerial membentuk hierarki, yang dibangun oleh kueri ini.
7. Penanganan Data JSON dan XML
Basis data modern dapat menangani data terstruktur dan semi-terstruktur dalam format JSON atau XML. Mengekstrak dan memanipulasi data JSON menjadi lebih mudah dengan fungsi-fungsi seperti JSON_VALUE dan JSON_QUERY.
Contoh:
SELECTJSON_VALUE(order_details, '$.product_name') AS product_name,JSON_VALUE(order_details, '$.quantity') AS quantityFROM orders;
Kueri ini mengekstrak bidang tertentu dari data JSON yang disimpan dalam sebuah kolom.
Kesimpulan
Menguasai teknik SQL tingkat lanjut memungkinkan Anda menangani skenario data yang kompleks, mengoptimalkan kinerja, dan membuat analisis yang mendalam. Dengan menggabungkan fungsi jendela, CTE, pivoting, dan pengindeksan ke dalam keahlian Anda, Anda dapat membuka potensi penuh SQL dan meningkatkan kemampuan manajemen data Anda.
Kembali ke>>>> Memahami SQL: Bahasa Basis Data