SQL 中的 NULL 小结

★★★★★SQL中的NULL★★★★★

工作中,常用到NULL,Empty,Space等值,对它们了解的不熟的话,会有一些小的问题。

1.什么是NULL

我们看一下Mysql文档中的定义:

NULL means a missing unknown value” and it is treated somewhat differently from other values.

那么,如何验证某个值是否是NULL,使用 IS NULL 或是 IS NOT NULL:

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+

注意:我们不能使用数学中的比较符号来判断,值是否为NULL:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
|     NULL |      NULL |     NULL |     NULL |
+----------+-----------+----------+----------+

大家看到这里是否理解了呢?

 

★★★★★SQL中外链接中,加入外联表的限制条件★★★★★

大家看到题目,可能不理解。没事,听我细细说。

下面两个SQL:

SELECT test01.*, test02.*
   FROM test01
    LEFT JOIN test02
        ON test01.id = test02.id
      AND test02.name <> 'bao'             注意这里的name<>‘bao’的限制条件在外链接中
 ORDER BY test01.id;

 

SELECT test01.*, test02.*
   FROM test01
    LEFT JOIN test02
        ON test01.id = test02.id
   WHER test02.name <> 'bao'             注意这里的name<>‘bao’的限制条件不在外链接中
 ORDER BY test01.id;

 

第一个SQL的结果集中,因为是外链接,所以件数一test01为主,与之关联的test02的结果中,name为‘bao’的字段值,抽出来为NULL

第二个SQL的结果集中,限制条件,不在外连接中,结果集将test02.name 为 NULL的,以及将不等于 bao的 都会清除掉,相当于是进行了内连接。

 

posted @ 2021-04-12 22:30  Mr.袋鼠  阅读(93)  评论(0编辑  收藏  举报