4.3 where关键字过滤查询数据

关键字where 、in、not in、or、and、逻辑运算等组合使用 ### where之比较查询的方法 功能:```利用比较运算符查询符合条件的数据``` 语法: 1:select * from 数据表名 where id 15;(表示查询id不等于15的所有字段数据) 2:select * from 数据表名 where id = 15; (表示查询id等于15的所有字段数据) ```objectivec SELECT * FROM student S WHERE S.sage 21 AND S.sage=20 阅读详情


1.使用WHERE子句

数据库表一般包含大量数据,我们很少需要查询表中的全部数据,通常只会根据特定操作或报告的需要提取表数据的子集。只查找所需数据需要指定搜索条件,搜索条件也称为过滤条件;

在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤, WHERE 子句在表名之后(FROM子句) 之后给出,如下所示:

SELECT prod_price,prod_name
FROM products
WHERE prod_price = 3.42;

其查询结果如下:
在这里插入图片描述

这个例子使用了简单的相等测试,它检查一个列是否具有指定的值,根据此值进行过滤,但 WHERE 子句还有很多其他功能可以实现;

2.WHERE子句操作符

MySql 支持以下所有的条件操作符:

操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN在指定的俩个值之间

2.1 使用单个值

我们再来看一个测试相等的例子:

SELECT prod_price,prod_name
FROM products
WHERE prod_name = 'fuses';

输出:

在这里插入图片描述

其返回prod_name的值为 Fuses 的一行,MySql 在执行匹配时默认不区分大小写,所以 Fuses 与 fuses 没有区别;

接下来再来看一个使用其他操作符的例子:

SELECT prod_price,prod_name
FROM products
WHERE prod_price < 10;

输出:

在这里插入图片描述

其查询价格小于10的全部所有产品;

下一条语句查询价格小于等于10 的所有产品:

SELECT prod_price,prod_name
FROM products
WHERE prod_price <= 10;

输出:

在这里插入图片描述

2.2 不匹配检查

下面的例子查询不是由供货商1003 制造的所有产品:

SELECT vend_id,prod_name
FROM products
WHERE vend_id <> 1003;

输出:

在这里插入图片描述

其查询结果与下方的SQL语句一致:

SELECT vend_id,prod_name
FROM products
WHERE vend_id != 1003;

输出:

在这里插入图片描述

2.3 范围值查询

为了检查某个范围的值,可以使用 BETWEEN 操作符;其语法与其他 WHERE 子句的操作符不同,它需要俩个值,即范围的开始值与结束值;如:

SELECT prod_price,prod_name
FROM products
WHERE prod_price BETWEEN 5 AND 10;

输出:

在这里插入图片描述

其用来查询价格在 5-10 之间的所有产品,这俩个值用 AND 关键字分隔,BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值;

2.4 空值检查

在创建表时,初始设计可以指定某些列是否可以为 NULL,这个 WHERE 子句就是 IS NULL 子句,如:

SELECT cust_id
FROM customers
WHERE cust_email IS NULL;

输出:
在这里插入图片描述

这条语句查询没有电子邮件地址的所有人员ID,同时,也可以查询不为空的列,如:

SELECT cust_id
FROM customers
WHERE cust_email IS NOT NULL;

输出:
在这里插入图片描述

这条语句查询有电子邮件地址的所有人员ID;

3.组合WHERE子句

MySql允许给出多个WHERE子句,这些子句以俩种方式进行使用:以AND子句或OR子句方式进行连接使用;

3.1 AND操作符

为了使用多个列的条件进行过滤,可以使用AND操作符给WHERE子句附加条件,如:

SELECT prod_id, prod_price,prod_name
FROM products
WHERE vend_id = 1003 AND prod_price <= 10;

输出:
在这里插入图片描述

这条SQl语句查询所有供应商1003制造并且价格小于等于 10 的产品名称,产品ID和产品价格;

AND关键字表明返回同时满足所有给定条件的行;还可以继续增加过滤条件,每增加一个过滤条件,就要使用一个AND关键字;

3.2 OR操作符

OR操作符与AND操作符不同,其表示查询时匹配任一条件的行;如:

SELECT prod_price,prod_name
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;

输出:

在这里插入图片描述

其表示查询由供应商1002 或 供应商1003 ,同时返回他们俩家供应商的全部产品名称和价格,如果这里使用 AND 关键字,则不反回任何数据,因为表中没有既是供应商1002制造,又是供应商1003制造的商品;

3.3 计算次序

WHERE 子句可以包含任意数量的AND 和 OR 操作符,允许俩者同时使用,以便完成更加复杂的过滤条件,但这也带来一个问题,假如需要查询价格大于等于10 且供应商为1002或1003的全部产品,其SQL语句如下:

SELECT prod_price,prod_name
FROM products
WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

输出:
在这里插入图片描述

返回结果中有俩个价格小于10 的产品,很显然返回的结果不满足预期,原因就在于计算的次序,SQL 在处理条件过滤时,优先处理AND关键字,然后才处理 OR 关键字,上面的语句会被认为是要查询供应商为1003并且价格大于10 或供应商为1002 的商品,在供应商1002的商品中,并没有了限定价格的条件,遇到类似这样的问题,我们可以使用小括号来限定我们的条件组合,如:

SELECT prod_price,prod_name
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;

输出:

在这里插入图片描述

这样,就会优先查找供应商为1002和1003的产品,在从产品中过滤出价格大于等于10 的产品来进行展示;

4.IN操作符

IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配,将范围的值全部放到小括号中,由逗号进行分隔,如:

SELECT prod_price,prod_name
FROM products
WHERE vend_id IN (1002,1003)
ORDER BY prod_name;

输出:
在这里插入图片描述

这条SQL语句查询供应商1002与1003制造的所有产品,并通过产品名称进行排序,IN关键字后的括号中包含所有条件的合法清单,其用逗号分隔,这里要注意的是全部的合法清单,如果括号中是(1002,1007),其并不会查询1003,1004…1006这几个值,因为其不在括号中;

IN操作符的优点如下:

  1. 在使用较长的条件时,IN操作符的语法更加清晰直观;
  2. 在使用IN操作符时,计算的次序更容易管理;
  3. IN操作符一般比OR操作符执行更快;
  4. IN操作符最大的优势在于可以包含其他SELECT语句,可以实现子查询(后续将介绍子查询);

5.NOt关键字

NOt 关键字有且只有一个功能,除了 IS NOT NUll 我们在前边介绍过外,其他所有的格式都一致,其作用就是否定它之后所跟的任何条件,如:

SELECT prod_price,prod_name
FROM products
WHERE vend_id NOT IN (1002,1003)
ORDER BY prod_name;

输出:
在这里插入图片描述

其查询结果不是查询匹配供应商为1002和1003的,而是匹配除他们俩家供应商外其他所有供应商的;

5.注意事项

5.1 NULL与不匹配

要注意,在通过过滤选择出不具有特定值的行时,你可能希望返回具有NULL值的行,但这是不行的,因为未知具有特殊的含义,数据库不知道他们是否匹配,所以在匹配查询或者不匹配查询时不返回它们;

所以在查询数据时,一定要验证返回数据中确实给出了被过滤列具有 NULL 的行;

5.2 SQL过滤与应用过滤

数据也可以在应用层进行过滤,在应用层进行过滤,SQl会提供超过实际所需的数据,然后应用再对返回的全部数据进行循环过滤,提取出需要的数据;

通常,这样的做法很不适合商业化的开发,一般商业化开发中,表中会存在大量数据,大量数据在客户——应用——数据库中进行交互,十分占用网络通信,并且在应用层处理大量的数据也十分影响系统性能;

所以要尽可能的在SQl中过滤掉不需要的数据,将数据之间的传递尽可能的使其内容瘦身;

5.3 WHERE子句的位置

在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将会产生错误;

其实在这里可以通过书写顺序进行理解,我们要先将数据通过 WHERE 进行过滤,然后再通过 ORDER BY 进行排序,这样需要排序的数据更少,性能更好;

【Neo4j】Cypher 语言:WHERE 语句过滤查询结果 在Neo4j的Cypher查询语言中,我们可以使用WHERE语句来过滤查询结果,从而获取满足特定条件的节点和关系。下面是详细的用法和示例。等值匹配 WHERE p.name = "Tom Hanks" 数值比较 WHERE m.year > 1990 字符串匹配 WHERE m.title CONTAINS "War" 阅读详情

相关推荐

深入解析NPN与PNP传感器驱动电路的设计逻辑与实战应用

本文深入解析NPN与PNP传感器驱动电路的设计逻辑与实战应用,详细对比两者的电流路径差异和电平变化特性。通过实际案例分享电路设计要点,包括上拉电阻选择、保护二极管配置等,并提供工业应用中的选型策略和常见故障排查指南,帮助工程师优化传感器系统集成。

weixin_42561476的博客 465

C# 中where关键字总结

C# 中where关键字总结

day day up 2148

联想Y9000P安装Ubuntu20.04记录

联想Y9000P 2022安装Ubuntu20.04问题记录

Legendyyy的博客 7104

C# Where关键字

C#的where关键字用途

vtheshow 1726

用RK3588+FPGA搞定Cameralink高速相机?这份保姆级硬件选型与接口配置指南请收好

本文详细介绍了如何利用RK3588与FPGA构建Cameralink高速相机系统,涵盖硬件选型、接口配置及性能优化等关键步骤。通过异构计算架构和精准的带宽分配,实现工业视觉检测和科研成像领域的高效解决方案,特别适合需要实时处理的复杂应用场景。

weixin_30493401的博客 636

MySQL【过滤数据(where)】

​ 使用WHERE子句 在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。 WHERE子句在表名(FROM子句)之后给出 select prod_id,prod_price,prod_name from products where prod_price = 2.50 WHERE子句操作符 检查单个值 select prod_id,prod_price,prod_name from products where prod_name = 'fuses' ..........

随便写写 1474

51单片机入门指南-基于STC89C52(持续更新)

一、环境介绍 编程IDE: keil5 单片机型号: STC89C51/52 开发板: 普中科技的开发板 完整PDF资源下载地址:https://download.csdn.net/download/xiaolong1126626497/19785856 二、51单片机开发手册介绍 2.1 前言 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。 该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最.

8785

结构化查询语句SQL介绍和基本操作之过滤数据,Where子句的使用详解

如果仔细观察上述 WHERE 子句中使用的条件,会看到有的值括在单引号内(如前面使用的 ‘fuses’ ),而有的值未括起来。为此目的,SQL的 SELECT 语句为客户机应用检索出超过实际所需的数据,然后客户机代码对返回数据进行循环,以提取出需要的行。从 products 表中检索两个列(prod_name,prod_price),但不返回所有行,只返回 prod_name 的值为 Fuses 的一行。其语法与其他 WHERE 子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。

白话机器学习 511

适航文章汇总:知识体系全面梳理

无论您是行业新手还是经验丰富的专业人士,都可以通过本篇文章快速查找相关资料,提高对适航认证、机载系统、软件及硬件等领域的理解。本部分详细解析ARP 4754A、ARP 4761、DO-178C、DO-254等核心标准,并介绍其在机载系统开发中的应用。介绍FAA、EASA、CCAR等主要航空管理机构的适航规章体系,并说明各类飞行器(如固定翼、旋翼机、无人机等)的适航要求。本部分还探讨硬件设计、验证与确认过程中的挑战。从系统架构设计到机载设备的集成与管理,本部分介绍机载系统的研发体系及适航管理的最佳实践。

qq_41854911的博客 1441

基于STM32设计的智能井盖(Lora组网+4G上云)_423

设计并实现了一种基于 STM32 与 Lora 通信技术的智能井盖监测系统。系统采用 STM32F103C8T6 作为核心控制器,在井盖节点端集成水位检测、有害气体检测、倾斜角度检测以及 GPS 定位等功能模块,对井盖内部环境状态和姿态变化进行实时监测。各井盖节点通过 Lora 无线通信方式组成网络,将采集的数据发送至主机(网关)进行汇聚处理。

710

MySQL WHERE 子句:数据过滤的艺术

MySQL WHERE 子句是数据过滤的核心技术,本文全面解析其用法和优化技巧。基础部分涵盖比较运算符(=、>、<等)和逻辑运算符(AND、OR、NOT)的组合使用。

✨ 欢迎来到【Seal ^_^ 的CSDN博客】!✨ 8921

【数据同化第一期】基本概念介绍

【数据同化第一期】基本概念介绍

WW、forever的博客 1894

Mysql从入门到入魔——3. 查询、排序、WHERE过滤

Mysql入门到入魔——3. 查询、排序、WHERE过滤 ❤ 系列首页 ❤ Mysql入门到入魔——1. 数据准备(起航篇) 本篇主要内容 简单的查询

向日葵的专属太阳 1603

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

having和where的区别

HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法。 但是 WHERE 和 HAVING 关键字也存在以下几点差异: 1.一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。 2.WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。 3.WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。 4.WHERE 针对数据库文件进行过滤,而 HAVING 针对查询

weixin_43231592的博客 3万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SQL过滤数据——WHERE

如何使用 SELECT 语句的 WHERE 子句指定搜索条件。 总表 1、使用 WHERE 子句 数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会 根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指 定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。 在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索...

有人_295的博客 3510

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

04 WHERE子句过滤数据 - 精准查询的艺术

本文是MySQL数据库系列教程的第四篇,重点讲解WHERE子句的使用方法。文章首先介绍了数据过滤的必要性和WHERE子句的位置,然后详细解析了WHERE子句的基本语法和各种比较操作符(=、<>、<、>等)的使用场景,并通过商品表示例演示了如何实现精确数据过滤。此外,还介绍了范围值检查(BETWEEN)和空值检查(IS NULL/IS NOT NULL)等高级过滤技巧。全文强调在数据库层面过滤数据的重要性,以提高查询效率和减少网络传输负担。

weixin_74353123的博客 882

Mysql——3.查询、排序、WHERE过滤

1.查询 1.1注释的使用 -- 单行注释 # 单行注释 /* 多行注释 */

小新测试提升路 304

MySQL数据库——别名和where关键字查询

别名和where关键字查询建表并插入数据单表查询别名方法一、使用as关键字方法二、省略as关键字wherelike模糊查询逻辑条件is null和is not nullbetween关系条件 建表并插入数据 create table student( id char(36) primary key, name varchar(8) not null, age int(3) default 0...

paku-san的博客 1863

数据库中where、group by、having等关键字的执行顺序

数据库查询中经常使用的关键字 主要包含六个,并且他们的排列顺序为: select--from--where--group by--having--order by 其中select和from是最基本也是必须的的关键字,其他的关键字可以根据需要搭配选择与sql语句的书写顺序并不是一样的,执行顺序如下: from--where--group by--having--sel...

Jmayday 5060

滚雪球学MySQL[2.3讲]:MySQL数据过滤与排序详解:WHERE条件、ORDER BY排序与LIMIT分页查询

在上一期内容中,我们详细讨论了MySQL中的基本数据操作(2.2),包括插入(INSERT)、查询(SELECT)、更新(UPDATE)以及删除(DELETE)四种最常见的数据操作。通过这些操作,我们能够在数据库表中增删改查数据,完成基础的数据库管理任务。然而,在实际应用中,面对大量的数据,我们往往需要更精确、更高效地从数据库中提取特定的信息。仅仅通过SELECT *查询所有数据显然是不够的,查询结果可能过多且不够直观。这就需要我们掌握更多高级的查询技巧,包括数据过滤排序以及分页。本期内容将详细讲解。

**My Coding Family** 2264

SQL (三)过滤数据(select语句的where子句,指定搜索条件)

文章目录注意:不要用应用过滤,而用SQL过滤WHERE 子句(在from子句后)where子句的条件操作符示例1:<, <=示例2:相等检验示例3:不匹配检查示例4:范围检查,between示例5:空值检查(where子句的is null子句)总结 注意:不要用应用过滤,而用SQL过滤 因为 SQL才是操作数据库最高效的语言,客户源开发语言操作低效 服务器把大量未经过滤的数据通过网络传给客户端,浪费网络资源 WHERE 子句(在from子句后) where子句的条件操作符 好多奇怪的长

wulimmya的博客 2737

SQL中JOIN操作后接ON和WHERE关键字的区别

当使用连接(JOIN)操作,关联两张或多张表返回记录时,数据库都会生成一张临时表,最后将这张临时表返回给用户。这里以LEFT JOIN为例。ON条件是在生成临时表时使用的条件,它不管ON中的条件是否为真,都会返回左边表中的全部记录;WHERE条件是在临时表已经生成后,对临时表进行的过滤条件。因为此时已经没有LEFT JOIN的含义(必须返回左侧表的记录)了,所以WHERE条件不为真的记录就会被过滤掉。mysql>

liitdar的博客 3万+

MySQL having关键字详解、与where的区别

MySQL having关键字详解、与where的区别

睡竹的博客 8355

【MySQL基础知识】查询、过滤数据关键字

MySQL基础知识 一、检索数据 1. SELECT select是使用最广泛的检索数据的语句。 检索要查的表的所有列: select * from (表名称)... 检索要查的表的某一列或多列: select (列名称),(列名称)... from (表名称)... 2. DISTINCT 用来检索不同行即不重复的数据 select distinct (列名称) from (表名称)...

Moo_Lavender的博客 4342
上一篇: 4.6 创建计算字段
下一篇: 4.7 全文本搜索
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值