Rumahweb Journal
Banner - Belajar SQL Database Bagian 9

Belajar SQL Database Bagian 9 – Mengenal Constraint di MySQL

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:

Promo Hosting Murah Rumahweb

Tabel siswa:

contoh skema database tabel siswa - Belajar SQL Database Bagian 9

Tabel nilai:

contoh skema database 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:

Hasil insert query valid
  • 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:

Pesan error yang muncul jika menambahkan 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:

Pesan error yang muncul karena memasukkan data yang sama

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:

Contoh hasil otomatis yang muncul sesuai data yang ditambahkan

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:

Pesan error yang muncul dikarenakan nilai siswa_id yang dimasukkan ke tabel nilai tidak ditemukan pada kolom id di tabel siswa, sehingga melanggar aturan FOREIGN KEY.

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!

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Kholifatush Sholichah

Kholifatush Sholichah, atau yang akrab disapa Lika adalah bagian dari team Technical Support Rumahweb. Lika suka menulis jurnal tentang WordPress, cara mengatasi berbagai macam error, seperti SSL error, database error, dan masalah teknis lainnya yang sering terjadi pada website. Melalui tulisannya, Lika ingin membantu Anda mengatasi masalah tersebut dengan solusi yang mudah dipahami.

banner pop up - Pindah Hosting ke Rumahweb