Indonesia: 4 July, 2024

Tutorial MySQL Part 20: Penggunaan Operator Exists Dan Not Exists Di MySQL

Melanjutkan tutorial sebelumnya mengenai Penggunaan Operator Perbandingan di MySQL, kali ini kita akan bahas Penggunaan Operator Exists Dan Not Exist di MySQL.

Operator EXISTS MySQL

Operator Exists digunakan untuk menguji keberadaan setiap record di dalam subquery

Subquery akan mengembalikan nilai true jika subquery mengembalikan satu atau lebih record.

Query EXISTS:

Penggunaan Operator Exists Dan Not Exists Di MySQL

Sekarang kita akan memahami penggunaan operator Exists, sebelum itu persiapkan dua buah tabel yaitu tabel biodata_mahasiswa dan tabel krs.

Tabel biodata_mahasiswa

CREATE TABLE biodata_mahasiswa (
id_mhs INT NOT NULL AUTO_INCREMENT,
nim VARCHAR (9) NOT NULL,
nama VARCHAR (50) NOT NULL,
jekel ENUM ('laki-laki', 'perempuan'),
PRIMARY KEY (id_mhs)
) ENGINE = InnoDB;

INSERT INTO biodata_mahasiswa VALUES 
(NULL,'191100111', 'Zoe Martin', 'laki-laki'),
(NULL, '191100112','Dwi Jane', 'perempuan'),
(NULL, '191100113','Ayra Mysha', 'perempuan'),
(NULL, '191100114','Azka Putra', 'laki-laki'),
(NULL, '191100115','Tyas Miranda', 'perempuan'),
(NULL, '191100116','Kayle Jane', 'perempuan'),
(NULL, '191100117','Regina Rajendra', 'perempuan');

Keterangan: id_mhs di set sebagai primary key

Tabel krs

CREATE TABLE krs (
id_krs INT NOT NULL AUTO_INCREMENT,
id_mhs INT NOT NULL,
matkul VARCHAR (50) NOT NULL,
sks INT (4) NOT NULL,
PRIMARY KEY (id_krs)
) ENGINE = InnoDB;

INSERT INTO krs VALUES 
(NULL, 1, 'Algoritma', 3),
(NULL, 2, 'Algoritma', 3),
(NULL, 1, 'Matematika', 4),
(NULL, 5, 'Sistem Basis Data', 3),
(NULL, 6, 'Kewarganegaraan', 2),
(NULL, 4, 'Matematika', 2);

Keterangan: id_krs di set sebagai primary key dan id_mhs  di set sebagai foreign key

Gunakan SELECT * FROM nama_tabel untuk melihat tabel yang sudah kita buat di atas:

MariaDB [mahasiswa]> SELECT * FROM biodata_mahasiswa;
+--------+-----------+-----------------+-----------+
| id_mhs | nim       | nama            | jekel     |
+--------+-----------+-----------------+-----------+
|      1 | 191100111 | Zoe Martin      | laki-laki |
|      2 | 191100112 | Dwi Jane        | perempuan |
|      3 | 191100113 | Ayra Mysha      | perempuan |
|      4 | 191100114 | Azka Putra      | laki-laki |
|      5 | 191100115 | Tyas Miranda    | perempuan |
|      6 | 191100116 | Kayle Jane      | perempuan |
|      7 | 191100117 | Regina Rajendra | perempuan |
+--------+-----------+-----------------+-----------+
7 rows in set (0.057 sec)

MariaDB [mahasiswa]> SELECT * FROM krs;
+--------+--------+-------------------+-----+
| id_krs | id_mhs | matkul            | sks |
+--------+--------+-------------------+-----+
|      1 |      1 | Algoritma         |   3 |
|      2 |      2 | Algoritma         |   3 |
|      3 |      1 | Matematika        |   4 |
|      4 |      5 | Sistem Basis Data |   3 |
|      5 |      6 | Kewarganegaraan   |   2 |
|      6 |      4 | Matematika        |   2 |
+--------+--------+-------------------+-----+
6 rows in set (0.001 sec)

Contoh Menggunakan Operator EXISTS

Kita akan melihat siapa saja mahasiswa yang sudah menyusun krs minimal mengambil satu mata kuliah

Perhatikan contoh berikut!

MariaDB [mahasiswa]> SELECT nim, nama
    -> FROM biodata_mahasiswa
    -> WHERE EXISTS
    -> (SELECT * FROM krs WHERE biodata_mahasiswa.id_mhs = krs.id_mhs);
+-----------+--------------+
| nim       | nama         |
+-----------+--------------+
| 191100111 | Zoe Martin   |
| 191100112 | Dwi Jane     |
| 191100114 | Azka Putra   |
| 191100115 | Tyas Miranda |
| 191100116 | Kayle Jane   |
+-----------+--------------+
5 rows in set (0.004 sec)

Penjelasan:

Hasil dari tabel di atas menjelaskan bahwa, mahasiswa yang sudah menyusun krs yaitu terdapat 5 orang

Lalu bagaimana cara mengetahui mahasiswa yang sama sekali belum menyusun krs?
Untuk mengetahuinya kita dapat menggunakan Operator NOT EXISTS.

Contoh Menggunakan Operator NOT EXISTS

Kita akan melihat siapa saja mahasiswa yang sama sekali belum menyusun krs

Perhatikan contoh berikut!

MariaDB [mahasiswa]> SELECT nim, nama
    -> FROM biodata_mahasiswa
    -> WHERE NOT EXISTS
    -> (SELECT * FROM krs WHERE biodata_mahasiswa.id_mhs = krs.id_mhs);
+-----------+-----------------+
| nim       | nama            |
+-----------+-----------------+
| 191100113 | Ayra Mysha      |
| 191100117 | Regina Rajendra |
+-----------+-----------------+
2 rows in set (0.004 sec)

Penjelasan:

Mahasiswa yang sama sekali belum menyusun krs ada dua orang yaitu Ayra dan Regina.

Kesimpulan:
Operator EXISTS merupakan operator boolean yang mengembalikan nilai true atau false. Operator ini digunakan untuk memeriksa keberadaan data di dalam subquery

Setelah memahami penggunaan operator EXIST dan NOT EXISTS di MySQL, pada materi selanjutnya kita akan pelajari Pengguanaan Operator AS (Alias) di MySQL

Selamat belajar, semoga bermanfaat!

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *