SQL 中,NULL 用于表示缺失的值。數(shù)據(jù)表中的 NULL 值表示該值所處的字段為空。
值為 NULL 的字段沒有值。尤其要明白的是,NULL 值與 0 或者包含空白(spaces)的字段是不同的。
創(chuàng)建表的時候,NULL 的基本語法如下:
SQL> CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
這里,NOT NULL表示對于給定列,必須按照其數(shù)據(jù)類型明確賦值。有兩列并沒有使用 NOT NULL 來限定,也就是說這些列可以為 NULL。
值為 NULL 的字段是在記錄創(chuàng)建的過程中留空的字段。
NULL 值會給選取數(shù)據(jù)帶來麻煩。不過,因為 NULL 和其他任何值作比較,其結(jié)果總是未知的,所以含有 NULL 的記錄不會包含在最終結(jié)果里面。
必須使用 IS NULL 或者 IS NOT NULL 來檢測某個字段是否為 NULL。
考慮下面的 CUSTOMERS 數(shù)據(jù)表,里面包含的記錄如下所示:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | |
| 7 | Muffy | 24 | Indore | |
+----+----------+-----+-----------+----------+
下面是 IS NOT NULL 運算符的用法:
SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NOT NULL;
上面語句的運行結(jié)果如下:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
+----+----------+-----+-----------+----------+
下面是 IS NULL 運算符的用法:
SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NULL;
其運行結(jié)果如下:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 6 | Komal | 22 | MP | |
| 7 | Muffy | 24 | Indore | |
+----+----------+-----+-----------+----------+