SQL进阶教程——三指逻辑和NULL(第三章)

本文深入探讨SQL中的三值逻辑理论,解释为何必须使用"IS NULL",并阐述三值逻辑在实践中如何影响查询结果。通过案例分析了比较谓词与NULL的关系,以及NOT IN、NOT EXISTS、限定谓词与极值函数在处理NULL时的差异,强调了理解和处理NULL的重要性。
摘要由CSDN通过智能技术生成

1. 关于三值逻辑的理论

1.1. 两种NULL

两种NULL分别指的是“未知的”和“不适用的”,“不知道戴墨镜的人眼睛是什么颜色”,这就是未知的;“不知道冰箱的眼睛是什么颜色”,这就是“不适用”。
总结一下:“未知”指的是“虽然现在不知道,但加上某些条件后可以知道”;“不适用”指的是“无论怎么努力都无法知道”。

1.2. 为什么必须写成"IS NULL" ,而不是"= NULL"

--查询NULL时出错的SQL语句
SELECT *
	FROM tbl_A
WHERE col_1=NULL;

对NULL使用比较谓词后得到的结果总是unknown。而查询结果只会包含WHERE子句里判断结果为true的行,不会包含判断结果为false和unkonwn的行。
为什么对NULL使用比较谓词后得到的结果永远不可能为真了?这是因为,NULL既不是值也不是变量,NUL只是表示一个“没有值”的状态,而比较谓词只适用于值。因此,对非值得NULL使用比较谓词本来就没有意义的。

1.3. 第三个真值,unknown

真值unknown和作为NULL的一种的UNKNOWN(未知,NULL的一种)是不同 的东西。前者是明确的布尔型的真值,后者既不是值也不是变量。为了区分,前者采用粗体的小写字母unknown,后者用普通的大写字母UNKNOWN来表示。

--这个是明确的真值的比较
unknown = unknown ——> true

--这个相当于NULL=NULL
UNKNOWN = UNKNOWN; ——>unknown

下面是SQL遵循的三只逻辑的真值表

  • 三指逻辑的真值表(NOT)
X NOT X
t f
u u
f t
  • 三值逻辑的真值表(AND)
AND t u f
t t u f
u u u f
f f f f
  • 三值逻辑的真值表(OR)
OR t u f
t t t t
u t u u
f t u f

注意:

  1. AND的情况:false>unknown>true
  2. OR的情况:true>unknown>false.
  3. 优先级高的真值会决定计算结果。(比如true AND unknown,因为在AND中unknown的优先级更高,所以结果是unknown)

2. 关于三值逻辑的实践

2.1. 比较谓词和NUL:排中律不成立

  • Students
name(名字) age(年龄)
布朗 22
拉里 19
约翰
伯杰 21

                
### 回答1: SQL进阶教程第二版PDF是一本非常优秀的SQL语言进一步学习的教程。该教程深入讲解了SQL的高级技巧,适合于那些对SQL的基础知识已经掌握,并且需要更深入了解SQL语言的程序员或者数据分析师。 该教程首先介绍了SQL高级技巧中最重要的概念之一——联结。并通过丰富的实例,深入讲解了如何通过不同类型的联结来提高SQL查询的效率和准确性。同时,该教程还介绍了如何使用视图和子查询来优化SQL查询。此外,该教程还对SQL中的窗口函数、分组与聚合、复杂查询、事务处理等内容进行了详细的讲解。 SQL进阶教程第二版的强大之处在于它提供了大量实例代码和练习题,可以帮助读者更好地理解和掌握高级SQL技巧的运用。同时,该教程还特别注重将SQL技巧与实际应用场景相结合,从而让读者能够更方便地将所学的知识运用到具体的业务场景中去。 总之,SQL进阶教程第二版PDF是一本非常值得阅读和学习的SQL语言进阶教程,无论您是程序员,还是数据分析师,都会从中受益匪浅。 ### 回答2: SQL进阶教程第二版pdf是一本非常经典的SQL学习资源,它适合有一定SQL基础的人群,主要讲解了SQL高级技能和概念。本书的作者结构清晰,语言简明易懂,而且有很多实际案例和提高练习,很适合读者下班时间学习和练习使用。 该书主要包括以下主题:SQL高级操作、数据类型、数据表设计、索引和视图。其中,SQL高级操作包括联合查询、分组查询、排序、子查询和聚合输入。数据表设计部分详细介绍了如何设计关系数据表,并提供了实际案例参考。另外,索引和视图分别讲解了如何提升SQL查询速度和如何创建虚拟表格,以便于更高效地管理和处理数据。 此外,本书还强调了SQL实践中的常见问题和错误,并提供了解决方案。而且在不同数据库之间的差异性上也进行了详细介绍。 总的来说,SQL进阶教程第二版pdf对于有一定SQL基础并想要进一步提升技能的人员非常有帮助,它提供了很多实际案例和练习,让读者更快掌握SQL高级技能。 ### 回答3: SQL进阶教程第二版PDF是一本针对已经掌握基本SQL语言知识,并希望进一步扩展和深化技能的人群所准备的一本书。从基础连接和子查询开始,这本书带领我们进入了更高深的SQL技术世界,包括如何高效地应用索引、复杂查询的调优以及跨平台数据交换等方面的内容。 这本书主要分为四个部分:基础连接与子查询、优化查询、XML、JSON和全文本搜索、数据交换和分布式数据库。无论是哪个部分,作者都以实际案例作为引入,然后通过详细分析案例中的难点问题,引导我们深入了解相关SQL语句和技术。 通过学习这本书,读者能够了解到高效地应用SQL语句的方法,同时掌握如何应对大型数据库查询的相关技巧,提高数据查询效率和数据分析能力。此外,作者还对数据库查询中的特殊要求进行了详细介绍,包括如何使用XML、JSON、全文本搜索等技术,以及如何实现跨平台的数据交换和分布式数据库的使用。 总之,SQL进阶教程第二版PDF是一本深入学习SQL的好书,对于想要进一步提高技能和在实际工作中遇到挑战的数据库程序员和数据分析师来说,是一本不可多得的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值