`
backspace
  • 浏览: 137204 次
文章分类
社区版块
存档分类
最新评论

7、使用WHERE子句查询表中满足条件的记录

 
阅读更多

在使用SQL语句进行查询操作时,很多时候开发人员或者用户并不是对数据表中的全部记录感兴趣,而只是想得到实际需要的数据记录,这时就需要对查询结果进行限制。在SQL语句中可以使用WHERE子句过滤掉不符合条件的记录。
1.比较查询
在WHERE子句中可以使用比较运算符对数值、字符值等信息进行查询。比较运算符这里归纳为三类:算术比较运算符、BETWEEN…AND运算符和IN运算符。这一节将分别对对这三种比较运算符的查询方法进行介绍。最后还将介绍WHERE子句中字符串和时间的比较方法。
算术比较运算符
SQL语句中的算术比较运算符主要包括=(等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于)、!=(不等于)、 <>(不等于)、!>(不大于)、!<(不小于)。在SELECT语句的WHERE子句中可以使用算术比较运算符对指定列进行比较,其语法格式如下:
字段1  比较运算符 值
其中,字段1表示数据表中需要查询的字段列名,字段1后面跟的是算术比较运算符,值表示的是指定列要比较的数值。使用比较运算符返回的结果是一个逻辑值。如果逻辑值为TRUE,则会返回查询到的记录,如果逻辑值为FALSE,则不会返回相应的查询结果。
注意:在WHERE子句中比较的是数值型数据时,可以不使用单引号;如果是其他类型的数据(例如,字符串、时间型等)则必须使用单引号将其引住。另外,WHERE子句中比较运算符的左侧和右侧的数据类型必须是兼容的。
BETWEEN…AND运算符查询指定条件范围的记录
BETWEEN…AND运算符可以用来查询指定条件范围的记录。使用BETWEEN…AND运算符查询时在BETWEEN运算符和AND运算符后面都需要给定一个值。其语法格式如下:
字段1 BETWEEN 值1  AND 值2
其中,字段1表示数据表中需要查询的字段;值1为给定数值中较小的值;值2为给定数值中较大的值。其最终查询的结果也包括值1和值2本身的值
提示:SQL中,可以使用NOT BETWEEN AND运算符来排除一些记录。例如要查询教师信息表中年龄不在30~50之间的教师信息,就可以通过NOT BETWEEN AND来实现。
IN运算符查询与列表匹配的记录
IN运算符查询用来查询与列表匹配的记录。使用IN运算符,可以将满足列表中满足指定表达式的任何一个值都查询出来。IN运算符后的属性值可以是一个,也可以有多个,多个属性值之间需要要用逗号分隔。其语法格式如下:
字段1 IN(属性值1, 属性值2, 属性值3…)
其中字段1表示数据表中需要查询的字段;属性值1, 属性值2, 属性值3分别表示需要查询的值。属性值既可以是数字类型的也可以是字符类型的值。如果属性值是字符类型的值,则需要使用单引号将其引住。
字符串比较
在使用SQL语句进行比较查询时,经常会遇到字符串比较问题。对字符串进行比较时,常用的数据库都可以使用比较运算符对字符串进行比较,另外,在MySQL数据库中还可以使用关键字BINARY对字符串进行二进制比较。
使用比较运算符对字符串进行比较时,比较运算符的左右两侧字符值应该用单引号引住。
SELECT 'mysql' = 'MySQL'
未命名0
如果希望比较的字符串区分大小写,可以使用BINARY关键字对字符串进行二进制比较。使用BINARY关键字,会把一个字符串(数字)转换成一个二进制对象。格式如下:

SELECT string1 比较运算符 BINARY string2  或
SELECT BINARY string1 比较运算符 string2
SELECT 'mysql' = BINARY 'MySQL'
未命名1
日期时间的比较
在WHERE子句中对日期值和时间进行比较时,要比较的日期和时间必须是数据库服务器可以接受的字符串格式。例如,在学生信息表(T_student)中,学生的出生日期被设置为DATETIME日期类型的变量。要想在WHERE子句中对学生的出生日期值进行比较,可以使用单引号将该日期值引住。
2.逻辑查询
在SQL语句中逻辑运算符主要包括AND、OR和NOT三种。其中AND运算符用来查询同时满足多个条件的记录,OR运算符用来查询多个条件中满足其中任一个条件的记录,NOT运算符用来查询满足相反条件的记录。
使用AND运算符查询同时满足多个条件的记录
在SQL的执行操作中,很多情况下,WHERE子句并不是只希望满足一个条件,而是希望最终查询的结果必须同时满足多个条件(两个或者两个以上)。这个时候就需要使用AND运算符。其语法格式如下:
条件1 AND 条件2
其中条件1,条件2是在WHERE子句中进行查询时需要满足的条件。如果希望使用AND运算符在WHERE子句中连接多个条件。可以使用下面的语法格式。
条件1 AND 条件2  AND条件3 …
这里使用两个AND运算符来连接3个条件。多个AND运算符进行连接操作时,每一个AND运算符两侧的值必须都为TRUE,也就是说这些条件都同时被满足的情况下,结果才会被显示出来。
说明:在Microsoft SQL Server数据库中,使用“&”符号代替AND运算符表示逻辑与运算。
使用OR运算符查询满足任一条件的记录
在使用SQL进行查询操作时,有些时只是希望查询的结果中满足多个条件中的任一条件即可。这个时候就需要使用OR运算符。使用OR运算符可以用来查询满足任一条件的记录。其语法格式如下:
条件1 OR条件2
其中条件1,条件2是在WHERE子句中进行查询时需要的条件。这两个条件中,只要符合其中任何一个条件,则符合该条件的记录就会被检索出来。如果希望使用OR运算符在WHERE子句中连接多个条件。可以使用下面的语法格式
条件1 OR条件2  OR条件3 …
这里使用两个OR运算符来连接3个条件。多个OR运算符进行连接操作时,两侧的条件中任何一个条件为TRUE,满足该条件的记录就会被显示出来。
说明:在Microsoft SQL Server数据库中,使用“|”符号代替OR运算符表示逻辑与运算。
使用NOT运算符对查询条件的布尔值求反
有些时候,需要查询不满足指定条件的记录,这个时候就需要使用NOT运算符。NOT运算符对查询条件的布尔值求反。
说明:在Microsoft SQL Server数据库中,使用“~”符号代替NOT运算符表示逻辑与运算。
这3个逻辑运算符也可以放到一个SQL语句中混合使用。 在这3个逻辑运算符中,NOT的优先级最高,AND的优先级要高于OR。为了便于理解,一般在混合使用这3个逻辑运算符时,可以使用括号将每一个部分括起来。
3.空值查询
在使用SQL语句执行查询操作时,还有一种是空值查询。在数据表中,如果一个表的行属性中不存在任何值的时候,也就是说该表的行属性中没有任何数据记录。那么就将其称之为空值。在SQL的查询中,NULL可以用来表示空值的含义。在SQL语句中,可以使用IS NULL或者IS NOT NULL关键字来判断空值。
4.使用LIKE操作符实现模糊查询
在使用SQL语句进行查询时,经常会遇到这样一种情况,就是不能完全确定所需要查询信息的完整条件,但是这些信息又具有某些明显的特征。例如,想学习SQL语言,希望到图书馆中找一些相关的资料,但是又不知道有关SQL语言的书都有哪些,这个时候一般都会在图书管理系统中输入关键字SQL,这样与SQL有关的所有书籍就都会查到了。这就是模糊查询。在SQL语言中就提供了用于模糊查询的关键字LIKE,它需要和通配符“%”和“_”配合使用。
在SQL语句中, 通配符“_”表示匹配单个字符。即在查询语句中,一个“_”只能表示匹配一个字符。
在SQL语句中, 通配符“%”表示匹配0个或者多个字符。即一个“%”可以表示0个字符,也可以表示一个字符,也可以表示两个或者更多的字符。
在使用SQL执行模糊查询时,有时数据表某个字段中的字符值本身就含有“%”或者是“_”这两个字符。开发人员希望在查询时,将字符值本身就含有“%”或者是“_”两个字符作为该字符的一部分查询出来,这个时间就需要使用ESCAPE关键字对其进行转义操作。使用 ESCAPE关键字进行转义操作步骤如下:
(1)在需要转义的“%” 或者是“_”字符前加一个转义符,该转义符可以是一个任意字符。
(2)在ESCAPE关键字后制定该转义符的名称。
经过这两个步骤之后,位于该转义符之后的那个通配符(“%” 或者是“_”字符)就会被转义为一个普通字符。
5.使用REGEXP关键字进行模式匹配(regular expression
在MySQL数据库中,还提供了一种更加灵活的模式匹配方法,就是使用REGEXP关键字对字符串进行模式匹配。使用REGEXP关键字对字符串进行模式匹配,只要是在被匹配的字符串中含有与匹配模版中相匹配的子串,就被认为是模式匹配。其返回值就为TRUE。
在MySQL数据库中,使用REGEXP关键字对字符串进行模式匹配时,可以使用一些模式匹配修饰符对模式匹配进行测试。
^:用来匹配字符串的开始。
$:用来匹配字符串的结尾。
[]:在方括号中的任何字符都可以匹配。例如[abc]表示匹配方括号中的字符a、字符b或者是字符c。
-:连字符用来表示字符匹配的范围。例如[a-z]表示匹配方括号中字符a到字符z中的任何一个字符。
+:表示用于匹配的该字符在被匹配的字符串中出现至少一次或者多次。
*:表示用于匹配的该字符在被匹配的字符串中出现零次或者多次。
():在圆括号中的内容将被看做一个整体。例如(abc),表示匹配样式(abc)的字符串是abc。
{m}:其中整数m表示花括号前的字符串需要出现的次数。例如{abc}{2}表示匹配样式{abc}{2}的字符串是abcabc。
另外,REGEXP还可以对字符串进行模式匹配测试。
SELECT 'agf' REGEXP '[a-d]+','banana' REGEXP '(ana){2}'
未命名2

 

3
1
分享到:
评论

相关推荐

    易语言学习进阶WHERE子句

    WHERE子句用于在执行数据检索时指定特定的条件,只返回满足这些条件的记录,从而帮助我们筛选出需要的数据。 WHERE子句的基本语法是:`SELECT column1, column2, ... FROM table_name WHERE condition;` 这里的`...

    T-SQL中where子句与having子句的对比分析.pdf

    SELECT 表达式 列表 FROM 基本表或视图名称 WHERE 查询条件 GROUP BY 分组列名 HAVING 逻辑表达式 ORDER BY 排序列名 在 SELECT 语句中,FROM 子句指定了要操作的表或视图,WHERE 子句用来对数据进行筛选,GROUP BY...

    精确分析MySQL数据库中优化WHERE子句

    精确分析MySQL数据库中优化WHERE子句 在 MySQL 数据库中,WHERE 子句的优化是非常重要的,因为它可以极大地提高查询的效率。本文将详细分析 MySQL 数据库中优化 WHERE 子句的方法和技巧。 删除不必要的括号 在 ...

    SEIECT—SQL语句中Where子句功能解析与应用.pdf

    在使用Where子句时,必须提供一个条件表达式,表达式的结果为真(True)或假(False),仅当结果为真时,该记录才会被包含在查询结果中。常用的比较运算符包括等号(=)、大于(&gt;)、小于(&lt;)、不等于(&lt;&gt; 或 !=)...

    易语言学习进阶WHERE子句源码

    在易语言中,WHERE子句通常与表操作结合使用,比如查询、更新和删除数据。在实际编程中,我们可能需要结合使用循环、判断等控制结构来动态地构建和执行这些查询。例如,我们可以先定义一个变量来存储WHERE条件,然后...

    详析SQL语言的WHERE子句与HAVING子句.pdf

    它在SELECT语句中使用,对查询结果进行筛选,只返回满足特定条件的记录。WHERE子句可以使用比较运算符(如=, &lt;, &gt;, , &gt;=, !=)以及逻辑运算符(AND, OR, NOT)来组合多个条件。例如,如果我们有一个员工表,我们可以...

    MySQL数据库:where子句.pptx

    【例】 查询Bookstore数据库Book表中书名为“网页程序设计”的记录。 SELECT 书名,单价 FROM Book WHERE 书名='网页程序设计'; ; 【例】 查询Book表中单价大于30的图书情况。 SELECT * FROM Book WHERE 单价&gt;30; ;...

    条件子句在SQL查询中的应用.pdf

    WHERE子句用于对表(或多表)进行查询,依据指定的搜索条件筛选出数据行。SQL提供了多种运算符和关键字来表示这些搜索条件,包括比较运算符(如=、&lt;、&gt;等)、逻辑运算符(如AND、OR、NOT)、范围条件(如BETWEEN......

    08.Oracle的where子句1

    Oracle的WHERE子句是SQL查询语句中至关重要的一部分,它用于在从数据库中检索数据时定义特定的筛选条件。在本教程中,我们将探讨WHERE子句的语法、使用方法以及如何与其他运算符结合来增强查询功能。 首先,我们...

    SQL中where子句与having子句的区别小结

    它通常用在查询的开始,对`FROM`子句中指定的表或视图的每一行数据进行判断,根据设定的条件决定是否将其纳入结果集。`WHERE`子句支持基本的比较运算符(如&gt;、&lt;、=等)和逻辑运算符(AND、OR、NOT),以及可以使用...

    ACCESS多表多条件查询

    2. **WHERE子句**:多条件查询的核心是WHERE子句,它用于定义查询的筛选条件。在Access SQL中,可以使用AND、OR逻辑运算符结合多个条件。例如,`SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Key = Table2.Key...

    详解MySQL中WHERE子句的用法

    WHERE子句常用于SELECT、DELETE和UPDATE操作,以过滤出满足特定条件的记录。以下是对WHERE子句更深入的解释和使用示例。 **WHERE子句基本语法** WHERE子句的基本语法是在SELECT、UPDATE或DELETE语句中添加一个或多...

    浅析SQL中WHERE EXISTS子查询.pdf

    WHERE EXISTS子查询的执行流程可以理解为:首先检索外查询表中的第一行,再处理内查询,若内查询结果非空(表中存在满足条件的元组),则外查询WHERE EXISTS条件为真,将对应的外层第一行元组取出;然后再检索外查询...

    帆软FCRP-D数据库练习题2

    可以使用FROM子句来指定要查询的表名,并使用WHERE子句来过滤条件。 3. 找出订单销售额前五的订单是经由哪家运货商运送的 知识点:SELECT 语句、FROM 子句、ORDER BY 子句、LIMIT 子句 在这个问题中,需要使用...

    SQL查询练习题(ppt文档).ppt

    * 使用WHERE子句指定查询条件 * 使用FROM子句指定查询的表名 相关SQL语句:SELECT S#, GRADE FROM SC WHERE C#=‘C2’ 知识点二:查询学习课程号为C2的学生学号与姓名 * 使用JOIN语句连接多个表 * 使用WHERE子句...

    实验2-基本数据查询.pdf

    知识点:使用SELECT语句查询数据,指定查询条件使用WHERE子句,连接多个表使用FROM子句和JOIN关键字。 2. 查询销售电冰箱的销售人员的最大年龄。 知识点:使用SELECT语句查询数据,使用聚合函数MAX计算最大值,...

    SQL查询语句精华使用简要.doc

    其中,选择列表指定了所查询的列,FROM 子句指定了查询的表或视图,而 WHERE 子句则指定了查询的条件。 1. 选择列表 选择列表是简单查询的第一部分,它指定了所查询的列。选择列表可以是一组列名列表、星号、...

    ACCESS多表多条件查询易语言源码

    这通常通过WHERE子句来实现,WHERE后的每个条件之间可以使用逻辑运算符(AND、OR)组合,以便同时满足多个标准。例如,如果我们有两个条件:`City='New York'` 和 `Salary&gt;50000`,那么查询语句可能为: ```sql ...

    mysql查询根据列按条件统计总数

    - 使用子查询`b`来统计`t1`表中满足条件的每一组`列1`的数量以及对应的`列2`和`列3`的值。 - 使用`UNION`操作符将子查询`b`的结果与另一个统计查询合并。 - 最后一个查询计算`t2`表中`列1`的数量,并将结果与其他...

Global site tag (gtag.js) - Google Analytics