! [Bantuan MySQL - Subquery: Panduan untuk Pemula](# mysql - subquery: panduan untuk pemula)

MySQL - SubQuery

Hai teman-teman, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia subquery MySQL. Jangan khawatir jika Anda baru belajar pemrograman - saya akan menjadi panduan ramah Anda, memecah konsep kompleks menjadi bagian kecil dan mudah dimengerti. Jadi, ambil secangkir kopi (atau teh, jika itu yang Anda suka), dan mari kita masuk ke dalam!

Apa Itu Subquery?

Sebelum kita mulai, mari pahami apa itu subquery. Bayangkan Anda sedang merencanakan pesta dan butuh membuat daftar teman yang menyukai kue coklat. Pertama-tama, Anda membuat daftar semua teman Anda, kemudian mengelilingi mereka yang menyukai kue coklat. Dalam istilah SQL, daftar utama adalah query utama Anda, dan proses mengelilingi penggemar kue coklat adalah subquery Anda. Itu adalah query dalam query - bagus kan?

Sekarang, mari eksplor bagaimana kita bisa menggunakan subquery dalam berbagai pernyataan MySQL.

Subquery dengan Pernyataan SELECT

Pernyataan SELECT seperti sebuah kaca pembesar untuk basis data Anda. Itu membantu Anda mencari dan mengambil informasi tertentu. Ketika kita menambahkan subquery ke SELECT, itu seperti menambahkan kaca pembesar kedua untuk melihat lebih dekat!

Misalnya, kita memiliki dua tabel: employees dan departments. Kita ingin menemukan semua karyawan yang bekerja di departemen 'IT'.

SELECT first_name, last_name
FROM employees
WHERE department_id = (
    SELECT department_id
    FROM departments
    WHERE department_name = 'IT'
);

Dalam contoh ini, subquery (SELECT department_id FROM departments WHERE department_name = 'IT') berjalan pertama. Itu menemukan department_id departemen IT. Kemudian, query utama menggunakan id ini untuk menemukan semua karyawan di departemen itu.

Pikirkan seperti ini: Anda pertama kali bertanya, "Apa ID departemen IT?", kemudian gunakan jawabannya untuk bertanya, "Siapa yang bekerja di departemen dengan ID ini?"

Subquery dengan Pernyataan INSERT

Sekarang, mari bicarakan tentang penggunaan subquery dengan INSERT. Itu seperti menyalin informasi dari satu daftar ke daftar lain, tapi hanya bagian tertentu.

Bayangkan kita memiliki tabel top_performers dan ingin mengisi itu dengan karyawan yang telah membuat penjualan lebih dari $100,000.

INSERT INTO top_performers (employee_id, employee_name, sales)
SELECT employee_id, CONCAT(first_name, ' ', last_name), total_sales
FROM employees
WHERE total_sales > 100000;

Di sini, subquery adalah sebenarnya seluruh pernyataan SELECT. Itu menemukan semua karyawan dengan penjualan lebih dari $100,000, dan pernyataan INSERT menambahkannya ke tabel top_performers.

Itu seperti mengatakan, "Temukan semua sales star dan masukkan mereka ke daftar VIP kami!"

Subquery dengan Operator Perbandingan

Subquery juga dapat digunakan dengan operator perbandingan seperti >, <, =, dll. Ini sangat berguna ketika Anda ingin membandingkan nilai dengan hasil dari query lain.

Misalnya, temukan semua karyawan yang menghasilkan lebih dari rata-rata gaji:

SELECT first_name, last_name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Subquery (SELECT AVG(salary) FROM employees) menghitung rata-rata gaji. Query utama kemudian membandingkan gaji setiap karyawan dengan rata-rata ini.

Itu seperti bertanya, "Siapa saja yang mendapatkan gaji tinggi di perusahaan kami?"

Subquery dengan Operator IN atau NOT IN

Operator IN dan NOT IN sangat membantu ketika Anda ingin memeriksa apakah nilai cocok dengan nilai manapun dalam daftar. Dengan subquery, daftar itu dapat dibuat secara dinamis!

Misalnya, temukan semua karyawan yang juga manajer:

SELECT first_name, last_name
FROM employees
WHERE employee_id IN (
    SELECT DISTINCT manager_id
    FROM employees
    WHERE manager_id IS NOT NULL
);

Di sini, subquery membuat daftar semua ID manajer. Query utama kemudian menemukan semua karyawan yang IDnya ada dalam daftar ini.

Pikirkan itu seperti bertanya, "Siapa saja yang ada dalam daftar manajer?"

Subquery Menggunakan Program Klien

Meskipun sebagian besar contoh kita secara langsung dalam SQL, Anda juga dapat menggunakan subquery dalam program klien. Ini sangat berguna ketika Anda memerlukan operasi kompleks atau ketika subquery tergantung pada input pengguna.

Berikut adalah contoh sederhana dalam Python menggunakan pustaka mysql-connector:

import mysql.connector

# Hubungi basis data
cnx = mysql.connector.connect(user='your_username', password='your_password',
                              host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Ambil input pengguna
department = input("Masukkan nama departemen: ")

# Buat dan eksekusi query
query = """
SELECT first_name, last_name
FROM employees
WHERE department_id = (
    SELECT department_id
    FROM departments
    WHERE department_name = %s
)
"""
cursor.execute(query, (department,))

# Ambil dan cetak hasil
for (first_name, last_name) in cursor:
    print(f"{first_name} {last_name}")

# Tutup koneksi
cursor.close()
cnx.close()

Skrip ini meminta pengguna memasukkan nama departemen, kemudian menemukan semua karyawan di departemen itu. Itu seperti memiliki asisten robot yang ramah yang dapat secara cepat mencari informasi untuk Anda!

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia yang kuat dari subquery MySQL. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini.

Berikut adalah tabel referensi cepat jenis subquery yang kita telahulas:

Tipe Subquery Deskripsi Contoh Penggunaan
SELECT Query dalam SELECT statement Mencari data terkait di antara tabel
INSERT Menggunakan SELECT sebagai subquery dalam INSERT Menyalin data yang difilter ke tabel lain
Perbandingan Menggunakan hasil subquery untuk perbandingan Membandingkan terhadap hasil agregat
IN/NOT IN Memeriksa keanggotaan dalam hasil subquery Mencari kesesuaian di antara data terkait
Program Klien Menggunakan subquery dalam kode aplikasi Query dinamis berdasarkan input pengguna

Ingat, subquery adalah seperti senjata rahasia dalam senjata SQL Anda. Mereka mungkin terlihat sulit pada awalnya, tapi dengan latihan, Anda akan menjadi ahli dalam menembak mereka dalam waktu singkat!

Selamat mencari data, para master data masa depan!

Credits: Image by storyset