数据库的查询条件查询PPT课件_第1页
数据库的查询条件查询PPT课件_第2页
数据库的查询条件查询PPT课件_第3页
数据库的查询条件查询PPT课件_第4页
数据库的查询条件查询PPT课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 一个完整的SQL语句的结构: 所有被使用的子句必须按语法说明中显示的顺序严格地排序。 SELECT 字段或分组函数FROM 表名WHERE 筛选条件GROUP BY 分组列HAVING 分组筛选条件ORDER BY 列LIMIT ; SELECT 语句第1页/共37页4.2.2 WHERE子句WHERE子句必须紧跟FROM子句之后,在WHERE子句中,使用一个条件从FROM子句的中间结果中选取行。其基本格式为:WHERE where_definition其中,where_definition为查询条件。语法格式为:where_definition: | AND | OR | (where_d

2、efinition) | NOT where_definition其中,predicate为判定运算,结果为TRUE、FALSE或UNKNOWN。: expression = | | | = | | | != expression /*比较运算*/ | match_expression NOT LIKE match_expression ESCAPE escape_character /*LIKE运算符*/ | match_expression NOT REGEXP | RLIKE match_expression/*REGEXP运算符*/ | expression NOT BETWEEN e

3、xpression AND expression /*指定范围*/ | expression IS NOT NULL /*是否空值判断*/ | expression NOT IN ( subquery | expression ,n ) /*IN子句*/ | expression = | | | = | | | != ALL | SOME | ANY ( subquery ) /*比较子查询*/ | EXIST ( subquery ) /*EXIST子查询*/第2页/共37页4.2.2 WHERE子句WHERE子句会根据条件对FROM子句的中间结果中的行一行一行地进行判断,当条件为TRUE的

4、时候,一行就被包含到WHERE子句的中间结果中。判定运算包括: 比较运算 模式匹配 字符串匹配-like 文本匹配-regexp或者relike 范围比较 空值比较 子查询第3页/共37页4.2 WHERE子句1. 比较运算比较运算 比较运算符用于比较两个表达式值,MySQL支持的比较运算符有:=(等于)、(小于)、(大于)、=(大于等于)、(相等或都等于空)、(不等于)、!=(不等于)。比较运算的语法格式为:expression = | | | = | | | != expression其中expression是除TEXT和BLOB外类型的表达式。当两个表达式值均不为空值(NULL)时,除了

5、“”运算符,其他比较运算返回逻辑值TRUE(真)或FALSE(假);而当两个表达式值中有一个为空值或都为空值时,将返回而当两个表达式值中有一个为空值或都为空值时,将返回UNKNOWN;MySQL有一个特殊的等于运算符“”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。没有UNKNOWN的情况。多个判定运算的结果通过逻辑运算符(AND、OR、XOR和NOT)组成更为复杂的查询条件第4页/共37页4.2.4 WHERE子句【例4.11】查询xscj数据库xs表中学号为081102的学生姓名学号和学分情况。select 姓名,学号,

6、总学分 from xs where 学号=081102;执行结果如图所示。第5页/共37页4.2.4 WHERE子句【练习1】查询xs表中总学分大于50分的学生的情况。第6页/共37页4.2.4 WHERE子句【练习2】查询xs表中备注为空的同学的情况。第7页/共37页4.2.4 WHERE子句【练习3】查询xs表中年龄大于26岁的学生姓名和年龄。第8页/共37页4.2.4 WHERE子句【练习4】查询xs表中年龄大于26岁的学生人数。第9页/共37页4.2 WHERE子句2.复杂条件匹配复杂条件匹配ANDOR可以将多个判定运算的结果通过逻辑运算符(AND、OR、XOR和NOT)组成更为复杂的

7、查询条件。第10页/共37页4.2.4 WHERE子句【例4.12】查询xs表中专业为计算机,性别为女(0)的同学的姓名、学号和学分。select 姓名,学号,性别,总学分 from xs where 专业名=计算机 and 性别=0;第11页/共37页4.2.4 WHERE子句【练习5】查询xs表中年龄大于26岁的男生信息(性别为1)。第12页/共37页4.2.4 WHERE子句【练习6】查询在1990或1989年出生的学生人数。第13页/共37页4.2 WHERE子句3. 范围比较范围比较 用于范围比较的关键字有两个:BETWEENAND 和IN。当要查询的条件是某个值的范围某个值的范围时

8、,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为:expression NOT BETWEEN expression1 AND expression2当不使用NOT时,若表达式expression的值在表达式expression1与expression2之间(包括这两个值),则返回TRUE,否则返回FALSE;使用NOT时,返回值刚好相反。注意:expression1的值不能大于expression2的值。使用IN关键字可以指定一个值表指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时,即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为:ex

9、pression IN ( expression ,n)第14页/共37页4.2 WHERE子句【例4.13】查询xscj数据库xs表中学分在42到48的学生情况。select * from xs where 总学分 BETWEEN 42 AND 48;执行结果如下(共10人):第15页/共37页4.2 WHERE子句【例4.14】查询xscj数据库xs表中学分为42或48的学生情况。select * from xs where 总学分 in (42,48);执行结果如下(共9人):第16页/共37页4.2 WHERE子句【练习7】 查询XS表中学分不在50-54分的学生情况 (11条记录)第

10、17页/共37页4.2 WHERE子句【练习8】 查询XS表中不是1989或1990年出生的学生的姓名和出生日期。第18页/共37页4.2 WHERE子句4. 空值比较空值比较当需要判定一个表达式的值是否为空值时,使用IS NULL关键字,格式为:expression IS NOT NULL当不使用NOT时,若表达式expression的值为空值,返回TRUE,否则返回FALSE;当使用NOT时,结果刚好相反。第19页/共37页4.2 WHERE子句【例4.15】查询xscj数据库xs表中备注为空的学生情况。select * from xs where 备注 IS NULL;执行结果如下(共1

11、5人):第20页/共37页4.2 WHERE子句【练习9】 查询XS表中备注为空的学生人数第21页/共37页4.2 WHERE子句2.模式匹配模式匹配(1)LIKE运算符(字符串匹配)(2)REGEXP运算符(文本匹配)第22页/共37页4.2 WHERE子句(1)LIKE运算符(字符串匹配)运算符(字符串匹配)LIKE运算符运算符用于指出一个字符串字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar、text、datetime等类型的数据,返回逻辑值TRUE或FALSE。LIKE谓词表达式的格式为:match_expression NOT LIKE match_expre

12、ssion ESCAPE escape_character 使用LIKE进行模式匹配时,常使用特殊符号_和%,可进行模糊查询。“%”代表0个或多个字符“_”代表单个字符。第23页/共37页 例如,如下的通配符示例。 (1)LIKE AB%:匹配以“AB”开始的任意字符串。 (2)LIKE %AB :匹配以“AB”结束的任意字符串。 (3)LIKE %AB% :匹配包含“AB”的任意字符串。 (4)LIKE _AB :匹配以“AB”结束的三个字符的字符串。第24页/共37页4.2 WHERE子句如果我们想要匹配的字符串中含有(_和%)时,我们必须使用一个转义字符,指示其为搜索模式中的一个匹配字符

13、,而不再是通配符。escape_character:转义字符,escape_character 没有默认值,且必须为单个字符。使用关键字ESCAPE可指定转义符。自学:课本P70第25页/共37页【例4.16】查询xscj数据库xs表中姓“王”的学生学号、姓名及性别。select 学号,姓名,性别 from xs where 姓名 like 王%;4.2 WHERE子句第26页/共37页【练习10】查询xscj数据库xs表中姓“王”且名为单名的学生学号、姓名及性别。4.2 WHERE子句第27页/共37页【练习11】查询xscj数据库xs表中名字中含有林字的学生学号、姓名。4.2 WHERE子

14、句第28页/共37页4.2 WHERE子句(2)REGEXP运算符(文本匹配)REGEXP是正则表达式(regular expression)的缩写。和LIKE运算符一样,REGEXP运算符有多种功能,但它不是SQL标准的一部分REGEXP运算符的一个同义词是RLIKE。语法格式:match_expression NOT REGEXP | RLIKE match_expression LIKE运算符有两个符号具有特殊的含义:“_”和“%”。 而REGEXP或RLIKE运算符则有更多的符号有特殊的含义,参见下表。第29页/共37页4.2 WHERE子句表5 属于REGEXP运算符的特殊字符特殊字

15、符特殊字符含含 义义特殊字符特殊字符含含 义义匹配字符串的开始部分匹配字符串的开始部分abc匹配方括号里出现的字符串匹配方括号里出现的字符串abc$匹配字符串的结束部分匹配字符串的结束部分a-z匹配方括号里出现的匹配方括号里出现的az之间的之间的1个字个字符符.匹配任何字符(包括回车和新行)匹配任何字符(包括回车和新行)a-z匹配方括号里出现的不在匹配方括号里出现的不在az之间的之间的1个字符个字符*匹配星号之前的匹配星号之前的0个或多个字符任何序列个或多个字符任何序列|匹配符号左边或右边出现的字符串匹配符号左边或右边出现的字符串+匹配加号之前的匹配加号之前的1个或多个字符的任何序个或多个字符

16、的任何序列列. .匹配方括号里出现的符号(如空格、匹配方括号里出现的符号(如空格、换行、括号、句号、冒号、加号、连换行、括号、句号、冒号、加号、连字符等)字符等)?匹配问号之前匹配问号之前0个或个或1个字符个字符:匹配一个单词的开始和结束匹配一个单词的开始和结束n匹配括号前的内容出现匹配括号前的内容出现n次的序列次的序列: :匹配方括号里出现的字符中的任意一匹配方括号里出现的字符中的任意一个字符个字符( )匹配括号里的内容匹配括号里的内容第30页/共37页4.2 WHERE子句【例4.17】 查询姓李的同学的学号、姓名和专业名。SELECT 学号,姓名,专业名 FROM XS WHERE 姓名

17、 REGEXP 李第31页/共37页4.2 WHERE子句【例4.18】 查询名字中含有林或燕的学生信息。SELECT * FROM XS WHERE 姓名 REGEXP 林燕;执行结果为:是否发现问题?第32页/共37页4.2 WHERE子句【例4.18-续续】 查询名字中含有林或燕的学生信息。SELECT * FROM XS WHERE 姓名 REGEXP 林|燕;第33页/共37页【练习12】查询xscj数据库xs表中名字以林字结尾的学生的学号、姓名、专业。($符号放后面)4.2 WHERE子句第34页/共37页【练习13】查询xscj数据库xs表中学号不含5的学生的学号、姓名、专业。()4.2 WHERE子句第35页/共37

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论