Lab 17: NULL Handling
Overview
Step 1: NULL Semantics — NULL is Not a Value
docker run -d --name mysql-lab -e MYSQL_ROOT_PASSWORD=rootpass mysql:8.0
for i in $(seq 1 30); do docker exec mysql-lab mysql -uroot -prootpass -e "SELECT 1" 2>/dev/null && break || sleep 2; done
docker exec mysql-lab mysql -uroot -prootpass << 'EOF'
CREATE DATABASE nulllab;
USE nulllab;
-- Demonstrate NULL != NULL (the critical mistake)
SELECT NULL = NULL; -- Returns NULL, not TRUE!
SELECT NULL != NULL; -- Returns NULL, not FALSE!
SELECT NULL = 0; -- NULL
SELECT NULL = ''; -- NULL
SELECT NULL IS NULL; -- TRUE (correct way to check)
SELECT NULL IS NOT NULL; -- FALSE
SELECT 1 + NULL; -- NULL (any arithmetic with NULL = NULL)
SELECT CONCAT('hello', NULL); -- NULL (MySQL: string + NULL = NULL)
EOFStep 2: Setup — Table with NULLs
Step 3: IS NULL and IS NOT NULL
Step 4: COALESCE — Return First Non-NULL
Step 5: NULLIF — Return NULL When Values Match
Step 6: IFNULL (MySQL) — Two-Argument Shorthand
Step 7: NULL in Aggregates and ORDER BY
Step 8: Capstone — Three-Valued Logic
Summary
Function/Syntax
Description
Example
Behavior
Effect
Last updated
