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;
-