当前位置: 首页 > 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

相关文章:

  • 网站建设和优化的好处关键路径
  • qq在线聊天网页沈阳网站seo排名公司
  • 招聘网站开发人员哪里有网页设计公司
  • 深圳知名网站建设平台优秀网站设计网站
  • 三级分销网站建设营销推广seo
  • 电子产品网站建设策划seo标题关键词优化
  • 【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
  • 轨迹降噪API及算法
  • 【Python练习】011. 定义一个字符串变量并打印其长度
  • linux中信号解析
  • Unity3D仿星露谷物语开发70之背景音乐
  • Docker 数据持久化完全指南:Volume、Bind Mount 与匿名卷
  • 多网卡与网关配置关系详解:是否能共用、如何分配、如何避免冲突
  • Android 开发问题:Wrong argument type for formatting argument ‘#2‘ in info_message
  • 有AI后,还用学编程吗?
  • C++(异常处理)
  • 电影交流平台小程序完整项目
  • 鸿蒙OH南向开发 轻量系统内核(LiteOS-M)【异常调测】
  • linux操作系统的软件架构分析
  • 左神算法之双集合平均值优化操作的最大次数
  • 【Linux】高级IO
  • MySQL:深入总结锁机制
  • 机器学习×第十四卷:集成学习中篇——她从每次错误中修正自己
  • Java实现简易即时通讯系统
  • Linux离线搭建Jenkins
  • C++【生存游戏】开发:荒岛往事 第一期