Pertemuan 3: SELECT Statement
Pada pertemuan ini, mahasiswa akan mempelajari salah satu bagian yang paling sering digunakan dalam pengelolaan basis data, yaitu SELECT statement. Jika pada pertemuan sebelumnya fokus pembelajaran diarahkan pada pembuatan tabel dan manipulasi data seperti menambah, mengubah, dan menghapus isi tabel, maka pada pertemuan ini pembahasan beralih pada bagaimana data yang telah tersimpan tersebut dapat diambil kembali sesuai kebutuhan.
Modul ini disusun untuk membantu mahasiswa memahami bahwa pengambilan data tidak selalu berarti menampilkan seluruh isi tabel apa adanya. Dalam praktik nyata, data sering kali perlu dipilih berdasarkan kolom tertentu, difilter dengan kondisi tertentu, diurutkan, dikelompokkan, dibatasi jumlah tampilannya, atau bahkan digabungkan dengan data dari tabel lain. Oleh karena itu, pembelajaran pada pertemuan ini tidak hanya berfokus pada sintaks SELECT, tetapi juga pada cara berpikir logis dalam menyusun query agar informasi yang dihasilkan benar-benar sesuai dengan kebutuhan.
Secara umum, modul ini memuat tujuan pembelajaran, gambaran umum materi, materi inti yang menjelaskan konsep-konsep penting dalam query SELECT, dan aktivitas praktikum yang berisi rangkaian percobaan untuk menerapkan konsep tersebut secara langsung. Dengan susunan ini, mahasiswa diharapkan terlebih dahulu memahami ide dasar di balik query sebelum masuk ke tahap praktik.
Tujuan Pembelajaran
Setelah mengikuti praktikum pada pertemuan ini, mahasiswa diharapkan mampu:
- memahami fungsi
SELECTuntuk mengambil data dari tabel, - menampilkan seluruh data atau kolom tertentu sesuai kebutuhan,
- memfilter data menggunakan
WHERE,AND,OR,LIKE, danBETWEEN, - menggunakan alias,
DISTINCT, danLIMITdalam query, - mengelompokkan, menghitung, menyaring, dan mengurutkan data dengan
GROUP BY,COUNT(),HAVING, danORDER BY, - memahami konsep join tabel dan menerapkan beberapa jenis join,
- melakukan
UPDATEdanDELETEdengan memanfaatkan join antar tabel.
Gambaran Umum
Topik utama pada pertemuan ini adalah query SELECT untuk mengambil dan mengolah tampilan data dari satu atau lebih tabel. Pembahasan dimulai dari bentuk dasar SELECT, yaitu memilih data dari suatu tabel, kemudian dilanjutkan dengan cara mengambil kolom tertentu saja, memberikan kondisi menggunakan WHERE, dan menggabungkan beberapa kondisi dengan operator logika.
Setelah itu, mahasiswa akan mempelajari beberapa fasilitas penting lain dalam query, seperti pemberian alias menggunakan AS, pencarian data teks dengan LIKE dan NOT LIKE, penampilan data unik menggunakan DISTINCT, pembatasan jumlah hasil query dengan LIMIT, serta pengelompokan data menggunakan GROUP BY dan COUNT(). Pembahasan juga dilengkapi dengan penggunaan HAVING, ORDER BY, dan BETWEEN untuk penyaringan dan pengurutan hasil query secara lebih terarah.
Pada bagian berikutnya, materi diperluas ke table join, yaitu teknik menggabungkan data dari dua atau lebih tabel yang saling berkaitan. Dalam bagian ini, mahasiswa akan mempelajari perbedaan antara Cartesian product, INNER JOIN, NATURAL JOIN, LEFT JOIN, dan RIGHT JOIN, serta memahami kapan masing-masing digunakan. Sebagai penutup, modul ini juga memperlihatkan bahwa join tidak hanya berguna untuk SELECT, tetapi juga dapat dimanfaatkan pada operasi UPDATE dan DELETE.
Secara garis besar, pertemuan ini dirancang agar mahasiswa tidak hanya mampu menampilkan data, tetapi juga mampu menyusun query yang lebih spesifik, terstruktur, dan informatif. Kemampuan ini akan menjadi fondasi penting untuk materi-materi berikutnya yang lebih lanjut dalam pengolahan data relasional.
Materi Inti
1. Bentuk Dasar SELECT
Perintah SELECT digunakan untuk mengambil data dari tabel. Bentuk dasarnya dapat dituliskan sebagai berikut.
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;Bagian what_to_select menunjukkan kolom atau informasi apa yang ingin ditampilkan. Jika ingin menampilkan seluruh kolom, dapat digunakan karakter *. Bagian which_table menunjukkan tabel sumber data, sedangkan WHERE bersifat opsional dan digunakan untuk menentukan kondisi data yang ingin dipilih.
2. Mengambil Seluruh Kolom atau Kolom Tertentu
Query SELECT dapat digunakan untuk menampilkan seluruh data dalam tabel, atau hanya kolom tertentu saja.
| Bentuk Query | Fungsi |
|---|---|
SELECT * FROM tabel; | Menampilkan seluruh kolom dari tabel |
SELECT kolom1, kolom2 FROM tabel; | Menampilkan kolom tertentu saja |
Kemampuan ini penting karena dalam praktik nyata, pengguna tidak selalu membutuhkan semua kolom sekaligus.
3. Memfilter Data dengan WHERE
WHERE digunakan untuk memilih data yang memenuhi kondisi tertentu. Kondisi ini dapat berupa perbandingan nilai, seperti sama dengan, lebih besar dari, kurang dari, dan sebagainya.
| Operator | Fungsi |
|---|---|
= | sama dengan |
> | lebih besar dari |
< | lebih kecil dari |
>= | lebih besar atau sama dengan |
<= | lebih kecil atau sama dengan |
<> atau != | tidak sama dengan |
Dengan WHERE, query menjadi lebih terarah karena hanya data tertentu saja yang ditampilkan.
4. Menggabungkan Kondisi dengan AND dan OR
Kondisi pada WHERE dapat digabung menggunakan operator logika AND dan OR.
| Operator | Fungsi |
|---|---|
AND | semua kondisi harus terpenuhi |
OR | salah satu kondisi cukup terpenuhi |
Operator AND memiliki prioritas lebih tinggi daripada OR, sehingga susunan kondisi perlu diperhatikan agar hasil query sesuai harapan.
5. Memberikan Alias dengan AS
Alias digunakan untuk mengganti nama kolom hasil query agar lebih mudah dibaca. Alias ditulis menggunakan keyword AS.
Contoh umum penggunaan alias adalah ketika hasil query berasal dari ekspresi atau gabungan kolom, misalnya CONCAT(first_name, ' ', last_name) AS name.
6. Pattern Matching dengan LIKE dan NOT LIKE
Untuk data bertipe teks, MySQL menyediakan fasilitas pencocokan pola menggunakan LIKE dan NOT LIKE.
| Simbol | Fungsi |
|---|---|
_ | mewakili tepat satu karakter |
% | mewakili sejumlah karakter, termasuk nol karakter |
LIKE digunakan untuk memilih data yang sesuai dengan pola tertentu, sedangkan NOT LIKE digunakan untuk mengecualikan pola tersebut.
7. Menampilkan Data Unik dengan DISTINCT
DISTINCT digunakan untuk menghilangkan duplikasi pada hasil query sehingga setiap nilai hanya ditampilkan satu kali. Fitur ini sangat berguna ketika ingin mengetahui daftar nilai unik dari suatu kolom, misalnya daftar kota atau daftar jenis pekerjaan.
8. Membatasi Hasil Query dengan LIMIT
LIMIT digunakan untuk membatasi jumlah baris data yang ditampilkan.
| Bentuk Query | Fungsi |
|---|---|
LIMIT n | menampilkan n data pertama |
LIMIT offset, jumlah | menampilkan data mulai posisi tertentu sebanyak jumlah tertentu |
Dalam MySQL, urutan data pada LIMIT dimulai dari indeks 0.
9. Mengelompokkan Data dengan GROUP BY dan COUNT()
GROUP BY digunakan untuk mengelompokkan hasil query berdasarkan kolom tertentu. Ketika data sudah dikelompokkan, fungsi agregasi seperti COUNT() dapat digunakan untuk menghitung jumlah anggota pada setiap kelompok.
| Fungsi | Kegunaan |
|---|---|
COUNT(*) | menghitung jumlah baris dalam setiap kelompok |
Dengan GROUP BY, query dapat digunakan untuk membuat ringkasan data, misalnya jumlah pegawai per kota atau jumlah pekerjaan tertentu pada setiap kelompok.
10. Penyaringan Lanjutan dengan HAVING
HAVING berfungsi sebagai penyaring lanjutan terhadap hasil query, terutama setelah GROUP BY. Secara konsep, WHERE menyaring data sebelum proses pengelompokan, sedangkan HAVING menyaring hasil setelah proses pengelompokan dilakukan.
Perbedaan ini penting karena urutan eksekusi query akan memengaruhi hasil yang diperoleh.
11. Mengurutkan Data dengan ORDER BY
ORDER BY digunakan untuk mengurutkan hasil query berdasarkan satu atau lebih kolom.
| Bentuk | Fungsi |
|---|---|
ORDER BY kolom | mengurutkan data secara naik (default) |
ORDER BY kolom ASC | mengurutkan data naik |
ORDER BY kolom DESC | mengurutkan data turun |
Pengurutan juga dapat dilakukan berdasarkan lebih dari satu kolom. Jika demikian, urutan pertama akan dijadikan prioritas utama, lalu diikuti kolom berikutnya.
12. Operator BETWEEN dan NOT BETWEEN
BETWEEN digunakan untuk memfilter data yang nilainya berada di antara dua nilai tertentu. Operator ini dapat digunakan baik untuk data numerik maupun alfanumerik.
| Operator | Fungsi |
|---|---|
BETWEEN nilai1 AND nilai2 | memilih data di antara dua nilai |
NOT BETWEEN nilai1 AND nilai2 | memilih data di luar rentang tersebut |
Operator ini membantu membuat query rentang data menjadi lebih ringkas.
13. Konsep Table Join
Dalam basis data relasional, data sering disimpan pada lebih dari satu tabel. Untuk mengambil data dari dua atau lebih tabel yang saling berkaitan, digunakan teknik join.
Sebelum melakukan join, tabel-tabel yang digunakan perlu memiliki hubungan logis, misalnya melalui kolom yang sama atau kolom yang saling mereferensi.
14. Cartesian Product
Cartesian product adalah hasil penggabungan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua. Dalam SQL, bentuk ini biasanya muncul ketika dua tabel ditulis bersama di bagian FROM tanpa kondisi penghubung yang membatasi hasilnya.
Sebagai ilustrasi, jika tabel pertama memiliki m baris dan tabel kedua memiliki n baris, maka hasil Cartesian product adalah m × n baris. Karena itu, hasilnya bisa menjadi sangat banyak.
Dalam MySQL, bentuk ini dapat ditulis sebagai berikut.
SELECT *
FROM tabel1, tabel2;Bentuk tersebut sama maknanya dengan CROSS JOIN, yaitu menghasilkan semua kemungkinan pasangan data dari kedua tabel. Pada praktiknya, Cartesian product biasanya bukan hasil akhir yang diinginkan, tetapi menjadi dasar pemahaman sebelum mahasiswa mempelajari join yang lebih terarah menggunakan kondisi tertentu.
15. Jenis-Jenis Join
a. Cross Join
CROSS JOIN adalah bentuk eksplisit dari Cartesian product. Join ini memasangkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua.
b. Inner Join atau Equi-Join
INNER JOIN menggabungkan data dari dua tabel berdasarkan nilai yang sama pada kolom yang dibandingkan. Pada materi ini, join dapat ditulis dalam beberapa bentuk:
FROM tabel1, tabel2 WHERE tabel1.kolom = tabel2.kolomINNER JOIN ... ON ...INNER JOIN ... USING (...)
c. Natural Join
NATURAL JOIN mirip dengan INNER JOIN, tetapi MySQL akan secara otomatis mencari kolom yang namanya sama pada kedua tabel dan menggunakannya sebagai dasar penggabungan.
d. Left Join
LEFT JOIN akan menampilkan seluruh data dari tabel sebelah kiri, meskipun tidak semua data tersebut memiliki pasangan pada tabel sebelah kanan. Jika tidak ada pasangan, maka bagian yang tidak diketahui akan ditampilkan sebagai NULL.
e. Right Join
RIGHT JOIN merupakan kebalikan dari LEFT JOIN, yaitu menampilkan seluruh data dari tabel sebelah kanan, meskipun tidak semuanya memiliki pasangan pada tabel sebelah kiri.
16. UPDATE dan DELETE Menggunakan Join
Join tidak hanya dapat digunakan pada SELECT, tetapi juga pada operasi lain seperti UPDATE dan DELETE.
UPDATEdengan join digunakan untuk memperbarui data pada suatu tabel berdasarkan informasi dari tabel lain.DELETEdengan join digunakan untuk menghapus data tertentu berdasarkan relasi dengan tabel lain.
Kemampuan ini sangat berguna ketika perubahan data harus dilakukan secara lebih spesifik berdasarkan hubungan antar tabel.
Penutup Pengantar
Sebelum masuk ke aktivitas praktikum, mahasiswa perlu memahami bahwa seluruh materi pada pertemuan ini saling berkaitan. SELECT, WHERE, GROUP BY, HAVING, ORDER BY, BETWEEN, Cartesian product, dan berbagai jenis join bukanlah bagian yang berdiri sendiri, melainkan fitur-fitur yang saling melengkapi dalam proses pengambilan dan pengolahan data. Dengan memahami materi inti ini terlebih dahulu, mahasiswa akan lebih mudah mengikuti percobaan praktikum secara runtut dan memahami alasan di balik setiap query yang dijalankan.