SQLite - NULL Values: Understanding the Concept of Missing Data

Halo, para entusiastik basisdata yang sedang berkembang! Hari ini, kita akan mendalamkan aspek menarik dalam SQLite: nilai NULL. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk mengantar Anda melalui konsep ini, yang mungkin tampak sedikit sulit pada awalnya tapi sangat penting untuk bekerja secara efektif dengan basisdata.

SQLite - NULL Values

Apa Itu NULL Values?

Sebelum kita melompat ke sintaks dan contoh, mari kita mengerti apa yang sebenarnya dimaksudkan oleh NULL dalam konteks basisdata. Bayangkan Anda mengisi formulir, dan ada kolom yang meminta nama tengah Anda. Tetapi apa bila Anda tidak memiliki nama tengah? Anda tidak bisa tinggalkannya kosong karena itu mungkin diinterpretasi bahwa Anda lupa mengisinya. Ini adalah tempat NULL berguna dalam basisdata.

Dalam SQLite (dan basisdata lainnya), NULL mewakili nilai yang hilang atau tak diketahui. Itu bukan nol, itu bukan string kosong, itu adalah keabsenan nilai. Bayangkan itu sebagai penanda yang mengatakan, "Hey, kita belum memiliki informasi ini sekarang."

Sintaks untuk Bekerja dengan NULL Values

Sekarang kita mengerti apa NULL, mari kita lihat bagaimana kita dapat bekerja dengannya dalam SQLite. Ini adalah tabel metode umum untuk mengatasi nilai NULL:

Metode Deskripsi
IS NULL Memeriksa apakah nilai NULL
IS NOT NULL Memeriksa apakah nilai bukan NULL
IFNULL() Mengembalikan nilai yang ditentukan jika ekspresi NULL
COALESCE() Mengembalikan nilai pertama yang bukan NULL dalam daftar

Mari kitauraikan ini dengan beberapa contoh!

IS NULL dan IS NOT NULL

Ini adalah cara paling sederhana untuk memeriksa nilai NULL dalam query Anda.

SELECT * FROM students WHERE middle_name IS NULL;

Query ini akan mengembalikan semua murid yang tidak memiliki nama tengah (atau di mana nama tengah tak diketahui).

SELECT * FROM students WHERE phone_number IS NOT NULL;

Query ini akan mengembalikan semua murid yang memiliki nomor telepon yang tercatat dalam basisdata.

Fungsi IFNULL()

Fungsi IFNULL() sangat membantu saat Anda ingin menggantikan nilai default untuk NULL.

SELECT name, IFNULL(age, 'Age not provided') AS age FROM users;

Dalam contoh ini, jika umur adalah NULL, itu akan menampilkan 'Age not provided' sebagai ganti. Ini sangat baik untuk membuat output Anda lebih ramah pengguna!

Fungsi COALESCE()

COALESCE() adalah seperti pisau瑞士 Army knife untuk mengatasi nilai NULL. Itu mengembalikan nilai pertama yang bukan NULL dalam daftar.

SELECT name, COALESCE(phone, email, 'No contact info') AS contact FROM customers;

Query ini akan mengembalikan nomor telepon jika itu bukan NULL, kemudian email jika telepon NULL, dan akhirnya 'No contact info' jika keduanya telepon dan email NULL.

Contoh Praktis

Ayo menerapkan pengetahuan kita ke dalam beberapa konteks dunia nyata!

Contoh 1: Database Murid

Bayangkan kita mengelola database murid untuk sekolah. Beberapa murid mungkin belum memberikan semua informasi mereka.

CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
middle_name TEXT,
birth_date DATE,
enrollment_date DATE NOT NULL
);

INSERT INTO students VALUES (1, 'John', 'Doe', NULL, '2000-05-15', '2022-09-01');
INSERT INTO students VALUES (2, 'Jane', 'Smith', 'Marie', NULL, '2022-09-01');
INSERT INTO students VALUES (3, 'Bob', 'Johnson', NULL, NULL, '2022-09-01');

SELECT
first_name,
last_name,
IFNULL(middle_name, 'N/A') AS middle_name,
COALESCE(birth_date, 'Not provided') AS birth_date
FROM students;

Dalam contoh ini, kita menciptakan tabel murid dan memasukkan beberapa data. Catatlah bagaimana kita mengatasi nilai NULL dalam pernyataan SELECT. Kita menggunakan IFNULL() untuk nama tengah dan COALESCE() untuk tanggal_lahir. Hal ini membuat output kita lebih mudah dibaca dan informatif.

Contoh 2: Inventory Produk

Ayo katakan kita mengelola sistem inventory untuk toko kecil.

CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
price REAL NOT NULL,
stock_quantity INTEGER
);

INSERT INTO products VALUES (1, 'Widget', 'A fantastic widget', 9.99, 100);
INSERT INTO products VALUES (2, 'Gadget', NULL, 19.99, NULL);
INSERT INTO products VALUES (3, 'Thingamajig', 'It does... things', 29.99, 0);

SELECT
name,
IFNULL(description, 'No description available') AS description,
price,
COALESCE(stock_quantity, 'Out of stock') AS stock_status
FROM products;

Dalam sistem inventory ini, kita menggunakan IFNULL() untuk memberikan deskripsi default bagi produk yang tidak memiliki deskripsi. Kita juga menggunakan COALESCE() untuk menunjukkan 'Out of stock' bagi produk di mana stok quantity adalah NULL atau nol.

Kesimpulan

Mengerti nilai NULL sangat penting saat bekerja dengan basisdata. Mereka memungkinkan kita untuk merepresentasikan informasi yang hilang atau tak diketahui secara akurat. Ingat, NULL bukan nol atau string kosong – itu adalah keabsenan nilai.

Saat Anda terus melanjutkan perjalanan Anda dalam manajemen basisdata, Anda akan menemukan bahwa menangani nilai NULL dengan benar dapat membuat query Anda lebih kuat dan data Anda lebih berarti. Itu seperti belajar membaca antara baris dalam basisdata!

Saya harap tutorial ini telah membantu Anda untuk mengungkap nilai NULL. Terus latih dengan berbagai skenario, dan segera Anda akan menjadi ahli dalam menangani NULL. Selamat coding, dan ingat – di dunia basisdata, kadang-kadang nothing (NULL) dapat berarti segala sesuatu!

Credits: Image by storyset