MySQL IS NULL和IS NOT NULL的用法(附带实例)
创建数据表的时候,设计者可以指定某列中是否包含空值(NULL)。空值不同于 0,也不同于空字符串。空值一般表示数据未知、不适用或将在以后添加。
下面在数据库中创建数据表 customers,该表中包含了本章中需要用到的数据,SQL 语句如下:
为了演示,需要插入数据,SQL 语句如下:
【实例 1】查询表 customers 中 c_email 为空的记录的 c_id、c_name 和 c_email 字段值,SQL 语句如下:
【实例 2】查询表 customers 中 c_email 不为空的记录的 c_id、c_name 和 c_email 字段值,SQL 语句如下:
MySQL IS NULL子句的用法
在 SELECT 语句中,使用 IS NULL 子句可以查询某字段内容为空的记录。下面在数据库中创建数据表 customers,该表中包含了本章中需要用到的数据,SQL 语句如下:
CREATE TABLE customers ( c_id int NOT NULL AUTO_INCREMENT, c_name char(50) NOT NULL, c_address char(50) NULL, c_city char(50) NULL, c_zip char(10) NULL, c_contact char(50) NULL, c_email char(255) NULL, PRIMARY KEY (c_id) );
为了演示,需要插入数据,SQL 语句如下:
INSERT INTO customers(c_id, c_name, c_address, c_city, c_zip, c_contact, c_email) VALUES(10001, 'RedHook', '200 Street ', 'Tianjin', '300000', 'LiMing', 'LMing@163.com'), (10002, 'Stars', '333 Fromage Lane', 'Dalian', '116000', 'Zhangbo', 'Jerry@hotmail.com'), (10003, 'Netbhood', '1 Sunny Place', 'Qingdao', '266000', 'LuoCong', NULL), (10004, 'JOTO', '829 Riverside Drive', 'Haikou', '570000', 'YangShan', 'sam@hotmail.com');
【实例 1】查询表 customers 中 c_email 为空的记录的 c_id、c_name 和 c_email 字段值,SQL 语句如下:
SELECT c_id, c_name,c_email FROM customers WHERE c_email IS NULL;查询结果如下:
+-------+----------+---------+ | c_id | c_name | c_email | +-------+----------+---------+ | 10003 | Netbhood | NULL | +-------+----------+---------+可以看到,表 customers 中有一条字段 c_email 的值为 NULL 的记录。
MySQL IS NOT NULL子句的用法
与 IS NULL 相反的是 IS NOT NULL,该关键字查找字段不为空的记录。【实例 2】查询表 customers 中 c_email 不为空的记录的 c_id、c_name 和 c_email 字段值,SQL 语句如下:
SELECT c_id, c_name,c_email FROM customers WHERE c_email IS NOT NULL;查询结果如下:
+------------+----------+------------------+ | c_id | c_name | c_email | +------------+----------+------------------+ | 10001 | RedHook | LMing@163.com | | 10002 | Stars | Jerry@hotmail.com| | 10004 | JOTO | sam@hotmail.com | +------------+----------+------------------+可以看到,查询出来的记录的 c_email 字段都不为空值。