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 itTrik 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
- Kendala NOT NULL dan CHECK
- Kendala UNIQUE dan Kunci Gabungan
- FOREIGN KEY dan Tindakan Referensial
- Nilai DEFAULT dan Kolom yang Dihasilkan