0Pricing
SQL Academy · Pelajaran

Kendala NOT NULL dan CHECK

Larang nilai yang hilang dengan NOT NULL dan validasi aturan domain dengan CHECK (price > 0, status IN ('active','archived')).

Kendala NOT NULL dan CHECK adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengapa Menggunakan Kendala?

Kendala memindahkan validasi ke dalam basis data. Manfaatnya sangat besar: setiap aplikasi, skrip, dan kueri spontan menulis data yang valid — atau gagal dengan jelas.

NOT NULL

Kendala paling sederhana: kolom ini harus memiliki nilai:

CREATE TABLE users (
  id    BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL,
  age   INT                                  -- NULL allowed
);

Menambahkan NOT NULL Belakangan

Isi data yang belum ada terlebih dahulu, lalu tambahkan kendalanya:

UPDATE users SET email = 'unknown@example.com' WHERE email IS NULL;
ALTER TABLE users ALTER COLUMN email SET NOT NULL;

Kendala CHECK

Ekspresi boolean bebas yang harus dipenuhi oleh setiap baris:

CREATE TABLE products (
  id BIGSERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  price NUMERIC(10,2) NOT NULL CHECK (price > 0),
  discount NUMERIC(5,2) DEFAULT 0 CHECK (discount BETWEEN 0 AND 100)
);

CHECK dengan Nilai Seperti Enumerasi

Batasi kolom pada sekumpulan nilai yang tetap:

CREATE TABLE orders (
  id BIGSERIAL PRIMARY KEY,
  status TEXT NOT NULL
    CHECK (status IN ('pending','paid','shipped','cancelled'))
);

NULL Melewati CHECK secara Diam-Diam

Kendala CHECK dianggap terpenuhi ketika ekspresinya NULL (tidak diketahui). Gabungkan dengan NOT NULL jika Anda memerlukan jaminan mutlak:

CREATE TABLE invoices (
  amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);

CHECK Banyak Kolom

Anda dapat merujuk ke beberapa kolom:

CREATE TABLE bookings (
  start_at TIMESTAMPTZ NOT NULL,
  end_at   TIMESTAMPTZ NOT NULL,
  CHECK (start_at < end_at)
);

Menambahkan CHECK Belakangan

Validasikan baris yang sudah ada terlebih dahulu, lalu tambahkan kendalanya:

ALTER TABLE products
  ADD CONSTRAINT positive_price CHECK (price > 0);
-- fails if any row violates it

Trik NOT VALID untuk Tabel Besar

Lewati pemindaian penuh di awal; lakukan validasi nanti di latar belakang:

ALTER TABLE products
  ADD CONSTRAINT positive_price CHECK (price > 0) NOT VALID;
ALTER TABLE products VALIDATE CONSTRAINT positive_price;

Kendala Bernama

Selalu beri nama pada kendala Anda agar pesan kesalahan dan migrasi dapat diprediksi:

ALTER TABLE products
  ADD CONSTRAINT products_price_positive CHECK (price > 0);

Jangan Menggandakan Logika di Aplikasi

Jika basis data menerapkannya, setiap jalur kode mendapatkan manfaatnya — tidak ada lagi "saya lupa memvalidasi". Pertahankan validasi duplikat di aplikasi untuk pengalaman pengguna (umpan balik seketika), tetapi jadikan basis data sebagai sumber kebenaran.

Ringkasan

NOT NULL dan CHECK mencegah sebagian besar data buruk yang umum.

  • NOT NULL: tidak ada nilai yang hilang
  • CHECK: aturan bebas untuk setiap baris
  • Gunakan NOT VALID + VALIDATE untuk penambahan secara daring

Pemeriksaan Singkat

Apa yang terjadi jika Anda menulis CHECK (price > 0) pada kolom tanpa NOT NULL?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kendala NOT NULL dan CHECK” gratis?

Ya — teks lengkap “Kendala NOT NULL dan CHECK” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kendala NOT NULL dan CHECK”?

Larang nilai yang hilang dengan NOT NULL dan validasi aturan domain dengan CHECK (price > 0, status IN ('active','archived')). Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Kendala NOT NULL dan CHECK” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kendala NOT NULL dan CHECK
  2. Kendala UNIQUE dan Kunci Gabungan
  3. FOREIGN KEY dan Tindakan Referensial
  4. Nilai DEFAULT dan Kolom yang Dihasilkan
← Kembali ke SQL Academy