Pada seri belajar SQL database bagian 8, kita telah membahas subquery, yaitu query di dalam query yang digunakan untuk mengambil data dengan kebutuhan yang lebih kompleks. Memasuki pembahasan yang lebih mendalam, kita akan mengenal constraint di MySQL, yaitu aturan yang digunakan untuk menjaga validitas dan konsistensi data di dalam database.
Constraint memiliki peran penting karena dapat mencegah data yang tidak valid masuk ke dalam tabel, baik secara sengaja maupun tidak.
Pada belajar SQL database bagian 9 ini, kita akan mempelajari pengertian constraint, jenis-jenis constraint yang umum digunakan di MySQL, serta contoh penerapannya agar struktur database lebih rapi, aman, dan terjaga integritas datanya.
Apa Itu Constraint di MySQL?
Constraint adalah aturan yang diterapkan pada kolom atau tabel untuk membatasi jenis data yang boleh disimpan. Dengan constraint, database dapat secara otomatis menolak data yang tidak sesuai aturan.
Beberapa constraint yang umum digunakan di MySQL antara lain:
- NOT NULL
- UNIQUE
- DEFAULT
- CHECK
- FOREIGN KEY
Skema Database Yang Digunakan
Dalam tutorial belajar SQL database tentang constraint kali ini, kita akan menggunakan skema database seperti berikut:
Tabel siswa:

Tabel nilai:

Dalam gambar skema diatas, kita akan menggunakan beberapa tabel dalam sistem input nilai siswa. Untuk proses pembuatan database beserta contohnya, kita akan masuk ke pembahasan jenis constraint berikut.
Jenis Constraint
Berikut adalah beberapa jenis constraint yang perlu Anda ketahui:
1. Constraint NOT NULL
Constraint NOT NULL digunakan untuk memastikan sebuah kolom tidak boleh bernilai kosong (NULL).
Contoh: Menambahkan NOT NULL pada kolom nama
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
umur INT,
email VARCHAR(100) UNIQUE
);
Dengan aturan ini, jika kita mencoba memasukkan data tanpa nilai nama, MySQL akan menolak query tersebut.
- Contoh Insert Valid
INSERT INTO siswa (nama, umur, email)
VALUES ('Andi', 15, 'andi@email.com');Berikut inser validnya:

- Contoh Insert Tidak Valid
INSERT INTO siswa (umur, email)
VALUES (16, 'budi@email.com');Jika kita mencoba memasukkan data tanpa nama, MySQL akan menolak query tersebut, berikut pesan errornya apabila memasukkan data tidak valid:

2. Constraint UNIQUE
Constraint UNIQUE memastikan bahwa nilai dalam sebuah kolom tidak boleh sama dengan baris lainnya.
Contoh: Membuat kolom email unik
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
umur INT,
email VARCHAR(100) UNIQUE
);- Contoh Insert Valid:
INSERT INTO siswa (nama, umur, email)
VALUES ('Andi', 15, 'andi@email.com');- Contoh Insert Tidak Valid:
INSERT INTO siswa (nama, umur, email)
VALUES ('Budi', 16, 'andi@email.com');Query insert kedua akan gagal karena nilai email ‘andi@email.com’ sudah tersimpan sebelumnya. Constraint UNIQUE mencegah adanya data dengan nilai email yang sama agar tidak terjadi duplikasi data. Berikut pesan error yang muncul apabila Anda mencoba memasukkan data tidak valid:

3. Constraint DEFAULT
Constraint DEFAULT digunakan untuk memberikan nilai awal otomatis jika data tidak diisi saat proses insert.
Contoh: DEFAULT pada kolom nilai
CREATE TABLE nilai (
id INT AUTO_INCREMENT PRIMARY KEY,
siswa_id INT,
mata_pelajaran VARCHAR(100),
nilai INT DEFAULT 0
);Jika kita tidak memasukkan nilai:
INSERT INTO nilai (siswa_id, mata_pelajaran)
VALUES (1, 'Matematika');Maka kolom nilai akan otomatis bernilai 0. Berikut isi table nilai jika Anda mencoba memasukkan query diatas:

4. Constraint CHECK
Constraint CHECK digunakan untuk membatasi nilai berdasarkan kondisi tertentu. Sebagai informasi, CHECK constraint berjalan secara efektif pada MySQL versi 8 ke atas.
Contoh: Memastikan nilai siswa antara 0 sampai 100.
CREATE TABLE nilai (
id INT AUTO_INCREMENT PRIMARY KEY,
siswa_id INT,
mata_pelajaran VARCHAR(100),
nilai INT CHECK (nilai BETWEEN 0 AND 100)
);Jika kita coba masukkan:
INSERT INTO nilai (siswa_id, mata_pelajaran, nilai)
VALUES (1, 'Bahasa Inggris', 120);Maka query akan gagal karena nilai 120 tidak memenuhi aturan CHECK (nilai BETWEEN 0 AND 100).
Catatan:
Constraint CHECK hanya benar-benar ditegakkan pada MySQL versi 8.0.16 ke atas.
Pada MariaDB dan MySQL versi lama, CHECK tidak divalidasi, sehingga data yang melanggar aturan tetap bisa masuk tanpa error.
5. Constraint FOREIGN KEY
Constraint FOREIGN KEY memastikan relasi antar tabel tetap valid, yaitu nilai siswa_id harus merujuk ke data yang ada di tabel siswa.
Contoh Struktur Tabel:
CREATE TABLE nilai (
id INT AUTO_INCREMENT PRIMARY KEY,
siswa_id INT,
mata_pelajaran VARCHAR(100),
nilai INT,
FOREIGN KEY (siswa_id) REFERENCES siswa(id)
);Jika kita mencoba:
INSERT INTO nilai (siswa_id, mata_pelajaran, nilai)
VALUES (999, 'Biologi', 80);Query akan gagal, karena tidak ada siswa dengan id = 999 di tabel siswa. Berikut pesan error yang muncul apabila mencoba menambahkan query diatas:

Contoh Penggunaan Constraint dalam Satu Tabel
Setelah memahami masing-masing jenis constraint, selanjutnya kita akan melihat contoh penggunaan beberapa constraint sekaligus pada tabel yang saling berelasi, yaitu tabel siswa dan nilai
Tabel Siswa
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
umur INT CHECK (umur >= 10),
email VARCHAR(100) NOT NULL UNIQUE
);Dengan struktur di atas:
- Kolom nama wajib diisi (NOT NULL)
- Kolom email harus unik dan tidak boleh kosong (UNIQUE, NOT NULL)
- Kolom umur hanya menerima nilai 10 tahun ke atas (CHECK)
Tabel Nilai
CREATE TABLE nilai (
id INT AUTO_INCREMENT PRIMARY KEY,
siswa_id INT NOT NULL,
mata_pelajaran VARCHAR(100) NOT NULL,
nilai INT DEFAULT 0 CHECK (nilai BETWEEN 0 AND 100),
FOREIGN KEY (siswa_id) REFERENCES siswa(id)
);Dengan struktur di atas:
- Kolom siswa_id wajib diisi dan harus merujuk ke tabel
siswa(FOREIGN KEY) - Kolom mata_pelajaran tidak boleh kosong (NOT NULL)
- Kolom nilai memiliki nilai default 0 (DEFAULT)
- Nilai hanya boleh berada di rentang 0 sampai 100 (CHECK)
Kenapa Constraint Penting?
Ada beberapa alasan kenapa constraint untuk aplikasi anda, seperti:
- Mencegah data tidak valid
- Menjaga konsistensi database
- Mengurangi kesalahan input dari aplikasi
- Membuat database lebih aman dan rapi
Constraint sangat disarankan digunakan terutama pada database yang digunakan untuk aplikasi atau website production.
Penutup
Constraint di MySQL berfungsi sebagai aturan dan validasi data agar database tetap konsisten dan terstruktur dengan baik. Beberapa constraint penting yang sering digunakan antara lain NOT NULL, UNIQUE, DEFAULT, CHECK dan FOREIGN KEY.
Demikian tutorial belajar SQL Database bagian 9 tentang Constraint atau aturan dan validasi data di MySQL. Terus ikuti seri belajar SQL Database dari Rumahweb untuk meningkatkan kemampuan Anda dalam mengelola database. Semoga bermanfaat!


