Constraint: Satpam yang Menjaga Kualitas Data

Menjaga data tetap benar dengan NOT NULL, UNIQUE, DEFAULT, dan CHECK, serta membaca pesan error saat data melanggar aturan.

Part 6 dari 38 ± 40 menit Gratis

Data kotor itu mahal

Pernah menemukan data pelanggan tanpa nama, dua akun dengan email sama, atau saldo bernilai minus? Itu terjadi bila database tidak punya aturan. Constraint adalah aturan yang dipasang pada kolom, dan MySQL bertugas sebagai satpam: data yang melanggar langsung ditolak.

Lima constraint utama

ConstraintAturanContoh
NOT NULLKolom wajib diisinama VARCHAR(60) NOT NULL
UNIQUETidak boleh ada nilai kembaremail VARCHAR(100) UNIQUE
DEFAULTNilai otomatis jika tidak diisisaldo INT DEFAULT 0
CHECKNilai harus memenuhi syarat (MySQL 8.0.16+)CHECK (umur >= 17)
PRIMARY KEYGabungan NOT NULL + UNIQUE, pengenal barisid INT PRIMARY KEY

Contoh lengkap

CREATE TABLE anggota (
  id     INT AUTO_INCREMENT PRIMARY KEY,
  email  VARCHAR(100) NOT NULL UNIQUE,
  nama   VARCHAR(60)  NOT NULL,
  umur   INT CHECK (umur >= 17),
  status VARCHAR(10)  NOT NULL DEFAULT 'aktif'
);

Melihat satpam bekerja

INSERT INTO anggota (email, nama) VALUES (NULL, 'Budi');
-- ERROR: Column 'email' cannot be null

INSERT INTO anggota (email, nama) VALUES ('a@a.com', 'Ani');
INSERT INTO anggota (email, nama) VALUES ('a@a.com', 'Ana');
-- ERROR: Duplicate entry 'a@a.com' for key 'email'

INSERT INTO anggota (email, nama, umur) VALUES ('b@b.com', 'Bima', 10);
-- ERROR: Check constraint 'anggota_chk_1' is violated.

Error ini bukan musuh — ia tanda satpam menjalankan tugas. Aplikasimu cukup menangkap pesan itu dan memberi tahu pengguna dengan ramah.

DEFAULT dan NULL: dua hal yang sering tertukar

  • NULL = "tidak ada nilai / tidak diketahui". Bukan nol, bukan string kosong.
  • DEFAULT = nilai pengganti yang dipakai saat kamu tidak menyebut kolom itu di INSERT.
  • Kolom tanpa NOT NULL dan tanpa DEFAULT akan berisi NULL bila tidak diisi.

Prinsip emas: pasang aturan di database, jangan hanya di aplikasi. Aplikasi bisa punya bug, bisa ada banyak aplikasi yang menulis ke database yang sama, atau seseorang mengedit langsung lewat terminal. Database adalah benteng terakhir.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X