1、创建一张数据库测试表,用于演示null空值的查询。
2、往测试表中插入测试记录,包含一个NULL、空字符串、非空字符串值。
3、查询测试表中的所有数据,select * from tblNullData。
4、在oracle数据库中,null与任何字段相比都会返回false,为此,oracle提供了一个is null词组判断null。从运行结果可以看出,空字符串不是null select * from tblNullData where ColName is null。
5、在oracle数据库中,想要查询非null的值,就需要使用is not null词组判断了。从运行结果可以看出,空字符串的记录行查询出来了select * from tblNullData where ColName is not null。
允许空值的意思。
允许空值和有默认值并不冲突,插入数据时如果指定使用默认值,它会使用这个默认值0,如果插入数据时不指定这一列,它会保持空值。
空值是不占用空间的,MySQL中的NULL其实是占用空间的。
扩展资料:
使用NULL可以区分“没有输入数据”和“输入空数据”, 差异在于:
NULL的长度就是NULL,空字符串的长度为0。
一串NULL数据比空字符串优先排序。
COUNT(message)会将空字符串计数进去,但是不会将NULL数据们计入。
可以使用绑定变量搜索某个空字符串,但是不可以这样搜索NULL。
在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于 *** 作符的文档中以及表达式的函数中作了其他规定。
假设有如下一张表,名为 Product (DDL 见本文结尾):
在使用 DISTINCT 时, NULL 也被视为一类数据。 NULL 存在于多行中时,也会被合并为一条 NULL 数据。
对含有 NULL 数据的列使用 DISTINCT 关键字:
执行结果为:
考虑一下在 SQL 语句中如下运算的结果:
正确答案是 全为 NULL 。实际上 所有包含 NULL 的计算,结果肯定是 NULL 。
当我们尝试取出不是进货单价不是 2800 日元( purchase_price <>2800 )的记录时:
执行结果为:
执行结果中并 没有 “叉子”和“圆珠笔”。这两条记录由于进货单价不明( NULL ),因此无法判定是不是 2800 日元。
当你尝试使用 purchase_price = NULL 或 purchase_price <>NULL 作为查询条件时,均 查询不到任何记录 。
替代的,你可以使用 purchase_price IS NULL 和 purchase_price IS NOT NULL 来查询你想要的记录。如:
执行结果为:
下列是三值逻辑中 AND 和 OR 运算的真值表:
除 COUNT(*) 外,聚合函数只对 NULL 以外的对象进行汇总。
执行如下查询语句,结果已在注释中标出:
当聚合键中包含 NULL 时,也会将 NULL 作为一组特定的数据:
执行结果为:
使用含有 NULL 的列作为排序键时,NULL 会在结果的 开头或末尾 汇总显示:
执行结果为:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)