数据库的查询条件查询ppt课件

上传人:钟*** 文档编号:1222295 上传时间:2019-10-11 格式:PPT 页数:37 大小:852.50KB
返回 下载 相关 举报
数据库的查询条件查询ppt课件_第1页
第1页 / 共37页
数据库的查询条件查询ppt课件_第2页
第2页 / 共37页
数据库的查询条件查询ppt课件_第3页
第3页 / 共37页
点击查看更多>>
资源描述
第4章 数据库的查询,4.2 条件查询-where 子句,1,一个完整的SQL语句的结构: 所有被使用的子句必须按语法说明中显示的顺序严格地排序。,SELECT 字段或分组函数 FROM 表名 WHERE 筛选条件 GROUP BY 分组列 HAVING 分组筛选条件 ORDER BY 列 LIMIT ;,SELECT 语句,2,4.2.2 WHERE子句,WHERE子句必须紧跟FROM子句之后,在WHERE子句中,使用一个条件从FROM子句的中间结果中选取行。其基本格式为: WHERE where_definition 其中,where_definition为查询条件。语法格式为: where_definition: | AND | OR | (where_definition) | 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 expression AND expression /*指定范围*/ | expression IS NOT NULL /*是否空值判断*/ | expression NOT IN ( subquery | expression ,n ) /*IN子句*/ | expression = | | = | | | != ALL | SOME | ANY ( subquery ) /*比较子查询*/ | EXIST ( subquery ) /*EXIST子查询*/,3,4.2.2 WHERE子句,WHERE子句会根据条件对FROM子句的中间结果中的行一行一行地进行判断,当条件为TRUE的时候,一行就被包含到WHERE子句的中间结果中。 判定运算包括: 比较运算 模式匹配 字符串匹配-like 文本匹配-regexp或者relike 范围比较 空值比较 子查询,4,4.2 WHERE子句,1. 比较运算 比较运算符用于比较两个表达式值,MySQL支持的比较运算符有:=(等于)、(大于)、=(大于等于)、(相等或都等于空)、(不等于)、!=(不等于)。 比较运算的语法格式为: expression = | | = | | | != expression 其中expression是除TEXT和BLOB外类型的表达式。 当两个表达式值均不为空值(NULL)时,除了“”运算符,其他比较运算返回逻辑值TRUE(真)或FALSE(假);而当两个表达式值中有一个为空值或都为空值时,将返回UNKNOWN; MySQL有一个特殊的等于运算符“”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。没有UNKNOWN的情况。 多个判定运算的结果通过逻辑运算符(AND、OR、XOR和NOT)组成更为复杂的查询条件,5,4.2.4 WHERE子句,【例4.11】查询xscj数据库xs表中学号为081102的学生姓名学号和学分情况。 select 姓名,学号,总学分 from xs where 学号=081102; 执行结果如图所示。,6,4.2.4 WHERE子句,【练习1】查询xs表中总学分大于50分的学生的情况。,7,4.2.4 WHERE子句,【练习2】查询xs表中备注为空的同学的情况。,8,4.2.4 WHERE子句,【练习3】查询xs表中年龄大于26岁的学生姓名和年龄。,9,4.2.4 WHERE子句,【练习4】查询xs表中年龄大于26岁的学生人数。,10,4.2 WHERE子句,复杂条件匹配 AND OR 可以将多个判定运算的结果通过逻辑运算符(AND、OR、XOR和NOT)组成更为复杂的查询条件。,11,4.2.4 WHERE子句,【例4.12】查询xs表中专业为计算机,性别为女(0)的同学的姓名、学号和学分。,select 姓名,学号,性别,总学分 from xs where 专业名=计算机 and 性别=0;,12,4.2.4 WHERE子句,【练习5】查询xs表中年龄大于26岁的男生信息(性别为1)。,13,4.2.4 WHERE子句,【练习6】查询在1990或1989年出生的学生人数。,14,4.2 WHERE子句,3. 范围比较 用于范围比较的关键字有两个:BETWEENAND 和IN。 当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为: expression NOT BETWEEN expression1 AND expression2 当不使用NOT时,若表达式expression的值在表达式expression1与expression2之间(包括这两个值),则返回TRUE,否则返回FALSE;使用NOT时,返回值刚好相反。 注意:expression1的值不能大于expression2的值。 使用IN关键字可以指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时,即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为: expression IN ( expression ,n),15,4.2 WHERE子句,【例4.13】查询xscj数据库xs表中学分在42到48的学生情况。 select * from xs where 总学分 BETWEEN 42 AND 48; 执行结果如下(共10人):,16,4.2 WHERE子句,【例4.14】查询xscj数据库xs表中学分为42或48的学生情况。 select * from xs where 总学分 in (42,48); 执行结果如下(共9人):,17,4.2 WHERE子句,【练习7】 查询XS表中学分不在50-54分的学生情况 (11条记录),18,4.2 WHERE子句,【练习8】 查询XS表中不是1989或1990年出生的学生的姓名和出生日期。,19,4.2 WHERE子句,4. 空值比较 当需要判定一个表达式的值是否为空值时,使用IS NULL关键字,格式为: expression IS NOT NULL 当不使用NOT时,若表达式expression的值为空值,返回TRUE,否则返回FALSE;当使用NOT时,结果刚好相反。,20,4.2 WHERE子句,【例4.15】查询xscj数据库xs表中备注为空的学生情况。 select * from xs where 备注 IS NULL; 执行结果如下(共15人):,21,4.2 WHERE子句,【练习9】 查询XS表中备注为空的学生人数,22,4.2 WHERE子句,模式匹配 (1)LIKE运算符(字符串匹配) (2)REGEXP运算符(文本匹配),23,4.2 WHERE子句,(1)LIKE运算符(字符串匹配) LIKE运算符用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar、text、datetime等类型的数据,返回逻辑值TRUE或FALSE。 LIKE谓词表达式的格式为: match_expression NOT LIKE match_expression ESCAPE escape_character 使用LIKE进行模式匹配时,常使用特殊符号_和%,可进行模糊查询。 “%”代表0个或多个字符 “_”代表单个字符。,24,例如,如下的通配符示例。 (1)LIKE AB%:匹配以“AB”开始的任意字符串。 (2)LIKE %AB :匹配以“AB”结束的任意字符串。 (3)LIKE %AB% :匹配包含“AB”的任意字符串。 (4)LIKE _AB :匹配以“AB”结束的三个字符的字符串。,25,4.2 WHERE子句,如果我们想要匹配的字符串中含有(_和%)时,我们必须使用一个转义字符,指示其为搜索模式中的一个匹配字符,而不再是通配符。 escape_character:转义字符,escape_character 没有默认值,且必须为单个字符。 使用关键字ESCAPE可指定转义符。 自学:课本P70,26,【例4.16】查询xscj数据库xs表中姓“王”的学生学号、姓名及性别。 select 学号,姓名,性别 from xs where 姓名 like 王%;,4.2 WHERE子句,27,【练习10】查询xscj数据库xs表中姓“王”且名为单名的学生学号、姓名及性别。,4.2 WHERE子句,28,【练习11】查询xscj数据库xs表中名字中含有林字的学生学号、姓名。,4.2 WHERE子句,29,4.2 WHERE子句,(2)REGEXP运算符(文本匹配) REGEXP是正则表达式(regular expression)的缩写。和LIKE运算符一样,REGEXP运算符有多种功能,但它不是SQL标准的一部分 REGEXP运算符的一个同义词是RLIKE。 语法格式: match_expression NOT REGEXP | RLIKE match_expression LIKE运算符有两个符号具有特殊的含义:“_”和“%”。 而REGEXP或RLIKE运算符则有更多的符号有特殊的含义,参见下表。,30,4.2 WHERE子句,表5 属于REGEXP运算符的特殊字符,31,4.2 WHERE子句,【例4.17】 查询姓李的同学的学号、姓名和专业名。 SELECT 学号,姓名,专业名 FROM XS WHERE 姓名 REGEXP 李,32,4.2 WHERE子句,【例4.18】 查询名字中含有林或燕的学生信息。 SELECT * FROM XS WHERE 姓名 REGEXP 林燕; 执行结果为:,是否发现问题?,33,4.2 WHERE子句,【例4.18-续】 查询名字中含有林或燕的学生信息。 SELECT * FROM XS WHERE 姓名 REGEXP 林|燕;,34,【练习12】查询xscj数据库xs表中名字以林字结尾的学生的学号、姓名、专业。($符号放后面),4.2 WHERE子句,35,【练习13】查询xscj数据库xs表中学号不含5的学生的学号、姓名、专业。(),4.2 WHERE子句,36,练习,在数据库xscj中完成以下题目: 1、查询学号为081216的学生的姓名和专业名(孙祥欣) 2、查询成绩高于85的学号和课程号(9条) 3、查询1990年以后出生的学生的姓名和出生日期(2条) 4、两种匹配方式查询所有姓王的学生的总学分 (224) 5、找出所有其姓名中含有“林”的学生的学号和照片 (4条) 6、找出学生学号中倒数第二个数字为0的姓名、专业名(13条) 7、两种方法找出所有成绩在7682之间的学生学号 (16条) 8、找出所有计算机专业或者通信专业的学生学号和姓名。 (22条),37,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!