Pertemuan 2: Tabel dan Manipulasi Data
Pada pertemuan ini, mahasiswa akan mulai mempelajari inti pengelolaan data dalam MySQL, yaitu bagaimana tabel dibuat, bagaimana struktur tabel dirancang, dan bagaimana data di dalamnya dikelola. Jika pada pertemuan sebelumnya pembahasan masih berfokus pada pengenalan MySQL dan penggunaan perintah dasar melalui terminal, maka pada pertemuan ini pembelajaran mulai diarahkan pada objek utama dalam basis data relasional, yaitu tabel, beserta berbagai aturan yang mengikatnya.
Modul ini disusun untuk membantu mahasiswa memahami bahwa pengelolaan basis data tidak cukup hanya dengan membuat database. Di dalam praktik nyata, mahasiswa juga perlu memahami cara memilih tipe data yang tepat, menetapkan aturan pada kolom, menjaga keterkaitan antar tabel, memodifikasi struktur tabel, serta mengelola isi tabel melalui proses penambahan, perubahan, penyalinan, penggantian, dan penghapusan data. Dengan demikian, pembelajaran pada pertemuan ini tidak hanya berorientasi pada sintaks, tetapi juga pada logika perancangan dan pengelolaan tabel secara sistematis.
Secara umum, modul ini memuat tujuan pembelajaran, gambaran umum materi, materi inti yang menjelaskan konsep-konsep utama, dan aktivitas praktikum yang berisi rangkaian percobaan untuk menerapkan konsep tersebut secara langsung. Susunan ini dirancang agar mahasiswa terlebih dahulu memahami landasan materi sebelum masuk ke bagian praktik, sehingga setiap perintah yang dijalankan nantinya dapat dipahami alasan dan fungsinya.
Tujuan Pembelajaran
Setelah mengikuti praktikum pada pertemuan ini, mahasiswa diharapkan mampu:
- menjelaskan konsep tabel sebagai objek utama penyimpanan data dalam basis data relasional,
- memilih tipe data yang sesuai untuk kolom berdasarkan jenis data yang akan disimpan,
- menjelaskan fungsi primary key, unique, dan foreign key dalam menjaga konsistensi data,
- membuat tabel dengan aturan dasar seperti NOT NULL, DEFAULT, AUTO_INCREMENT, dan PRIMARY KEY,
- memahami konsep referential integrity dalam hubungan antar tabel,
- menjelaskan penggunaan IF NOT EXISTS, CREATE TABLE … SELECT, dan CREATE TEMPORARY TABLE,
- memodifikasi struktur tabel menggunakan ALTER TABLE,
- menjelaskan berbagai bentuk manipulasi data menggunakan INSERT, UPDATE, REPLACE, DELETE, TRUNCATE, dan DROP TABLE.
Gambaran Umum
Topik utama pada pertemuan ini adalah tabel dan manipulasi data. Dalam MySQL, tabel merupakan tempat utama untuk menyimpan data secara terstruktur. Oleh karena itu, langkah pertama yang perlu dipahami adalah bagaimana tabel dibuat, bagaimana kolom-kolomnya didefinisikan, dan bagaimana aturan pada setiap kolom diterapkan agar data yang disimpan tetap konsisten.
Pembahasan dimulai dari pembuatan tabel menggunakan CREATE TABLE, kemudian dilanjutkan dengan pengenalan tipe data yang umum digunakan di MySQL, seperti tipe data teks, numerik, serta tanggal dan waktu. Setelah itu, mahasiswa akan mempelajari bagaimana sebuah kolom dapat diberi aturan tertentu, misalnya sebagai primary key untuk membedakan setiap record, sebagai unique untuk mencegah nilai ganda, atau sebagai foreign key untuk menghubungkan data antar tabel.
Selain membahas struktur tabel, modul ini juga menjelaskan bagaimana struktur tersebut dapat dimodifikasi menggunakan ALTER TABLE, misalnya untuk menambah kolom, mengubah definisi kolom, menambahkan primary key, atau mengganti nama tabel. Setelah struktur tabel dipahami, pembahasan dilanjutkan ke manipulasi data, yaitu bagaimana data dimasukkan, disalin, diperbarui, diganti, dihapus, atau dibersihkan dari tabel.
Secara garis besar, pertemuan ini dirancang agar mahasiswa tidak hanya mampu membuat tabel, tetapi juga memahami bagaimana tabel tersebut dirancang, dijaga konsistensinya, dan dikelola isinya dengan benar. Dengan fondasi ini, mahasiswa akan lebih siap memasuki materi-materi berikutnya yang lebih kompleks dalam pengelolaan basis data relasional.
Materi Inti
1. Konsep Tabel dalam MySQL
Tabel adalah objek utama dalam basis data relasional yang digunakan untuk menyimpan data dalam bentuk baris dan kolom. Setiap tabel memiliki nama, kumpulan kolom, tipe data untuk setiap kolom, dan aturan tertentu yang mengatur bagaimana data boleh dimasukkan. Dalam MySQL, tabel dibuat menggunakan perintah CREATE TABLE.
Secara sederhana, kolom berfungsi untuk mendefinisikan jenis data yang akan disimpan, sedangkan baris menyimpan record atau data aktual. Karena itulah, sebelum sebuah tabel dibuat, perancang basis data harus menentukan informasi apa yang perlu disimpan, bagaimana bentuk datanya, dan aturan apa saja yang harus diberlakukan agar data tetap valid.
2. Tipe Data pada MySQL
Tipe data dalam MySQL terdiri atas beberapa jenis. Pemilihan tipe data yang tepat sangat penting karena akan berpengaruh pada bentuk data yang dapat disimpan, efisiensi ruang penyimpanan, serta proses pengolahan data di dalam tabel.
2.1 Tipe Data Teks
Tipe data teks digunakan untuk menyimpan data berupa karakter, kata, kalimat, maupun data biner tertentu. Beberapa tipe data teks pada MySQL adalah sebagai berikut.
| Tipe Data | Keterangan |
|---|---|
CHAR() | Menyimpan data teks dengan panjang tetap, dari 0 sampai 255 karakter. |
VARCHAR() | Menyimpan data teks dengan panjang berubah-ubah, dari 0 sampai 255 karakter. |
TINYTEXT | Menyimpan string dengan panjang maksimum 255 karakter. |
TEXT | Menyimpan string dengan panjang maksimum 65535 karakter. |
BLOB | Menyimpan data biner dengan panjang maksimum 65535 byte. |
MEDIUMTEXT | Menyimpan string dengan panjang maksimum 16777215 karakter. |
MEDIUMBLOB | Menyimpan data biner dengan panjang maksimum 16777215 byte. |
LONGTEXT | Menyimpan string dengan panjang maksimum 4294967295 karakter. |
LONGBLOB | Menyimpan data biner dengan panjang maksimum 4294967295 byte. |
ENUM(value1, value2, ...) | Menyimpan satu nilai yang dipilih dari daftar nilai yang telah ditentukan. ENUM dapat memiliki maksimum 65535 nilai berbeda. |
SET(value1, value2, ...) | Menyimpan nol atau lebih nilai, masing-masing dipilih dari daftar nilai yang telah ditentukan. SET dapat memiliki maksimum 64 anggota. |
2.2 Tipe Data Numerik
Tipe data numerik digunakan untuk menyimpan bilangan bulat maupun bilangan pecahan. Beberapa tipe data numerik pada MySQL adalah sebagai berikut.
| Tipe Data | Keterangan |
|---|---|
TINYINT() | Rentang nilai -128 sampai 127 untuk signed, atau 0 sampai 255 untuk unsigned. |
SMALLINT() | Rentang nilai -32768 sampai 32767 untuk signed, atau 0 sampai 65535 untuk unsigned. |
MEDIUMINT() | Rentang nilai -8388608 sampai 8388607 untuk signed, atau 0 sampai 16777215 untuk unsigned. |
INT() | Rentang nilai -2147483648 sampai 2147483647 untuk signed, atau 0 sampai 4294967295 untuk unsigned. |
BIGINT() | Rentang nilai -9223372036854775808 sampai 9223372036854775807 untuk signed, atau 0 sampai 18446744073709551615 untuk unsigned. |
FLOAT(M,D) | Menyimpan bilangan pecahan dengan presisi tunggal. |
DOUBLE(M,D) | Menyimpan bilangan pecahan dengan presisi ganda. |
DECIMAL(M,D) | Menyimpan bilangan pecahan dengan titik desimal tetap. |
BIT() | Menyimpan nilai bit, yaitu 0 atau 1. |
Pada tipe data numerik FLOAT, DOUBLE, dan DECIMAL, nilai M menunjukkan jumlah digit keseluruhan, sedangkan D menunjukkan jumlah digit di belakang koma. Sebagai contoh, jika sebuah kolom didefinisikan sebagai FLOAT(7,4), maka bentuk nilainya dapat tampak seperti 999.9999.
2.3 Tipe Data Tanggal dan Waktu
Tipe data tanggal dan waktu digunakan untuk menyimpan data yang berkaitan dengan tanggal, jam, atau gabungan keduanya. Beberapa tipe data yang umum digunakan adalah sebagai berikut.
| Tipe Data | Format |
|---|---|
DATE | YYYY-MM-DD |
DATETIME | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | YYYYMMDDHHMMSS |
YEAR | YYYY |
TIME | HH:MM:SS |
Pemilihan tipe data tanggal dan waktu yang tepat akan memudahkan proses penyimpanan, pencarian, dan pengolahan data berbasis waktu di dalam MySQL.
3. Aturan Dasar pada Kolom
Selain tipe data, setiap kolom dapat diberi aturan tertentu agar data yang masuk tetap sesuai dengan kebutuhan tabel.
| Aturan | Fungsi |
|---|---|
NOT NULL | Kolom tidak boleh kosong |
DEFAULT | Memberi nilai awal jika data tidak diisi |
AUTO_INCREMENT | Menambah nilai otomatis secara berurutan |
PRIMARY KEY | Menjadikan kolom sebagai identitas unik tabel |
UNIQUE | Mencegah nilai duplikat pada kolom tertentu |
Aturan-aturan ini sangat penting karena membantu menjaga konsistensi dan validitas data sejak awal proses penyimpanan.
4. Primary Key dan AUTO_INCREMENT
Primary key adalah atribut yang digunakan untuk membedakan satu record dengan record lainnya di dalam tabel. Setiap tabel sebaiknya memiliki satu primary key agar setiap baris data dapat dikenali secara unik. Dalam banyak kasus, primary key digabungkan dengan AUTO_INCREMENT, sehingga nilai identitas akan bertambah otomatis ketika data baru dimasukkan.
Dengan cara ini, pengguna tidak perlu menuliskan nilai id secara manual setiap kali menambahkan data. Pola ini sangat sering digunakan pada tabel-tabel utama karena mempermudah identifikasi dan relasi antar data.
5. Constraint UNIQUE
Constraint UNIQUE digunakan untuk memastikan bahwa nilai pada suatu kolom tidak boleh sama. Aturan ini diperlukan pada data-data tertentu yang secara logika memang harus unik, misalnya nomor plat kendaraan, alamat email, nomor induk, atau username.
Jika pengguna mencoba memasukkan nilai yang sudah ada pada kolom yang diberi constraint UNIQUE, maka MySQL akan menolak data tersebut. Dengan demikian, kualitas data dapat lebih terjaga karena duplikasi dapat dicegah secara otomatis.
6. Parameter IF NOT EXISTS
Pada saat membuat tabel, terkadang pengguna ingin memastikan bahwa tabel yang sama tidak dibuat berulang kali. Untuk itu, MySQL menyediakan parameter IF NOT EXISTS.
Dengan menggunakan parameter ini, MySQL akan memeriksa terlebih dahulu apakah tabel yang dimaksud sudah ada atau belum. Jika tabel sudah tersedia, perintah tidak akan membuat tabel baru lagi. Fitur ini sangat membantu untuk mencegah error saat menjalankan skrip SQL berulang kali.
7. Membuat Tabel dari Hasil Query
Selain membuat tabel secara manual, MySQL juga mendukung pembuatan tabel dari hasil query menggunakan pola CREATE TABLE … SELECT. Cara ini berguna ketika pengguna ingin membuat tabel baru yang isinya berasal dari tabel lain, baik seluruh data maupun data hasil penyaringan tertentu.
Pendekatan ini praktis untuk menyalin data, membuat tabel cadangan, atau membentuk tabel baru berdasarkan kriteria tertentu tanpa harus mengisi data satu per satu.
8. Temporary Table
Temporary table adalah tabel sementara yang hanya terlihat pada sesi koneksi yang sedang aktif. Selama koneksi masih terbuka, tabel ini dapat digunakan seperti tabel biasa. Namun, ketika koneksi ditutup, temporary table akan hilang secara otomatis.
Jenis tabel ini biasanya digunakan untuk kebutuhan pengolahan data sementara, pengujian, atau langkah perantara dalam proses manipulasi data. Pada modul, temporary table diperkenalkan untuk menunjukkan bahwa tidak semua tabel bersifat permanen. Temporary table hanya terlihat pada koneksi aktif dan akan terhapus setelah koneksi berakhir.
9. Foreign Key dan Referential Integrity
Dalam basis data relasional, data pada satu tabel sering kali berhubungan dengan data pada tabel lain. Hubungan ini dijaga menggunakan foreign key, yaitu kolom pada sebuah tabel yang merujuk ke primary key pada tabel lain.
Konsep yang dijaga oleh foreign key disebut referential integrity, yaitu konsistensi hubungan antar data agar tidak muncul data yang tidak memiliki referensi yang sah. Pada modul ini, contoh foreign key dibuat menggunakan engine InnoDB, karena engine ini mendukung foreign key dan membantu menjaga referential integrity. Selain itu, modul juga menegaskan bahwa InnoDB mendukung konsep ACID, sehingga cocok digunakan ketika integritas data menjadi perhatian penting.
Secara umum, terdapat beberapa jenis aksi referential integrity yang biasa digunakan pada ON UPDATE dan ON DELETE.
| Aksi | Penjelasan |
|---|---|
RESTRICT | Menolak perubahan atau penghapusan pada tabel induk jika masih ada data pada tabel anak yang mereferensikannya |
NO ACTION | Secara praktik sama dengan RESTRICT, yaitu tidak mengizinkan perubahan jika referensi masih ada |
CASCADE | Perubahan atau penghapusan pada tabel induk akan diteruskan ke tabel anak yang terkait |
SET NULL | Jika data pada tabel induk berubah atau dihapus, nilai foreign key pada tabel anak akan diubah menjadi NULL |
10. Modifikasi Struktur Tabel dengan ALTER TABLE
Setelah tabel dibuat, strukturnya masih dapat diubah sesuai kebutuhan. Pada MySQL, perubahan struktur tabel dilakukan menggunakan perintah ALTER TABLE.
Beberapa bentuk perubahan yang umum dilakukan antara lain:
| Operasi | Fungsi |
|---|---|
ADD COLUMN | Menambahkan kolom baru |
ADD PRIMARY KEY | Menambahkan primary key |
ADD UNIQUE | Menambahkan constraint unique |
CHANGE | Mengganti nama kolom sekaligus definisinya |
MODIFY | Mengubah definisi kolom |
DROP COLUMN | Menghapus kolom |
DROP PRIMARY KEY | Menghapus primary key |
RENAME | Mengganti nama tabel |
Dengan ALTER TABLE, tabel yang sudah ada tidak harus dibuat ulang dari awal ketika terjadi kebutuhan perubahan desain.
11. Manipulasi Data
Setelah struktur tabel selesai, langkah berikutnya adalah mengelola isi data di dalamnya. Beberapa bentuk manipulasi data yang penting dipahami pada pertemuan ini adalah sebagai berikut.
a. INSERT
Perintah INSERT digunakan untuk menambahkan data ke dalam tabel. Data dapat dimasukkan dengan menuliskan seluruh nilai sesuai urutan kolom, dengan menyebutkan kolom tertentu saja, atau dengan menambahkan beberapa baris sekaligus dalam satu perintah. MySQL juga mendukung INSERT … SELECT untuk menyalin data dari tabel lain.
b. UPDATE
Perintah UPDATE digunakan untuk mengubah data yang sudah ada. Perubahan dapat dilakukan berdasarkan kondisi tertentu atau berdasarkan nilai yang sedang dimiliki kolom tersebut.
c. REPLACE
Perintah REPLACE memiliki bentuk mirip dengan INSERT, tetapi digunakan untuk menggantikan data yang sudah ada apabila nilai primary key atau unique key yang dimasukkan sama dengan data sebelumnya.
d. DELETE
Perintah DELETE digunakan untuk menghapus baris data tertentu dari tabel berdasarkan kondisi yang diberikan.
e. TRUNCATE TABLE
Perintah TRUNCATE TABLE digunakan untuk menghapus seluruh isi tabel dengan cepat, tetapi struktur tabel tetap dipertahankan.
f. DROP TABLE
Perintah DROP TABLE digunakan untuk menghapus tabel secara keseluruhan, termasuk struktur dan seluruh data di dalamnya.
Penutup Pengantar
Sebelum masuk ke aktivitas praktikum, mahasiswa perlu memahami bahwa seluruh materi pada pertemuan ini saling berhubungan. Tipe data, constraint, primary key, foreign key, referential integrity, modifikasi struktur tabel, dan manipulasi data bukanlah bagian yang berdiri sendiri, melainkan komponen yang bersama-sama membentuk pengelolaan tabel yang baik dalam basis data relasional. Dengan memahami materi inti ini terlebih dahulu, mahasiswa akan lebih mudah mengikuti percobaan praktikum secara runtut dan memahami alasan di balik setiap perintah yang dijalankan.