• SQL NULL Values(空值)


    什么是SQL NULL值?


     SQL 中,NULL 用于表示缺失的值。数据表中的 NULL 值表示该值所处的字段为空。

     具有NULL值的字段是没有值的字段。

     如果表中的字段是可选的,则可以插入新记录或更新记录而不向该字段添加值。然后,该字段将被保存为NULL值。

     值为 NULL 的字段没有值。尤其要明白的是,NULL 值与 0 或者包含空白(spaces)的字段是不同的

    注意:理解NULL值与零值或包含空格的字段不同是非常重要的。具有NULL值的字段是在记录创建期间留空的字段!

    如何测试NULL值?


     使用比较运算符(例如=,<或<>)来测试NULL值是不可行的。

     我们将不得不使用IS NULL和IS NOT NULL运算符。

    IS NULL语法

    1. SELECT column_names
    2. FROM table_name
    3. WHERE column_name IS NULL;

    IS NOT NULL语法

    1. SELECT column_names
    2. FROM table_name
    3. WHERE column_name IS NOT NULL;

    演示数据库


     假设我们有以下的“人员”表: 

    IDLastNameFirstNameAddressCity
    1DoeJohn542 W. 27th StreetNew York
    2BloggsJoeLondon
    3RoeJaneNew York
    4SmithJohn110 BishopsgateLondon

     假设“人员”表中的“Address”列是可选的。如果插入的记录没有“Address”值,则“Address”列将以空值保存。

    IS NULL运算符


     以下SQL语句使用IS NULL运算符来列出所有没有地址的人员: 

    1. SELECT LastName, FirstName, Address FROM Persons
    2. WHERE Address IS NULL;

     结果集将如下所示:

    LastNameFirstNameAddress
    BloggsJoe
    RoeJane

    提示:始终使用IS NULL来查找空值。

    IS NOT NULL运算符


     以下SQL语句使用IS NOT NULL运算符来列出所有具有地址的人员: 

    1. SELECT LastName, FirstName, Address FROM Persons
    2. WHERE Address IS NOT NULL;

     结果集将如下所示:

    LastNameFirstNameAddress
    DoeJohn542 W. 27th Street
    SmithJohn110 Bishopsgate

    语法:


     创建表的时候,NULL 的基本语法如下:

    1. SQL> CREATE TABLE CUSTOMERS(
    2. ID INT NOT NULL,
    3. NAME VARCHAR (20) NOT NULL,
    4. AGE INT NOT NULL,
    5. ADDRESS CHAR (25) ,
    6. SALARY DECIMAL (18, 2),
    7. PRIMARY KEY (ID)
    8. );

     这里,NOT NULL表示对于给定列,必须按照其数据类型明确赋值。有两列并没有使用 NOT NULL 来限定,也就是说这些列可以为 NULL。

     值为 NULL 的字段是在记录创建的过程中留空的字段。

    示例:


     NULL 值会给选取数据带来麻烦。不过,因为 NULL 和其他任何值作比较,其结果总是未知的,所以含有 NULL 的记录不会包含在最终结果里面。

     必须使用 IS NULL 或者 IS NOT NULL 来检测某个字段是否为 NULL。

     考虑下面的 CUSTOMERS 数据表,里面包含的记录如下所示:

    1. +----+----------+-----+-----------+----------+
    2. | ID | NAME | AGE | ADDRESS | SALARY |
    3. +----+----------+-----+-----------+----------+
    4. | 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
    5. | 2 | Khilan | 25 | Delhi | 1500.00 |
    6. | 3 | kaushik | 23 | Kota | 2000.00 |
    7. | 4 | Chaitali | 25 | Mumbai | 6500.00 |
    8. | 5 | Hardik | 27 | Bhopal | 8500.00 |
    9. | 6 | Komal | 22 | MP | |
    10. | 7 | Muffy | 24 | Indore | |
    11. +----+----------+-----+-----------+----------+

     下面是 IS NOT NULL 运算符的用法:

    1. SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
    2. FROM CUSTOMERS
    3. WHERE SALARY IS NOT NULL;

     上面语句的运行结果如下:

    1. +----+----------+-----+-----------+----------+
    2. | ID | NAME | AGE | ADDRESS | SALARY |
    3. +----+----------+-----+-----------+----------+
    4. | 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
    5. | 2 | Khilan | 25 | Delhi | 1500.00 |
    6. | 3 | kaushik | 23 | Kota | 2000.00 |
    7. | 4 | Chaitali | 25 | Mumbai | 6500.00 |
    8. | 5 | Hardik | 27 | Bhopal | 8500.00 |
    9. +----+----------+-----+-----------+----------+

     下面是 IS NULL 运算符的用法:

    1. SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
    2. FROM CUSTOMERS
    3. WHERE SALARY IS NULL;

     其运行结果如下:

    1. +----+----------+-----+-----------+----------+
    2. | ID | NAME | AGE | ADDRESS | SALARY |
    3. +----+----------+-----+-----------+----------+
    4. | 6 | Komal | 22 | MP | |
    5. | 7 | Muffy | 24 | Indore | |
    6. +----+----------+-----+-----------+----------+

  • 相关阅读:
    [论文笔记]SiameseNet
    基于ssm的兴趣班和延时班管理系统-计算机毕业设计
    并查集介绍和常用模板
    【每日一题】ARC158B - Sum-Product Ratio | 数学 | 中等
    Jenkins简介及Docker Compose部署
    电商大促就靠RPA,摆脱重复劳动,急速提效
    【LeetCode热题100】--189.轮转数组
    利用Linux虚拟化技术实现资源隔离和管理
    【问题思考总结】为什么一点的泰勒展开可以在任意点逼近函数?【泰勒公式 泰勒定理的适用范围】
    Spring Cloud(Finchley版本)系列教程(一) 服务注册与发现(eureka)
  • 原文地址:https://blog.csdn.net/m0_69824302/article/details/133999139