Pengantar Sistem Basis Data — Pertemuan 1
Mengenal peran perangkat lunak pengelola basis data (DBMS) dan cara berinteraksi langsung dengannya melalui baris perintah (CLI) pada MySQL.
Basis data (database) adalah kumpulan data yang terorganisir sedemikian rupa sehingga dapat disimpan, diakses, dan dikelola secara efisien. Bayangkan basis data seperti lemari arsip digital: data tidak sekadar ditumpuk, tetapi disusun dalam tabel-tabel dengan struktur yang jelas agar mudah dicari dan diperbarui.
Namun, sebuah lemari arsip tidak berguna tanpa seseorang yang tahu cara menata, mengunci, dan mengambil berkas di dalamnya. Di sinilah peran DBMS dibutuhkan.
DBMS (Database Management System) adalah perangkat lunak yang bertugas mengelola basis data — mulai dari menyimpan, mengambil, mengubah, menghapus, hingga mengamankan data. Semua interaksi pengguna maupun aplikasi terhadap data selalu melewati DBMS, tidak pernah menyentuh berkas data secara langsung.
DBMS adalah perantara (middleman) antara pengguna/aplikasi dengan data fisik yang tersimpan di media penyimpanan, sekaligus penjaga aturan agar data tetap konsisten dan aman.
Secara garis besar, sebuah DBMS terdiri atas tiga lapisan yang saling berkaitan:
Ketika pengguna mengetikkan perintah SELECT * FROM mahasiswa, permintaan itu tidak langsung membaca berkas — ia diterjemahkan, dioptimalkan, dan dieksekusi oleh mesin DBMS sebelum hasilnya dikembalikan.
| DBMS | Jenis | Karakteristik singkat |
|---|---|---|
| MySQL | Relasional (SQL) | Open source, populer untuk aplikasi web |
| PostgreSQL | Relasional (SQL) | Kaya fitur, mendukung tipe data kompleks |
| Oracle Database | Relasional (SQL) | Berbayar, umum di skala enterprise |
| SQL Server | Relasional (SQL) | Buatan Microsoft, terintegrasi dengan ekosistem .NET |
| MongoDB | NoSQL (dokumen) | Menyimpan data berbentuk dokumen JSON/BSON |
Materi ini akan berfokus pada MySQL sebagai studi kasus, khususnya cara berinteraksi dengannya melalui antarmuka baris perintah.
CLI (Command Line Interface) adalah cara berinteraksi dengan program melalui perintah teks, tanpa antarmuka grafis. Untuk MySQL, CLI berupa program bernama mysql yang dijalankan dari terminal atau command prompt.
Meski terlihat "kuno" dibanding aplikasi seperti phpMyAdmin atau MySQL Workbench, CLI penting dipelajari karena:
Perintah dasar untuk membuka sesi MySQL dari terminal:
$ mysql -u root -p Enter password: **** Welcome to the MySQL monitor... mysql>
Penjelasan opsi yang digunakan:
| Opsi | Keterangan |
|---|---|
-u | diikuti nama pengguna (username) MySQL |
-p | meminta kata sandi secara interaktif |
-h | menentukan host/server, mis. -h 127.0.0.1 jika bukan localhost |
-P | menentukan port, default MySQL adalah 3306 |
$ mysql -h 127.0.0.1 -P 3306 -u siakad_user -p
Setelah berhasil masuk, prompt akan berubah menjadi mysql>. Berikut perintah-perintah dasar yang wajib dikuasai.
SHOW DATABASES; -- menampilkan seluruh basis data yang ada USE nama_basis_data; -- berpindah/memilih basis data yang akan digunakan
SHOW TABLES; -- menampilkan seluruh tabel pada basis data aktif DESCRIBE mahasiswa; -- menampilkan struktur kolom tabel mahasiswa
CREATE DATABASE kampus; USE kampus; CREATE TABLE mahasiswa ( id INT AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(100) NOT NULL, nim VARCHAR(20) UNIQUE );
INSERT INTO mahasiswa (nama, nim) VALUES ('Andi', '2201001'); SELECT * FROM mahasiswa; UPDATE mahasiswa SET nama = 'Andi Saputra' WHERE id = 1; DELETE FROM mahasiswa WHERE id = 1;
EXIT; -- atau ketik: QUIT;
Setiap perintah SQL di CLI MySQL harus diakhiri titik koma ;. Tanpa itu, MySQL akan menganggap perintah belum selesai dan menunggu baris berikutnya.
Data pada basis data relasional jarang disimpan dalam satu tabel besar. Sebaliknya, data dipecah ke beberapa tabel yang saling berelasi agar tidak ada duplikasi dan lebih mudah dikelola. Relasi inilah yang membedakan basis data relasional dari sekadar kumpulan spreadsheet.
Relasi dibangun menggunakan dua elemen kunci:
id pada tabel program_studi.Foreign key adalah "petunjuk arah" dari satu tabel menuju baris tertentu di tabel lain, sehingga data yang berkaitan tidak perlu ditulis ulang di banyak tempat.
Hubungan antar tabel umumnya berbentuk salah satu dari tiga pola berikut:
| Jenis relasi | Contoh |
|---|---|
| One-to-many (satu ke banyak) | Satu program studi memiliki banyak mahasiswa |
| Many-to-many (banyak ke banyak) | Banyak mahasiswa mengambil banyak mata kuliah |
| One-to-one (satu ke satu) | Satu mahasiswa memiliki satu kartu tanda mahasiswa |
Melanjutkan tabel mahasiswa sebelumnya, berikut contoh relasi one-to-many dengan tabel program_studi:
CREATE TABLE program_studi ( id INT AUTO_INCREMENT PRIMARY KEY, nama_prodi VARCHAR(100) NOT NULL ); ALTER TABLE mahasiswa ADD COLUMN program_studi_id INT, ADD FOREIGN KEY (program_studi_id) REFERENCES program_studi(id);
Setelah relasi terbentuk, kolom program_studi_id pada tabel mahasiswa hanya boleh diisi nilai id yang benar-benar ada di tabel program_studi — inilah bentuk nyata dari integritas data yang dijaga oleh DBMS.
INNER JOIN digunakan untuk menggabungkan baris dari dua tabel berdasarkan kolom yang berelasi, dan hanya menampilkan baris yang memiliki pasangan cocok di kedua tabel.
SELECT mahasiswa.nama, mahasiswa.nim, program_studi.nama_prodi FROM mahasiswa INNER JOIN program_studi ON mahasiswa.program_studi_id = program_studi.id;
Bagian ON menentukan syarat pencocokan: baris mahasiswa hanya ikut ditampilkan jika nilai program_studi_id-nya cocok dengan salah satu id di tabel program_studi. Jika seorang mahasiswa belum memiliki program_studi_id, ia tidak akan muncul pada hasil INNER JOIN.
SELECT m.nama, m.nim, p.nama_prodi FROM mahasiswa AS m INNER JOIN program_studi AS p ON m.program_studi_id = p.id WHERE p.nama_prodi = 'Sistem Informasi';
Alias seperti m dan p membuat query lebih singkat dibaca, terutama saat melibatkan lebih dari dua tabel sekaligus.
INNER JOIN hanya menampilkan baris yang cocok di kedua tabel. Jika ingin tetap menampilkan baris yang tidak memiliki pasangan (misalnya mahasiswa tanpa program studi), gunakan LEFT JOIN — dibahas pada materi lanjutan.
latihan_basis_data.buku dengan kolom id, judul, dan tahun_terbit.INSERT.SELECT, lalu ubah salah satu judul buku menggunakan UPDATE.penerbit, tambahkan foreign key penerbit_id pada tabel buku, lalu tampilkan data gabungan judul buku beserta nama penerbitnya menggunakan INNER JOIN.