SQL Sever 基础知识 - 数据筛选(2)

SQL Sever 基础知识 - 四、数据筛选

    • 第3节 NULL
      • 3.1 NULL 和三值逻辑
      • 3.2 IS NULL / IS NOT NULL
    • 第4节 AND
      • 4.1 AND 运算符简介
      • 4.2 AND 运算符示例
        • 4.2.1 一个 AND 运算符
        • 4.2.2 多个 AND 运算符
        • 4.2.3 将 AND 运算符与其他逻辑运算符一起使用
    • 第5节 OR
      • 5.1 OR 运算符简介
      • 5.2 OR 运算符示例
        • 5.2.1 一个OR运算符
        • 5.2.2 多个OR运算符
        • 5.2.3 OR运算符同AND运算符一起使用
    • 第6节 IN
      • 6.1 IN运算符概述
      • 6.2 IN 运算符示例
        • 6.2.1 IN 与值列表
        • 6.2.2 NOT IN 与值列表
        • 6.2.3 IN 运算符用于子查询

更多SQL Sever基础知识可查看:SQL Sever 基础知识(全)

特别说明
  本文章所用的所有数据库、数据表及其数据皆为AI随机生成,不涉及个人隐私,且仅供学习使用!

第3节 NULL

NULL 和三值逻辑;使用 IS NULL 和 IS NOT NULL 运算符来测试值是否为 NULL 。

3.1 NULL 和三值逻辑

在数据库中, NULL 用于表示不存在任何数据值。未知的数据在数据库中将其记录为 NULL 。
通常逻辑表达式的结果是 TRUE 或 FALSE 。当 NULL 参与逻辑评估时,结果是 UNKNOWN 。因此,逻辑表达式可以返回三值逻辑之一: TRUEFALSEUNKNOWN
执行下列查询代码:

  if NULL = 0print 1elseprint 0if NULL <> 0print 1elseprint 0if NULL > 0print 1elseprint 0if NULL < 0print 1elseprint 0if NULL = NULLprint 1elseprint 0

执行结果:

0
0
0
0
0

通过结果我们可以发现,NULL 不等于任何东西,甚至不等于(<>)ta自己。这说明NULL 不等于 NULL ,因为每个 NULL 可能不同。(狠起来连自己都不是!)

3.2 IS NULL / IS NOT NULL

查找在 CustomerInfo表中没有记录Age的客户:

 select * from CustomerInfowhere Age = NULL

执行结果:
在这里插入图片描述
可以发现查询返回空结果集,WHERE 子句返回导致其谓词计算为 TRUE 的行。但是‘ Age = NULL ’表达式的计算结果为 UNKNOWN ,所以查询不到任何数据,要查询一个值是否为 NULL ,需要使用 IS NULL 运算符。
改写上述代码:

 select * from CustomerInfowhere Age is NULL

执行结果:
在这里插入图片描述
查询返回了没有电话信息的客户,要查询的值不是 NULL ,可以使用 IS NOT NULL 操作符。
以下查询返回记录Age的客户:

 select * from CustomerInfowhere Age is not NULL

第4节 AND

合并两个布尔表达式,如果所有表达式都为 true,则返回 true

4.1 AND 运算符简介

AND 是一个逻辑运算符,允许联合两个布尔表达式。仅当两个表达式的计算结果都为 TRUE 时,它才返回 TRUE
下面说明了 AND 运算符的语法:

<表达式1> and <表达式2>

<表达式1,2,...> 是计算结果为 TRUEFALSEUNKNOWN 的任何有效布尔表达式。

下表显示了使用 AND 运算符将 TRUEFALSEUNKNOWN 值组合在一起时的结果:

TRUEFALSEUNKNOWN
TRUETRUEFALSEUNKNOWN
FALSEFALSEFALSEFALSE
UNKNOWNUNKNOWNFALSEUNKNOWN

Note:在表达式中使用多个逻辑运算符时,执行时会首先计算AND运算符。但是,可以使用括号更改计算顺序。

4.2 AND 运算符示例

4.2.1 一个 AND 运算符

查询CustomerInfo表中已签收且年龄大于30岁的所有顾客信息:

 select *from CustomerInfowhere Status = '已签收' and Age > 30

执行结果:
在这里插入图片描述

4.2.2 多个 AND 运算符

查询年龄在30到35岁之间女性用户信息:

 select *from CustomerInfowhere  Age >= 30 and Age <= 35 and Gender = 'Female'

执行结果:
在这里插入图片描述

4.2.3 将 AND 运算符与其他逻辑运算符一起使用

查询北京或上海地区的顾客且物流状态为已签收的顾客信息:

 select * from CustomerInfowhere Province = '北京市' or Province = '上海市' and Status = '已签收'order by Province

执行结果:
在这里插入图片描述
根据执行结果发现,结果集返回了北京地区的所有物流状态客户信息和上海地区已签收的信息,这并不符合我们的查询要求,原因在于在多个运算符同时存在时,会先计算AND运算,算出来的集在于OR前的表达式做运算,导致查询结果产生误差。
需要修改代码,改变运算顺序:

 select * from CustomerInfowhere (Province = '北京市' or Province = '上海市') and Status = '已签收'order by Province

执行结果:
在这里插入图片描述

第5节 OR

组合两个布尔表达式,如果任一条件为 true,则返回 true

5.1 OR 运算符简介

OR 是一个逻辑运算符,用于联合两个布尔表达式。当任何一个条件的计算结果为 TRUE 时,它返回 TRUE 。
下面显示了 OR 操作符的语法:

<表达式1> or <表达式2>

<表达式1,2,...> 是计算结果为 TRUEFALSEUNKNOWN 的任何有效布尔表达式。
下表显示了使用 OR 运算符将 TRUEFALSEUNKNOWN 值组合在一起时的结果:

TRUEFALSEUNKNOWN
TRUETRUETRUETRUE
FALSETRUEFALSEUNKNOWN
UNKNOWNTRUEUNKNOWNUNKNOWN

Note:在表达式中使用多个逻辑运算符时,sql 执行时会计算完AND运算符后再计算OR运算符。但是,可以使用括号更改计算顺序。

5.2 OR 运算符示例

5.2.1 一个OR运算符

查询北京、上海地区的客户信息:

 select * from CustomerInfowhere Province = '北京市' or Province = '上海市'

执行结果:
在这里插入图片描述

5.2.2 多个OR运算符

查询北京、上海和广西地区的客户信息:

 select * from CustomerInfowhere Province = '北京市' or Province = '上海市' or Province = '广西省'

执行结果:
在这里插入图片描述
在使用多个OR运算符且每个表达式条件相同时,可用IN关键字替换使用:

 select * from CustomerInfowhere Province in ('北京市' , '上海市' , '广西省')

执行结果:
在这里插入图片描述

5.2.3 OR运算符同AND运算符一起使用

查询北京或上海地区的顾客且物流状态为已签收的顾客信息:

 select * from CustomerInfowhere Province = '北京市' or Province = '上海市' and Status = '已签收'order by Province

执行结果:
在这里插入图片描述
根据执行结果发现,结果集返回了北京地区的所有物流状态客户信息和上海地区已签收的信息,这并不符合我们的查询要求,原因在于在多个运算符同时存在时,会先计算AND运算,算出来的集在于OR前的表达式做运算,导致查询结果产生误差。
需要修改代码,改变运算顺序:

 select * from CustomerInfowhere (Province = '北京市' or Province = '上海市') and Status = '已签收'order by Province

执行结果:
在这里插入图片描述

第6节 IN

检查值是否与列表或子查询中的任何值匹配

6.1 IN运算符概述

IN 运算符是一个逻辑运算符,允许查询指定的值是否与列表中的任何值匹配。
下面显示 IN 运算符的语法:

<列名> | <表达式> in (v1,v2,...)

在此语法中:
① 需要指定要查询的列或表达式。
② 指定要查询的值列表,所有值的类型必须与列或表达式的类型相同。
③ 如果列或表达式中的值等于列表中的任何值,则 IN 运算符的结果为 TRUE

IN 运算符等价于多个 OR 运算符,以下执行等价:

 --incolumn IN (v1, v2, v3)--orcolumn = v1 OR column = v2 OR column = v3

若需要对 IN 运算符求反,请使用 NOT IN 运算符,语法如下:

<列名> | <表达式> not in (v1,v2,...)

如果列或表达式不等于列表中的任何值,则 NOT IN 运算符的结果为 TRUE

除了值列表之外,还可以使用子查询,该子查询通过 IN 运算符返回值列表,语法如下:

<列名> | <表达式> in (sql_query语句)

在此语法中,子查询是一个 SELECT 语句,返回单个列的值列表

Note :如果一个列表包含 NULL ,则 IN 或 NOT IN 的结果将是 UNKNOWN 。

6.2 IN 运算符示例

6.2.1 IN 与值列表

查询北京、上海和广西地区的客户信息:

 select * from CustomerInfowhere Province in ('北京市' , '上海市' , '广西省')

执行结果:
在这里插入图片描述

6.2.2 NOT IN 与值列表

查询客户所在地区不在’广东省’,‘湖北省’,‘江苏省’,'浙江省’四省的顾客信息:

 select *from CustomerInfowhere Province not in ('广东省','湖北省','江苏省','浙江省')order by Province

执行结果:
在这里插入图片描述

6.2.3 IN 运算符用于子查询

查询在省份客户总人数不足五人的省份的所有顾客信息:

 select *from CustomerInfowhere Province in (select Provincefrom (select Province,count(*) as cntfrom CustomerInfogroup by Province) twhere cnt < 5	)order by Province	

以上代码在子查询中分组查询每个省的总人数,再查询不足五人的省份信息,in(省份)可查询出所在省份的顾客信息。
执行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python高效编程:十招实用技巧大揭秘!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 1. 代码优化与高效数据结构 Python中使用合适的数据结构对于代码性能至关重要。例如&#xff0c;使用字典&#xff08;dict&#xff09;快速查找元素&#xff1a; # 使用字典进行快速查找 sample_dict {a: 1,…

Linux lshw命令(lshw指令)(List Hardware,获取底层硬件信息)(查询硬件信息)

文章目录 Linux lshw命令&#xff1a;一个全面的硬件信息查询工具介绍安装lshw使用lshwlshw的选项和参数lshw文档英文文档中文文档 命令示例lshw -c network -sanitize查看系统网络硬件信息&#xff0c;并移除敏感项&#xff08;显示为REMOVED&#xff09; lshw与其他命令的对比…

创新零售巨头:揭开山姆与Costco蓬勃发展背后的秘密

会员制商店这个冷门的业态突然之间硝烟弥漫&#xff0c;更多的资本开始涌向付费会员商店这一业态&#xff0c;本文即将探讨的是付费会员制的成功秘诀和零售企业可行的发展路径。Costco的发展经验对国内超市巨头的崛起具有显著的借鉴意义&#xff0c;以优质低价商品服务为中心&a…

.NET Core6.0 MVC+layui+SqlSugar 简单增删改查

HTML部分: {ViewData["Title"] "用户列表"; } <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>用户列表</title><meta name"renderer" content"webkit"><meta …

【网络奇缘】- 计算机网络|分层结构|深入探索TCP/IP模型|5层参考模型

​ &#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 OSI参考模型与TCP/IP参考模型相同点 OSI参考模型与TCP/IP参考模型不同点 面向连接三阶段&#xff08…

(C语言)计算n的阶乘

要求使用双精度 #include<stdio.h> double factorial(int n) {if(n 1)return 1;return n * factorial(n-1); } int main() {int n ;double res;scanf("%d",&n);res factorial(n);printf("%lf",res); return 0; } 运行截图&#xff1a; 注&am…

深入微服务架构 | 微服务与k8s架构解读

微服务项目架构解读 ① 什么是微服务&#xff1f; 微服务是指开发一个单个小型的但有业务功能的服务&#xff0c;每个服务都有自己的处理和轻量通讯机制&#xff0c;可以部署在单个或多个服务器上。 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说&…

react结合vant的Dialog实现签到弹框操作

1.需求 有时候在开发的时候&#xff0c;需要实现一个签到获取积分的功能&#xff0c;使用react怎么实现呢&#xff1f; 需求如下&#xff1a; 1.当点击“签到”按钮时&#xff0c;弹出签到框 2.展示签到信息&#xff1a; 签到天数&#xff0c; 对应天数签到能够获取的积分&…

AI代码助手:写代码“如虎添翼”

当你还在头疼如何写好代码&#xff0c;如何更好的快速完成项目时&#xff0c; 这些工具能自动为你编写代码或提供替代的解决方案&#xff1a; 1.Cursor Cursor&#xff0c;一个看上去平平无奇的IDE&#xff0c;但它可以直接调用GPT-4来帮你生成代码。作者Aman Sanger说他们是…

两年外包生涯做完,技术退步了5年不止。。。。

先说一下自己的情况。大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近2年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…

DistributionBalancedLoss

Distribution-Balanced Loss P I ( x k ) P^I(x^k) PI(xk) 1 C ∑ y i k 1 1 n i {1\over C}\sum\limits_{y_i^k1}{1\over{n_i}} C1​yik​1∑​ni​1​&#xff0c; P i C ( x k ) P^C_i(x^k) PiC​(xk) 1 C 1 n i {1\over C}{1\over{n_i}} C1​ni​1​ r i k _i^k ik​ P i …

使用正则表达式时-可能会导致性能下降的情况

目录 前言 正则表达式引擎 NFA自动机的回溯 解决方案 前言 正则表达式是一个用正则符号写出的公式&#xff0c;程序对这个公式进行语法分析&#xff0c;建立一个语法分析树&#xff0c;再根据这个分析树结合正则表达式的引擎生成执行程序(这个执行程序我们把它称作状态机&a…

初步认识结构体

hello&#xff0c;hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习结构体&#xff0c;并跟大家一边做题一边进行学习和理解。感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教&#xff01; 如果本篇文章对你有帮助&#xff0c;还请…

贝叶斯网络 (人工智能期末复习)

文章目录 贝叶斯网络&#xff08;概率图模型&#xff09;定义主要考点例题- 要求画出贝叶斯网络图- 计算各节点的条件概率表- 计算概率- 分析独立性 贝叶斯网络&#xff08;概率图模型&#xff09; 定义 一种简单的用于表示变量之间条件独立性的有向无环图&#xff08;DAG&am…

BGP基本配置

一、知识补充 1、BGP BGP是Border Gateway Protocol&#xff08;边界网关协议&#xff09;的缩写。它是用于在互联网中交换路由信息的一种协议。BGP被广泛应用于大规模的自治系统&#xff08;AS&#xff09;之间&#xff0c;用于实现跨网络的路由选择和交换。 BGP的主要功能…

基于Cocos2D-X框架闯关游戏的设计

摘 要 随着智能设备平台的普及、用户数量的增多&#xff0c;智能平台的应用&#xff0c;尤其是游戏异常火爆&#xff0c;从植物大战僵尸到愤怒的小鸟&#xff0c;移动平台游戏的开发进入了新的阶段。但是另一方面&#xff0c;平台的多样性也给开发者带来诸多不便&#xff0c;怎…

单片机第三季-第四课:STM32下载、MDK和调试器

目录 1&#xff0c;扩展板使用的STM32芯片类型 2&#xff0c;使用普中科技软件下载程序 3&#xff0c;keil介绍 4&#xff0c;JLINK调试器介绍 5&#xff0c;使用普中的调试器进行debug 6&#xff0c;使用Simulator仿真 1&#xff0c;扩展板使用的STM32芯片类型 扩展版…

什么是网络可视化?网络可视化工具有用吗

网络可视化定义是自我描述的&#xff0c;因为它在单个屏幕上重新创建网络布局&#xff0c;以图形和图表的形式显示有关网络设备、网络指标和数据流的信息&#xff0c;为 IT 运营团队提供一目了然的理解和决策。 网络是复杂的实体&#xff0c;倾向于持续进化&#xff0c;随着业…

【C++】异常处理 ⑧ ( 标准异常类 | 标准异常类继承结构 | 常用的标准异常类 | 自定义异常类继承 std::exception 基类 )

文章目录 一、抛出 / 捕获 多个类型异常对象1、标准异常类2、标准异常类继承结构3、常用的标准异常类 二、自定义异常类继承 std::exception 基类1、自定义异常类继承 std::exception 基类2、完整代码示例 - 自定义异常类继承 std::exception 基类 一、抛出 / 捕获 多个类型异常…

java常用知识点记忆

类的继承与多态 类的继承不支持多重继承非private 方法才可以被覆盖覆盖的方法要求&#xff0c;子类中的方法的名字&#xff0c;参数列表&#xff0c;返回类型与父类相同方法的重载是在一个类中定义方法名字相同&#xff0c;但是参数列表不同的方法要是在子类中定义了与父类名字…