DML, DDL, dan DCL: Definisi, Contoh, dan Perbedaan Lengkap

Dalam dunia pengembangan database, seringkali kita mendengar istilah DML, DDL, dan DCL. Ketiga istilah ini sangat penting karena masing-masing memiliki peran yang berbeda dalam mengelola database.
Namun, bagi sebagian orang, ketiga istilah ini mungkin masih membingungkan. Dalam artikel ini, kita akan membahas apa itu DML, DDL, dan DCL, lengkap dengan contoh query, tabel perbandingan, dan studi kasus sederhana agar mudah dipahami.
Apa itu DML?
DML singkatan dari Data Manipulation Language. DML adalah bahasa yang digunakan untuk memanipulasi data dalam sebuah database — yaitu membaca, menambah, mengubah, dan menghapus isi tabel. Fungsi utama DML adalah untuk mengelola data dalam tabel. Berikut beberapa contoh DML:
SELECT
SELECT digunakan untuk menampilkan data yang sudah ada di dalam tabel.
Contoh:
SELECT * FROM nama_tabel;
Contoh yang lebih spesifik — menampilkan semua siswa yang terdaftar:
SELECT nama, kelas FROM siswa WHERE kelas = 'X-RPL-1';
INSERT
INSERT digunakan untuk menambahkan data baru ke dalam tabel.
Contoh:
INSERT INTO nama_tabel (kolom1, kolom2, kolom3) VALUES ('nilai1', 'nilai2', 'nilai3');
Contoh nyata:
INSERT INTO siswa (nama, kelas, alamat) VALUES ('Budi Santoso', 'X-RPL-1', 'Jl. Merdeka No. 10');
UPDATE
UPDATE digunakan untuk mengubah data yang sudah ada di dalam tabel.
Contoh:
UPDATE nama_tabel SET kolom1 = 'nilai1', kolom2 = 'nilai2' WHERE kondisi;
Contoh nyata:
UPDATE siswa SET kelas = 'X-RPL-2' WHERE nama = 'Budi Santoso';
DELETE
DELETE digunakan untuk menghapus data yang sudah ada di dalam tabel.
Contoh:
DELETE FROM nama_tabel WHERE kondisi;
Contoh nyata:
DELETE FROM siswa WHERE nama = 'Budi Santoso';
Apa itu DDL?
DDL singkatan dari Data Definition Language. DDL adalah bahasa yang digunakan untuk mendefinisikan struktur database — yaitu membuat, mengubah, atau menghapus tabel, indeks, dan objek database lainnya. Berbeda dengan DML yang mengelola isi tabel, DDL mengelola kerangka (struktur) tabel itu sendiri. Berikut beberapa contoh DDL:
CREATE
CREATE digunakan untuk membuat tabel baru di dalam database.
Contoh:
CREATE TABLE nama_tabel (
kolom1 tipe_data1,
kolom2 tipe_data2,
kolom3 tipe_data3,
PRIMARY KEY (kolom1)
);
Contoh nyata:
CREATE TABLE siswa (
id INT AUTO_INCREMENT,
nama VARCHAR(100) NOT NULL,
kelas VARCHAR(20) NOT NULL,
alamat TEXT,
PRIMARY KEY (id)
);
ALTER
ALTER digunakan untuk mengubah struktur tabel yang sudah ada — misalnya menambah, menghapus, atau mengubah kolom.
Contoh:
ALTER TABLE nama_tabel ADD kolom_baru tipe_data;
Contoh nyata:
ALTER TABLE siswa ADD no_hp VARCHAR(15);
DROP
DROP digunakan untuk menghapus tabel atau indeks yang sudah ada di dalam database.
Contoh:
DROP TABLE nama_tabel;
Apa itu DCL?
DCL singkatan dari Data Control Language. DCL adalah bahasa yang digunakan untuk mengontrol akses ke database — yaitu memberikan atau mencabut hak akses pengguna. Fungsi utama DCL adalah untuk mengatur siapa saja yang boleh mengakses database dan apa saja yang boleh dilakukannya. Berikut beberapa contoh DCL:
GRANT
GRANT digunakan untuk memberikan hak akses kepada pengguna.
Contoh:
GRANT SELECT, INSERT, UPDATE, DELETE ON nama_tabel TO nama_pengguna;
Contoh nyata:
GRANT SELECT, INSERT, UPDATE, DELETE ON perpustakaan.* TO 'petugas'@'localhost';
REVOKE
REVOKE digunakan untuk mencabut hak akses dari pengguna.
Contoh:
REVOKE SELECT, INSERT, UPDATE, DELETE ON nama_tabel FROM nama_pengguna;
Contoh nyata:
REVOKE DELETE ON perpustakaan.* FROM 'petugas'@'localhost';
Tabel Perbandingan DML, DDL, dan DCL
Agar lebih mudah dipahami, berikut tabel perbandingan lengkap antara DML, DDL, dan DCL:
| Aspek | DML | DDL | DCL |
|---|---|---|---|
| Kepanjangan | Data Manipulation Language | Data Definition Language | Data Control Language |
| Fungsi | Memanipulasi isi data | Mendefinisikan struktur database | Mengontrol hak akses pengguna |
| Objek yang dimanipulasi | Data dalam tabel (rows) | Struktur tabel & database | Hak akses / izin pengguna |
| Syntax utama | SELECT, INSERT, UPDATE, DELETE | CREATE, ALTER, DROP | GRANT, REVOKE |
| Pengguna yang memakai | Developer, aplikasi | Database Administrator (DBA) | Database Administrator (DBA) |
| Rollback (umumnya) | Dapat di-rollback (dalam transaksi) | Tidak dapat di-rollback (auto-commit) | Tidak dapat di-rollback |
| Contoh operasi | Lihat data siswa, tambah data penjualan | Buat tabel baru, tambah kolom | Beri akses ke user, cabut akses |
Studi Kasus: Membangun Database Sekolah
Supaya lebih paham, mari kita lihat bagaimana ketiga bahasa ini bekerja sama dalam satu proyek nyata: membuat database sekolah sederhana.
Langkah 1: DDL — Buat Struktur
CREATE DATABASE sekolah;
USE sekolah;
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
kelas VARCHAR(20) NOT NULL
);
CREATE TABLE guru (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
mapel VARCHAR(50) NOT NULL
);
Langkah 2: DML — Isi Data
INSERT INTO siswa (nama, kelas) VALUES ('Ani', 'X-RPL-1'), ('Budi', 'X-RPL-1');
UPDATE siswa SET kelas = 'X-RPL-2' WHERE nama = 'Budi';
SELECT * FROM siswa WHERE kelas = 'X-RPL-1';
Langkah 3: DCL — Atur Hak Akses
-- Buat user petugas yang hanya boleh mengelola data siswa
CREATE USER 'petugas'@'localhost' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE ON sekolah.siswa TO 'petugas'@'localhost';
-- Petugas tidak boleh menghapus data
REVOKE DELETE ON sekolah.siswa FROM 'petugas'@'localhost';
Langkah 4 (Bonus): Transaksi dan Rollback
Nah ini yang sering bikin bingung pemula: gimana caranya kalau kita mau coba-coba ubah data dulu, tapi siap-siap “membatalkan” kalau ternyata salah? jawabannya pakai transaction. dari pengalaman saya, ini kebiasaan yang cukup membantu waktu development — kalau query DML yang saya jalankan ternyata keliru, saya tinggal ROLLBACK tanpa perlu restore backup database dari awal.
START TRANSACTION;
UPDATE siswa SET kelas = 'X-RPL-3' WHERE nama = 'Ani';
-- cek dulu hasilnya sebelum yakin
SELECT * FROM siswa WHERE nama = 'Ani';
-- kalau ternyata salah kelas, batalkan semua perubahan
ROLLBACK;
-- kalau sudah yakin benar, baru simpan permanen
-- COMMIT;
Perhatikan, transaksi seperti ini cuma berlaku untuk perintah DML (UPDATE, INSERT, DELETE). Kalau kalian coba jalankan ALTER TABLE atau DROP TABLE di tengah transaksi lalu ROLLBACK, di MySQL perubahan struktur itu tetap tersimpan karena DDL bersifat auto-commit. jadi jangan sampai salah kira DDL juga bisa dibatalkan begitu saja — ini salah satu kesalahan yang cukup sering bikin panik developer junior waktu proses migration gagal di tengah jalan.
Dari studi kasus ini terlihat alurnya: DDL membangun kerangka → DML mengisi dan mengelola data → DCL melindungi akses. Ketiganya saling melengkapi.
Kalau dirangkum, urutannya persis seperti studi kasus di atas: DDL dulu untuk menyiapkan “wadah” (tabel, kolom, tipe data) → baru DML untuk mengisi, membaca, mengubah, atau menghapus data di dalam wadah itu → terakhir DCL untuk menentukan siapa saja yang boleh menyentuh wadah dan isinya. Alur ini juga yang biasanya saya pakai kalau setup database baru dari nol: bereskan struktur dulu sampai fix, baru berikan akses ke tim, supaya tidak ada yang tanpa sengaja mengubah struktur tabel selagi proses development masih berjalan.
Kapan Menggunakan DML, DDL, atau DCL?
Berikut panduan singkat kapan masing-masing digunakan:
- Gunakan DML saat aplikasi perlu membaca atau mengubah data — misalnya fitur login (SELECT), pendaftaran (INSERT), edit profil (UPDATE), hapus akun (DELETE).
- Gunakan DDL saat Anda merancang atau mengubah struktur — misalnya menambah tabel baru, menambah kolom, atau menghapus tabel lama.
- Gunakan DCL saat Anda mengatur keamanan — misalnya memberi akses tim developer, atau mencabut akses karyawan yang keluar.
FAQ — Pertanyaan Umum
Apa perbedaan DML dan DDL?
DML mengelola isi data dalam tabel (menambah, membaca, mengubah, menghapus data), sedangkan DDL mengelola struktur tabel dan database (membuat, mengubah, menghapus tabel). Analoginya: DDL membangun rumah, DML mengatur barang di dalamnya.
Apa itu DCL dalam database?
DCL (Data Control Language) adalah bahasa SQL untuk mengontrol hak akses pengguna ke database, menggunakan perintah GRANT untuk memberikan izin dan REVOKE untuk mencabutnya.
Apakah TRUNCATE termasuk DDL atau DML?
TRUNCATE termasuk DDL karena menghapus seluruh data sekaligus dengan cara me-reset struktur tabel, bukan menghapus baris per baris seperti DELETE (DML). Baca juga: Perbedaan DELETE dan TRUNCATE di SQL.
Siapa yang biasanya memakai DCL?
Database Administrator (DBA) atau admin sistem, karena DCL berhubungan dengan keamanan dan hak akses pengguna.
Bisakah DML di-rollback?
Ya, perintah DML seperti INSERT, UPDATE, DELETE dapat di-rollback jika dijalankan dalam transaksi (BEGIN TRANSACTION / START TRANSACTION). DDL dan DCL umumnya tidak bisa.
Kesimpulan
Dalam pengembangan database, ketiga istilah DML, DDL, dan DCL sangat penting karena masing-masing memiliki peran yang berbeda: DML untuk memanipulasi data, DDL untuk mendefinisikan struktur, dan DCL untuk mengontrol akses. Memahami perbedaan antara ketiga istilah ini dapat membantu kita dalam mengembangkan database dengan lebih efektif dan efisien.
Untuk referensi resmi, kamu bisa membaca dokumentasi MySQL 8.0 Reference Manual dan SQL Wikipedia untuk memahami lebih dalam tentang bahasa SQL.
Ingin belajar lebih dalam tentang database? Baca juga artikel terkait berikut:

