9.:表:NULL值

NULL

  • NULL,即空值

  • 有时候表中的某些字段值,数据未知或暂时不存在,取值为NULL

  • 任何数据类型均可取值NULL

NULL的操作:插入NULL值

  • CREATE TABLE student(id NUMBER(4),name CAHR(20), gender CHAR(1));

  • 显式插入,指定字段为NULL值

    • 如:INSERT INTO student VALUES(1000,‘JACK’,NULL);
  • 隐式插入,表中未被指定的字段都被插入NULL值

    • 如:INSERT INTO student(id,name) VALUES(1001,‘TOM’);

    • student表该行数据中除id、name字段外,其他字段都被插入NULL值

NULL的操作:更新成NULL值

  • UPDATE student SET gender=NULL;

  • 注意这种更新只有在此列没有非空约束的情况下才可操作

  • 如果某列有非空约束,则无法更新为NULL,上述语句会报错

注意

  • 更新NULL值,只有在此列没有非空约束的情况下才可操作

  • 插入NULL值,只有对应的列没有非空约束的情况下才可操作,

  • 若发生上述情况,执行更新或者插入语句,会报错

NULL的操作:NULL条件查询

  • NULL不等于任何值

  • 判断某个数据是否为NULL,语法:字段名 IS NULL、字段名 IS NOT NULL

  • 如:SELECT * FROM student WHERE gender IS NULL;

NULL的操作:非空约束

  • 建表时,给字段添加 NOT NULL 属性,该字段就不能被插入或更新数据为NULL值

NULL的操作:运算操作

  • NULL与任何数字运算结果还为NULL

  • NULL与字符串拼接等于什么都没有做

空值函数

  • NVL(arg1,arg2):将NULL值替换为一个非NULL值

    • 当arg1为NULL,函数返回arg2的值,若不为NULL,则返回arg1本身
  • NVL2(arg1,arg2,arg3):该函数时根据一个值是否为NULL来返回两个不同的结果

    • 当arg1不为NULL,则返回arg2,当arg1为NULL,则返回arg3

演示:空值操作

  • 素材

    CREATE TABLE student(
    id NUMBER(4),
    NAME VARCHAR(20),
    gender VARCHAR(1)
    );

    INSERT INTO student VALUES(1,‘pick’,‘F’);

    INSERT INTO student VALUES(2,‘DD’,‘M’);

  • 插入NULL值

    INSERT INTO student VALUES(3,‘jack’,NULL);

    INSERT INTO student(id,name) VALUES(4,‘tom’);

  • 更新成NULL值

    UPDATE student SET gender=NULL WHERE id=1;

  • 删除性别不为NULL的数据

    DELETE FROM student WHERE gender IS NOT NULL;

  • 删除性别为NULL的数据

    DELETE FROM student WHERE gender IS NULL;

    SELECT * FROM student;

  • NULL值的运算操作

    – 查看每个员工的收入
    SELECT ename,sal,comm,sal+comm FROM emp;

  • NVL

    • 查看每个员工的收入
      SELECT ename,sal,comm,sal+NVL(comm,0) FROM emp;
  • NVL2

    • 查看每个人的绩效情况,即:有绩效的显示为“有绩效”,绩效为空的,则显示为“没有绩效”
      SELECT ename,comm,NVL2(comm,‘有绩效’,‘没有绩效’) FROM emp;

    • 查看每个员工的收入
      SELECT ename,sal,comm,sal+NVL2(comm,comm,0) FROM emp;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值