
1.1. 真
1.2. 假
1.3. 不确定
2.1. 未知”(unknown)
2.1.1. 不知道戴墨镜的人眼睛是什么颜色
2.1.2. 虽然现在不知道,但加上某些条件后就可以知道
2.2. “不适用”(not applicable,inapplicable)
2.2.1. 不知道冰箱的眼睛是什么颜色
2.2.2. 在语义上更接近于“无意义”
2.2.3. 而不是“不确定”
2.2.4. 无论怎么努力都无法知道
2.3. Codd提倡在关系数据库中使用四值逻辑
2.4. 数据库里只要存在一个NULL,查询的结果就可能不正确
2.5. 最佳方法应该是往表里添加NOT NULL约束来尽力排除NULL
3.1. 谓词
3.2. 对NULL使用比较谓词后得到的结果总是unknown
3.2.1. --以下的式子都会被判为 unknown
1 = NULL
2 > NULL
3 < NULL
4 <> NULL
NULL = NULL
3.2.2. 比较谓词只适用于值
3.3. 查询结果只会包含WHERE子句里的判断结果为true的行
3.4. NULL既不是值也不是变量
3.4.1. NULL只是一个表示“没有值”的标记
3.4.2. 因为NULL不是值,所以不在定义域(domain)中
3.5. IS NULL这样的谓词是由两个单词构成的,所以人们容易把IS当作谓词,而把NULL当作值
4.1. AND的情况: false > unknown > true
4.2. OR的情况: true > unknown > false
5.1. Law of Excluded Middle
5.2. “把命题和它的否命题通过‘或者’连接而成的命题全都是真命题”这个命题在二值逻辑中被称为排中律
5.3. 在SQL的世界里,排中律是不成立的
5.4. 示例
5.4.1. --查询年龄是20岁或者不是20岁的学生
SELECT *
FROM Students
WHERE age = 20
OR age <> 20;
5.4.2. --1.约翰年龄是NULL(未知的NULL!
SELECT *
FROM Students
WHERE age = NULL
OR age <> NULL;
5.4.3. --2.对NULL使用比较谓词后,结果为unknown
SELECT *
FROM Students
WHERE unknown
OR unknown;
5.4.4. --3.unknown OR unknown的结果是unknown
SELECT *
FROM Students
WHERE unknown;
5.4.5. SQL语句的查询结果里只有判断结果为true的行
SELECT *
FROM Students
WHERE age = 20
OR age <> 20
OR age IS NULL;
6.1. 示例
6.1.1. --col_1为1时返回○、为NULL时返回×的CASE表达式?
CASE col_1
WHEN 1 THEN'○'
WHEN NULL THEN'×'
END
6.1.2. CASE表达式一定不会返回×
6.1.3.
CASE WHEN col_1 = 1 THEN'○'
WHEN col_1 IS NULL THEN'×'
END
6.2. CASE表达式的判断方法与WHERE子句一样,只认可真值为true的条件
7.1. IN改写成EXISTS是等价改写
7.2. NOT IN和NOT EXISTS不是等价的
7.3. 示例
7.3.1. B班山田的年龄是NULL
7.3.2. --查询与B班住在东京的学生年龄不同的A班学生的SQL语句?
SELECT *
FROM Class_A
WHERE age NOT IN ( SELECT age
FROM Class_B
WHERE city =’东京’);
7.3.3. --正确的SQL语句:拉里和伯杰将被查询到
SELECT *
FROM Class_A A
WHERE NOT EXISTS ( SELECT *
FROM Class_B B
WHERE A.age = B.age
AND B.city = ’东京’);
7.3.4. --1.执行子查询,获取年龄列表
SELECT *
FROM Class_A
WHERE age NOT IN (22, 23, NULL);
SELECT *
FROM Class_A A
WHERE NOT EXISTS ( SELECT *
FROM Class_B B
WHERE A.age = NULL
AND B.city =’东京’);
7.3.5. --2.用NOT和IN等价改写NOT IN
SELECT *
FROM Class_A
WHERE NOT age IN (22, 23, NULL);
SELECT *
FROM Class_A A
WHERE NOT EXISTS ( SELECT *
FROM Class_B B
WHERE unknown
AND B.city =’东京’);
7.3.6. --3.用OR等价改写谓词IN
SELECT *
FROM Class_A
WHERE NOT ( (age = 22) OR (age = 23) OR (age = NULL) );
SELECT *
FROM Class_A A
WHERE NOT EXISTS ( SELECT *
FROM Class_B B
WHERE false或unknown);
7.3.7. --4.使用德·摩根定律等价改写
SELECT *
FROM Class_A
WHERE NOT (age = 22) AND NOT(age = 23) AND NOT (age = NULL);
SELECT *
FROM Class_A A
WHERE NOT EXISTS ( SELECT *
FROM Class_B B
WHERE false或unknown);
7.3.8. --5.用<>等价改写NOT和=
SELECT *
FROM Class_A
WHERE (age <> 22) AND (age <> 23) AND (age <> NULL);
7.3.9. --6.对NULL使用<>后,结果为unknown
SELECT *
FROM Class_A
WHERE (age <> 22) AND (age <> 23) AND unknown;
7.3.10. --7.如果AND运算里包含unknown,则结果不为true
SELECT *
FROM Class_A
WHERE false或unknown;
7.4. EXISTS谓词永远不会返回unknown
8.1. 多个以AND连接的逻辑表达式的省略写法
8.2. 与IN是等价的,所以我们不经常使用ANY
8.3. 示例
8.3.1. --查询比B班住在东京的所有学生年龄都小的A班学生
SELECT *
FROM Class_A
WHERE age < ALL ( SELECT age
FROM Class_B
WHERE city =’东京’);
8.3.2.
--1.执行子查询获取年龄列表
SELECT *
FROM Class_A
WHERE age < ALL ( 22, 23, NULL );
--2.将ALL谓词等价改写为AND
SELECT *
FROM Class_A
WHERE (age < 22) AND (age < 23) AND (age < NULL);
--3.对NULL使用“<”后,结果变为 unknown
SELECT *
FROM Class_A
WHERE (age < 22) AND (age < 23) AND unknown;
--4. 如果AND运算里包含unknown,则结果不为true
SELECT *
FROM Class_A
WHERE false 或 unknown;
9.1. --查询比B班住在东京的年龄最小的学生还要小的A班学生
SELECT *
FROM Class_A
WHERE age < ( SELECT MIN(age)
FROM Class_B
WHERE city =’东京’);
9.2. 限定谓词和极值函数不是等价的
9.3. 极值函数在统计时会把为NULL的数据排除掉
9.4. 极值函数在输入为空表(空集)时会返回NULL
9.4.1.
--1.极值函数返回NULL
SELECT *
FROM Class_A
WHERE age < NULL;
--2.对NULL使用“<”后结果为 unknown
SELECT *
FROM Class_A
WHERE unknown;
10.1. COUNT以外的聚合函数当输入为空表时返回NULL
10.2. 示例
10.2.1. --查询比住在东京的学生的平均年龄还要小的A班学生的SQL语句?
SELECT *
FROM Class_A
WHERE age < ( SELECT AVG(age)
FROM Class_B
WHERE city =’东京’);
10.2.2. 没有住在东京的学生时,AVG函数返回NULL
10.2.3. 外侧的WHERE子句永远是unknown,也就查询不到行
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
我在破坏脚本的字符串中出现了一些奇怪的字符。据我所知,通过putbadstring到控制台,它们是"\0\0\0\0"。我想对此进行测试,以便我可以忽略它们...但是如何呢?以为这就是blank?和empty?的用途?!?:>badstring="\0"=>"\u0000">badstring.blank?NoMethodError:undefinedmethod`blank?'for"\u0000":Stringfrom(irb):97from/Users/meltemi/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in`'>badstring.em
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析: 在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1: print(k)k=k/2A.1000 B.10C.11D.9解析: 按照题意每次循环K/2,直到K值小于等
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时