Skip to content

Aktivitas Praktikum

Pada bagian ini, mahasiswa akan mempraktikkan secara langsung penggunaan sub query pada MySQL. Aktivitas disusun secara bertahap, mulai dari sub query di klausa SELECT, sub query di klausa FROM, sub query di klausa WHERE, hingga penggunaan operator ALL, ANY, SOME, EXISTS, NOT EXISTS, dan IN. Kerjakan setiap aktivitas secara berurutan agar hubungan antara query utama dan sub query dapat dipahami dengan baik.

Sebelum mulai praktik, pastikan database PRAK2 sudah tersedia dan tabel employee masih ada dari pertemuan sebelumnya. Pada bagian akhir, Anda juga akan membuat tabel job untuk mencoba sub query dengan IN.

Aktivitas 1 — Menyiapkan Data Praktikum

Percobaan 1.1 — Mengaktifkan database kerja

USE PRAK2;

Gunakan perintah ini untuk memastikan seluruh percobaan dijalankan pada database yang benar.

Percobaan 1.2 — Menampilkan daftar tabel

SHOW TABLES;

Perintah ini digunakan untuk memastikan tabel employee sudah tersedia.

Percobaan 1.3 — Menampilkan seluruh data pada tabel employee

SELECT * FROM employee;

Perintah ini digunakan untuk melihat isi tabel employee yang akan digunakan sepanjang praktikum.

Aktivitas 2 — Sub Query di Klausa SELECT

Percobaan 2.1 — Mencoba sub query yang menghasilkan lebih dari satu baris

SELECT (
    SELECT salary
    FROM employee
);

Percobaan ini digunakan untuk menunjukkan bahwa sub query di klausa SELECT tidak boleh menghasilkan lebih dari satu baris.

Percobaan 2.2 — Menggunakan sub query dengan satu nilai tunggal

SELECT (
    SELECT MAX(salary)
    FROM employee
) AS maxSalary;

Perintah ini digunakan untuk menampilkan hasil sub query berupa satu nilai tunggal, yaitu salary tertinggi.

Percobaan 2.3 — Menggunakan hasil sub query SELECT sebagai alias

SELECT e.first_name, e.last_name,
       (SELECT MAX(salary) FROM employee) AS MaxSalary
FROM employee e
WHERE e.salary = MaxSalary;

Percobaan ini digunakan untuk menunjukkan bahwa alias dari sub query di klausa SELECT tidak dapat langsung digunakan pada klausa WHERE karena urutan eksekusi query.

Aktivitas 3 — Sub Query di Klausa FROM

Percobaan 3.1 — Membuat inline view sederhana

SELECT *
FROM (
    SELECT first_name, last_name
    FROM employee
    WHERE city LIKE 'Vancouver'
) AS VancouverEmp;

Perintah ini digunakan untuk membuat relasi sementara yang berisi employee dari kota Vancouver.

Percobaan 3.2 — Join dengan hasil sub query di klausa FROM

SELECT e.first_name, e.last_name, VancouverEmp.city
FROM employee e
JOIN (
    SELECT id, city
    FROM employee
    WHERE city LIKE 'Vancouver'
) AS VancouverEmp
ON e.id = VancouverEmp.id;

Perintah ini menunjukkan bahwa hasil sub query di klausa FROM dapat diperlakukan seperti tabel sementara dan di-join kembali dengan tabel asli.

Percobaan 3.3 — Menggunakan sub query untuk mencari salary tertinggi

SELECT *
FROM employee e,
     (SELECT MAX(salary) AS maxSalary FROM employee) AS MaxSalary
WHERE e.salary = MaxSalary.maxSalary;

Perintah ini digunakan untuk mengambil employee yang memiliki salary tertinggi dengan memanfaatkan hasil sub query di klausa FROM.

Aktivitas 4 — Sub Query di Klausa WHERE

Percobaan 4.1 — Menampilkan employee dengan salary tertinggi

SELECT first_name, last_name, salary
FROM employee
WHERE salary = (SELECT MAX(salary) FROM employee);

Perintah ini digunakan untuk menampilkan employee yang memiliki salary tertinggi.

Percobaan 4.2 — Mencoba operator = pada sub query yang menghasilkan banyak baris

SELECT first_name, last_name, city
FROM employee
WHERE city = (
    SELECT city
    FROM employee
    WHERE city LIKE 'Vancouver'
);

Percobaan ini digunakan untuk menunjukkan bahwa operator = tidak dapat digunakan jika sub query menghasilkan lebih dari satu baris.

Aktivitas 5 — Sub Query dengan ALL

Percobaan 5.1 — Menggunakan operator ALL

SELECT first_name, last_name, salary
FROM employee
WHERE salary > ALL(
    SELECT salary
    FROM employee
    WHERE salary < 2000
);

Perintah ini digunakan untuk menampilkan employee yang salary-nya lebih besar daripada semua salary employee yang kurang dari 2000.

Aktivitas 6 — Sub Query dengan ANY dan SOME

Percobaan 6.1 — Menggunakan operator ANY

SELECT first_name, last_name, salary
FROM employee
WHERE salary > ANY(
    SELECT salary
    FROM employee
    WHERE salary < 2000
);

Perintah ini digunakan untuk menampilkan employee yang salary-nya lebih besar dari setidaknya satu nilai salary yang kurang dari 2000.

Percobaan 6.2 — Menggunakan operator SOME

SELECT first_name, last_name, salary
FROM employee
WHERE salary > SOME(
    SELECT salary
    FROM employee
    WHERE salary < 2000
);

Perintah ini digunakan untuk menunjukkan bahwa SOME adalah alias dari ANY dan menghasilkan perilaku yang sama.

Aktivitas 7 — Sub Query dengan EXISTS dan NOT EXISTS

Percobaan 7.1 — Menggunakan EXISTS

SELECT first_name, last_name, city
FROM employee
WHERE EXISTS (
    SELECT *
    FROM employee
    WHERE city = 'Toronto'
);

Perintah ini digunakan untuk menunjukkan bahwa query utama akan dijalankan jika sub query menghasilkan data.

Percobaan 7.2 — Menggunakan NOT EXISTS

SELECT first_name, last_name, city
FROM employee
WHERE NOT EXISTS (
    SELECT *
    FROM employee
    WHERE city = 'Toronto'
);

Perintah ini digunakan untuk menunjukkan bahwa query utama hanya dijalankan jika sub query tidak memiliki hasil.

Aktivitas 8 — Sub Query dengan IN

Percobaan 8.1 — Membuat tabel job

CREATE TABLE job (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(20)
);

Tabel ini digunakan untuk menyimpan daftar pekerjaan yang akan dibandingkan dengan kolom description pada tabel employee.

Percobaan 8.2 — Mengisi data pada tabel job

INSERT INTO job VALUES
(1, 'Tester'),
(2, 'Accountant'),
(3, 'Programmer'),
(4, 'Professor');

Percobaan 8.3 — Menampilkan isi tabel job

SELECT * FROM job;

Percobaan 8.4 — Menggunakan IN dengan sub query

SELECT first_name, last_name, description
FROM employee
WHERE description IN (
    SELECT title
    FROM job
);

Perintah ini digunakan untuk menampilkan employee yang deskripsi pekerjaannya termasuk di dalam daftar title pada tabel job.

Catatan Akhir Aktivitas

Seluruh percobaan pada halaman ini disusun mengikuti alur modul pertemuan 4, mulai dari sub query di klausa SELECT, FROM, dan WHERE, hingga penggunaan operator ALL, ANY, SOME, EXISTS, NOT EXISTS, dan IN. Dengan menyelesaikan seluruh aktivitas ini, mahasiswa diharapkan tidak hanya mampu menuliskan sub query, tetapi juga memahami bagaimana sub query digunakan untuk membangun query yang lebih bertingkat, logis, dan sesuai kebutuhan informasi.