SQLite - Subquery: Panduan untuk Pemula

Hai, para pemrogram yang sedang belajar! Hari ini, kita akan memulai perjalanan menarik ke dunia subquery di SQLite. Jangan khawatir jika Anda masih baru dalam programming - saya akan menjadi panduan ramah Anda, menjelaskan segala sesuatu secara langkah demi langkah. Ayo masuk ke dalamnya!

SQLite - Subqueries

Apa Itu Subquery?

Sebelum kita masuk ke detailnya, mari pahami apa itu subquery. Bayangkan Anda sedang merencanakan pesta dan butuh membuat daftar tamu. Anda mungkin akan membuat daftar semua teman Anda, lalu menyaringnya menjadi hanya mereka yang tinggal dekat. Di SQL, subquery seperti langkah kedua itu - sebuah query dalam query yang membantu Anda memperbaiki hasil Anda.

Subquery dengan Statement SELECT

Marilah kita mulai dengan penggunaan subquery yang paling umum - dalam statement SELECT.

Contoh Subquery Dasar

SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

Dalam contoh ini, kita mencari karyawan yang gaji di atas rata-rata. Query dalam query (SELECT AVG(salary) FROM employees) menghitung gaji rata-rata, dan query luar menggunakan hasil ini untuk menyaring karyawan.

Subquery dalam Clause FROM

SELECT department, avg_salary
FROM (
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
) AS dept_salaries
WHERE avg_salary > 50000;

Di sini, kita membuat tabel sementara dengan gaji rata-rata per departemen, lalu memilih departemen dengan gaji rata-rata di atas 50,000.

Subquery dengan Statement INSERT

Subquery juga dapat digunakan untuk memasukkan data berdasarkan informasi yang sudah ada.

INSERT INTO high_earners (employee_id, name)
SELECT id, name
FROM employees
WHERE salary > (SELECT AVG(salary) * 1.5 FROM employees);

Query ini memasukkan karyawan yang mendapat gaji lebih dari 1.5 kali gaji rata-rata ke dalam tabel 'high_earners'.

Subquery dengan Statement UPDATE

Memperbarui data berdasarkan subquery adalah fitur yang kuat.

UPDATE employees
SET bonus = salary * 0.1
WHERE department_id IN (
SELECT id
FROM departments
WHERE performance_rating > 8
);

Query ini memberi bonus 10% kepada karyawan di departemen yang prestasinya tinggi.

Subquery dengan Statement DELETE

Akhirnya, mari kita lihat bagaimana subquery dapat membantu menghapus data.

DELETE FROM products
WHERE id NOT IN (
SELECT product_id
FROM orders
WHERE order_date > DATE('now', '-1 year')
);

Query ini menghapus produk yang belum dipesan dalam setahun terakhir.

Metode Subquery

Berikut adalah tabel yang menggabungkan metode yang kita bahas:

Metode Deskripsi Contoh
SELECT dengan Subquery Gunakan subquery untuk menyaring atau menghitung nilai untuk query utama SELECT ... WHERE column > (SELECT AVG(...))
Subquery dalam FROM Buat tabel turunan untuk diquery SELECT ... FROM (SELECT ...) AS derived_table
INSERT dengan Subquery Masukkan data berdasarkan subquery INSERT INTO ... SELECT ... WHERE ...
UPDATE dengan Subquery Perbarui data berdasarkan subquery UPDATE ... SET ... WHERE column IN (SELECT ...)
DELETE dengan Subquery Hapus data berdasarkan subquery DELETE FROM ... WHERE column NOT IN (SELECT ...)

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dunia subquery di SQLite. Ingat, seperti belajar menunggang sepeda, menguasai subquery memerlukan latihan. Jangan frustasi jika itu belum berjalan segera - terus mencoba dengan berbagai query, dan segera Anda akan menulis subquery yang kompleks dengan mudah.

Saat kita mengakhiri, ini adalah cerita kecil dari pengalaman mengajar saya: Pernah saya punya murid yang kesulitan dengan subquery. Dia membandingkan mereka dengan boneka Rusia beranak-anak - query dalam query. Anakalogi ini membantunya memvisualisasikan konsep, dan dia segera menjadi salah satu yang terbaik dalam kelas dalam menulis subquery.

Jadi, baik Anda melihat subquery seperti boneka beranak-anak, atau mungkin seperti treasure hunt di mana setiap query membawa Anda mendekati hadiah, terus latih dan jelajah. Dunia data luas dan menarik, dan subquery adalah kunci Anda untuk membuka rahasia-rahasia nya!

Selamat menquery, dan ingat - di dunia basis data, kecurigaan adalah teman terbaik Anda. Terus bertanya, dan Anda akan terus menemukan jawaban!

Credits: Image by storyset