当前位置: 首页 > news >正文

SQL Server从入门到项目实践(超值版)读书笔记 18

9.2 数据的条件查询

在SELECT语句中,通过添加WHERE子句,可以对查询结果进行过滤,也就是使用WHERE子句进行条件查询,具体语法如下:

SELECT col_name1,col_name2,... 
FROM table_name 
WHERE conditions

本节将介绍如何在查询条件中使用这些判断条件

9.2.1 使用关系表达式查询

WHERE子句中,关系表达式由关系运算符和列组成,可用于列值的大小相等判断。

主要的运算符如下表:

操作符

说明

=

相等

<>

不相等

<

小于

<=

小于或等于

>

大于

>=

大于或等于

例:查询基本工资为2500原的员工信息

SELECT * FROM employee
WHERE salary=2500

上述实例采用了简单的相等过滤,另外,相等判断还可以用来比较字符串。

例:查找工作类型为“文员”的员工信息

SELECT * FROM employee
WHERE job='文员'

例:查询基本工资小于3500原的员工信息

SELECT * FROM employee
WHERE salary<3500

9.2.2 查询某个范围内的数据

使用BETWEEN AND语句可以查询某个范围内的数据,该运算符需要两个参数,即范围的开始值和结束值,如果记录的字段值满足指定的范围查询条件,则这些记录被返回。

例:查询员工工资在2500元~3500元的员工信息

SELECT * FROM employee
WHERE salary BETWEEN 2500 AND 3500

BETWEEN AND运算符前可以加上关键字NOT,表示在指定范围之外的值,如果字段值不满足指定范围内的值,则这些记录被返回。

例:查询员工工资不在2500元~3500元之间的员工信息

SELECT * FROM employee
WHERE salary NOT BETWEEN 2500 AND 3500

9.2.3 查询指定范围内的数据

使用IN关键字可以查询满足指定条件范围内的记录,使用IN关键字时,将所有检索条件用括号括起来,检索条件用逗号分隔,只要满足条件范围内的一个值即为匹配成功,则返回这些记录。

SELECT col_name1,col_name2,...
FROM table_name
WHERE col_name IN (value1,value2,...)
📢注意:
在IN关键字前面的时数据表中的列名,IN后面括号中是具体的值,一定要注意IN后面的内容数据类型要一致。

例:查询员工编码为101和102的数据记录

SELECT * FROM employee
WHERE code IN (101,102)

同理,也可以在IN前面加上NOT关键字,来查询不在指定范围内的数据。

例:查询员工编码不是101,也不是102的数据记录

SELECT * FROM employee
WHERE code NOT IN (101,102)

9.2.4 模糊查询用LIKE关键字

所谓模糊查询,就好像在百度中搜索一样,输入一个词或一句话,就会出来与之相关的内容。

在数据库中,使用LIKE关键字之前,用户需要先记住几个通配符,如下表。

通配符是一种在SQL的WHERE条件子句中拥有特殊意义的字符。

通配符

说明

%

包含零个或多个字符的任意字符串

_

任何单个字符

[]

指定范围([a-f])或集合([abcdef])中的任何单个字符

[^]

不属于指定范围([a-f])或集合([abcdef])中的任何单个字符

9.2.4.1 百分号通配符“%”,匹配任意长度的字符,甚至包括零字符

例:查找以“张”开头的员工信息

SELECT * FROM employee
WHERE name LIKE '张%'

在搜索匹配时,通配符“%”可以放在任何位置

例:查询员工姓名中含有“建”字的记录

SELECT * FROM employee
WHERE name LIKE '%建%'

9.2.4.2 下划线通配符“_”,一次只能匹配任意一个字符

下划线通配符“_”,一次稚嫩个匹配一个任意字符,该通配符的用法和“%”相同,区别是“%”匹配多个字符,而“_”只匹配任意一个单字符,如果要匹配多个字符,则需要使用多个“_”。

例:查询员工姓名以字符“妍”结尾,且“妍”前面只有一个字符的记录

SELECT * FROM employee
WHERE name LIKE '_妍'

9.2.4.3 匹配指定范围中的任何单个字符

方括号[]指定一个字符集合,只要匹配其中任何一个字符,即为所查找内容。

例:查找员工姓名以“张建”两个字之一开头的记录

SELECT * FROM employee
WHERE name LIKE '[张建]%'

9.2.4.4 匹配不属于指定范围的任何单个字符

“[^字符集合]”匹配不在指定z 中的任何字符。

例:查找员工姓名不是以“张建”两个字之一开头的记录

SELECT * FROM employee
WHERE name LIKE '[^张建]%'

9.2.5 含有NULL值的列也能查看

在创建数据表时,设计者可以指定某列中是否包含空值(NULL)。

空值不等同于0,也不等同于空字符串,空值一般表示数据未知,不适用或将在以后添加。

在SELECT语句中使用IS NULL子句,可以查询某字段内容为空的记录。

为了演示该操作,在数据表employee中,插入两行员工性别为空值的数据记录。

INSERT INTO employee
VALUES(113,'李向阳',null,2,'技术员',3000),(114,'刘欣欣',null,2,'文员',3000)

例:查询员工性别为空的记录

SELECT * FROM employee
WHERE sex IS NULL

与IS NULL相反的是IS NOT NULL,该子句查找字符字段不为空的记录

SELECT * FROM employee
WHERE sex IS NOT NULL

http://www.lryc.cn/news/574849.html

相关文章:

  • [学习] C语言编程中线程安全的实现方法(示例)
  • 【Datawhale组队学习202506】YOLO-Master task04 YOLO典型网络模块
  • Python训练营-Day40-训练和测试的规范写法
  • 【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
  • 【Linux网络与网络编程】15.DNS与ICMP协议
  • 性能测试-jmeter实战4
  • 集成学习基础:Bagging 原理与应用
  • PyEcharts教程(009):PyEcharts绘制水球图
  • 60天python训练营打卡day41
  • Linux系统---Nginx配置nginx状态统计
  • 鸿蒙 Stack 组件深度解析:层叠布局的核心应用与实战技巧
  • AI时代工具:AIGC导航——AI工具集合
  • 接口自动化测试之pytest 运行方式及前置后置封装
  • 爬取小红书相关数据导入到excel
  • 项目需求评审报告参考模板
  • 图的拓扑排序管理 Go 服务启动时的组件初始化顺序
  • 飞往大厂梦之算法提升-day08
  • sqlserver怎样动态执行存储过程,并且返回报错
  • Java实现简易即时通讯系统
  • day41 打卡
  • 基于元学习的回归预测模型如何设计?
  • MySQL:深入总结锁机制
  • linux操作系统的软件架构分析
  • 战略调整频繁,如何快速重构项目组合
  • 原生策略与功耗方案参考
  • Android 开发问题:Wrong argument type for formatting argument ‘#2‘ in info_message
  • 马克思主义基本原理期末复习下
  • DVWA Brute Force漏洞深度分析与利用指南
  • iwebsec靶场sqli注入(2)
  • Vue3+Spring boot 前后端防抖增强方案