数据库应用技术(MySQL)(第二版) 课件 模块3任务2数据简单查询_第1页
数据库应用技术(MySQL)(第二版) 课件 模块3任务2数据简单查询_第2页
数据库应用技术(MySQL)(第二版) 课件 模块3任务2数据简单查询_第3页
数据库应用技术(MySQL)(第二版) 课件 模块3任务2数据简单查询_第4页
数据库应用技术(MySQL)(第二版) 课件 模块3任务2数据简单查询_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

模块三

使用数据库数据表中存储了数据后,根据系统功能需求按照一定条件进行简单的数据查询是最基本、最重要的操作,如查询专家信息、查询项目信息等。本任务主要介绍评标专家库管理系统数据简单查询功能。任务描述任务2数据简单查询掌握SELECT基本语法12掌握使用SELECT语句进行简单查询的方法3掌握使用WHERE子句进行条件查询的方法学会使用LIMIT子句限制返回行数5任务目标掌握掌握熟练运用掌握学会4熟练运用ORDERBY子句实现数据排序

SELECT语句的基本语法格式:SELECT[ALL|DISTINCT|DISTINCTROW]select_expr[,select_expr…]FROMtable_references[WHEREwhere_condition][GROUPBY{column_name|expr|position},…[WITHROLLUP]][HAVINGwhere_condition][ORDERBY{column_name|expr|position}[ASC|DESC],…][LIMIT{[offset,]row_count|row_countOFFSEToffset}]SELECT语句知识点1知识准备用于指定查询返回的列。用于指定数据的来源。用于指定数据的查询条件。用于对查询结果进行分组。用于指定组的选择条件。用于对查询结果进行排序。用于限制返回的行数。是可选项,指定结果集中是否包含重复行。ALL是默认值,表示包含重复行。DISTINCT与DISTINCTROW为同义词,表示去掉结果集中的重复行。select_expr可以是表中的列名,也可以是根据表中列计算的表达式。SELECT语句知识点1知识准备

SELECT语句的完整语法比较复杂,其主要子句可归纳如下:SELECT[ALL|DISTINCT|DISTINCTROW]目标列表达式FROM表名[WHERE条件表达式][GROUPBY分组依据][HAVING条件表达式][ORDERBY排序依据[ASC|DESC]][LIMIT行数]提示:SELECT语句中,子句的顺序非常重要,可以省略可选子句,但这些子句必须按照语法格式规定的顺序来使用。运算符分类运算符作用比较运算符>、>=、=、<、<=、<>、!=、<=>比较大小逻辑运算符AND或&&、OR或||、NOT或!用于多条件的逻辑连接范围运算符BETWEEN…AND、NOTBETWEEN…AND判断列值是否在指定范围内列表运算符IN、NOTIN判断列值是否为列表中的值字符匹配符LIKE、NOTLIKE判断列值是否与指定的字符匹配格式相符空值判断符ISNULL、ISNOTNULL判断列值是否为空值WHERE子句知识点2WHERE子句用于指定查询条件,过滤掉不符合条件的数据行。WHERE子句必须紧跟在FROM子句的后面。查询条件中常用运算符见表1。知识准备表1查询条件中常用运算符LIMIT子句知识点3知识准备查询结果集的行数很多时,可以使用LIMIT子句来限制返回的行数。LIMIT子句的基本语法格式如下:例如,“LIMIT3”表示返回前3行记录,“LIMIT2,6”表示返回从第3行开始的6行记录。“LIMIT2,6”等价于“LIMIT6OFFSET2”。提示:查询结果集中第一行记录的偏移量为0,而不是1。LIMIT{[offset,]row_count|row_countOFFSEToffset}指定返回的行数,必须是非负的整数常量。指定从offset+1行开始,返回row_count行。为可选项,默认为“0”,指定要返回的第一行在查询结果集中的偏移量,必须是非负的整数常量。ORDERBY子句知识点4知识准备可以使用ORDERBY子句将查询结果按一列或多列进行排序。其基本语法格式如下:ORDERBY{column_name|expr|position}[ASC|DESC],…指定用于排序的列。指定用于排序的表达式。指定用于排序的列在查询结果集中的位置,通常是一个正整数。指定排序方式,“ASC”表示按升序排列,“DESC”表示按降序排列。默认值为“ASC”。ORDERBY子句知识点4知识准备使用ORDERBY子句时需要注意以下几点:

ORDERBY子句中可以包含子查询。

MySQL中排序时空值(NULL)被认为是最小值。

如果不使用ORDERBY子句,查询结果集中数据行的顺序是不可预料的。任务实施1使用SELECT语句选择列2使用WHERE子句过滤数据3使用LIMIT子句限制返回行数4使用ORDERBY子句排序任务实施使用SELECT语句选择列11.查询部分列在很多情况下,用户只对数据表中的部分列感兴趣,通过SELECT语句可以“过滤”掉某些列,只显示用户需要的列。【例1】在部门信息表tdeptinfo中,查询部门名称sDeptName和部门主管sDeptManager。说明:SELECT后列名的先后顺序可以与数据表中列的顺序不一致,查询结果集中列的顺序与SELECT后列名的顺序相同。任务实施使用SELECT语句选择列2.查询全部列将数据表中所有列都显示出来有两种方法:一种方法是在SELECT后面列出所有列名,当列较多时,这种方法比较繁琐;另一种方法是使用通配符“*”,采用这种方法列出所有列,查询结果集中列的顺序与数据表中列的顺序完全一致。【例2】在部门信息表tdeptinfo中,查询部门信息。注意:一般而言,除非确实需要数据表中所有的列,否则最好不要使用通配符“*”。虽然使用通配符能省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。1使用SELECT语句选择列3.更改列标题数据表中列的名称可能只是一个简单的代码,如部门信息表tdeptinfo中的部门主管采用sDeptManager作为列名,有时用户无法理解这类列名的具体含义。为了增加查询结果的可读性,可以通过指定列别名的方式改变查询结果的列标题。指定列别名的语法格式如下:列别名改变的只是查询结果的列标题,并没有改变数据表中的列名。colunm_name[AS]column_alias指定列名。指定列别名。1任务实施任务实施使用SELECT语句选择列【例3】在部门信息表tdeptinfo中,查询部门名称sDeptName和部门主管sDeptManager,并要求查询结果集中列标题显示为“部门名”和“部门主管”。1使用SELECT语句选择列4.查询经过计算的列值SELECT子句中的select_expr不仅可以是数据表中的列,也可以是表达式,包括算术表达式、字符串常量或函数等。【例4】

在专家信息表texpertinfo中,查询专家姓名sName、性别sSex和年龄。分析:专家信息表texpertinfo中存储的是专家的出生日期dBirthDate,专家的年龄可以通过计算得到,计算专家的年龄用到了两个函数:YEAR(date):用于得到date日期中的年份。CURDATE():用于得到当前系统日期。使用表达式YEAR(CURDATE())-YEAR(dBirthDate),计算当前系统日期中的年份减去专家出生日期中的年份,结果就是专家的年龄。1任务实施使用SELECT语句选择列5.去掉重复行【例5】在专家信息表texpertinfo中,查询专家的学历sDiploma。1执行结果包含重复的学历,如果想去掉查询结果中的重复行,必须添加DISTINCT选项。任务实施任务实施使用SELECT语句选择列说明:在一个SELECT语句中,DISTINCT只能出现一次,并且DISTINCT必须在所有的列名之前,否则会发生语法错误。对于DISTINCT选项来说,空值(NULL)被认为是相等的,不论有多少个空值(NULL),结果只返回一个。1执行结果只有3行记录,不再包含重复的行。使用SELECT语句选择列6.替换查询结果中的数据查询时,如果希望得到某些列的查询分析结果,而不是原始数据,例如,专家信息表中专家状态iExpertStatus列中保存的是“1”或“0”,如果想知道专家状态是“启用”还是“停用”,就可以在SELECT语句中替换iExpertStatus列中的数据。1任务实施使用SELECT语句选择列替换查询结果中的数据,可以使用CASE表达式,其语法格式如下:执行过程:逐条执行WHEN语句,如果search_condition条件成立,则执行相应的THEN后的statement_list语句。如果条件都不成立,则执行ELSE后的statement_list语句。CASEWHENsearch_conditionTHENstatement_list[WHENsearch_conditionTHENstatement_list]…[ELSEstatement_list]END[AS]column_alias指定判断条件。指定不同条件的执行语句。指定列别名。1任务实施任务实施使用SELECT语句选择列【例6】在专家信息表texpertinfo中,查询专家姓名sName和专家状态iExpertStatus,要求判断查询结果中专家状态的值,如果专家状态的值为“1”,则替换为“启用”,否则替换为“停用”,同时结果集中列标题显示为“姓名”和“专家状态”。1使用WHERE子句过滤数据1.使用比较运算符构成查询条件【例7】在专家信息表texpertinfo中,查询专家刘貂蝉的专家编码sExpertCode、姓名sName和技术职称sTechnicalTitle。2任务实施使用WHERE子句过滤数据【例8】在专家信息表texpertinfo中,查询年龄超过58岁的专家的专家编码sExpertCode和姓名sName。2任务实施使用WHERE子句过滤数据2.使用逻辑运算符构成查询条件WHERE子句中可以使用逻辑运算符把多个查询条件连接起来,从而实现比较复杂的选择查询。【例9】在专家信息表texpertinfo中,查询80后女专家的姓名sName和年龄。2任务实施使用WHERE子句过滤数据【例10】在专家信息表texpertinfo中,查询学历sDiploma为“硕士研究生”或“博士研究生”的专家的专家编码sExpertCode和姓名sName。注意:逻辑运算符AND和OR可用来连接多个查询条件。如果这两个运算符同时出现在一个WHERE子句中,AND的优先级高于OR,可以用圆括号改变优先级。2任务实施使用WHERE子句过滤数据3.使用范围运算符构成查询条件如果过滤数据使其列值在某个范围内(包括边界),就可以使用BETWEEN…AND;如果过滤数据使其列值不在某个范围内,可以在BETWEEN前面加NOT。使用范围运算符构成查询条件的一般形式如下:[NOT]BETWEENexpression1ANDexpression2说明:表达式“expression1”的值不能大于“expression2”的值。2任务实施使用WHERE子句过滤数据【例11】在专家信息表texpertinfo中,查询年龄在30~40岁之间的专家的专家编码sExpertCode和姓名sName。2任务实施使用WHERE子句过滤数据4.使用列表运算符构成查询条件如果过滤数据使其列值在某个集合内,就可以使用IN;如果过滤数据使其列值不在某个集合中,可在IN前面加NOT。使用列表运算符构成查询条件的一般形式如下:[NOT]IN(expression[,…n])2任务实施使用WHERE子句过滤数据【例12】查询技术职称sTechnicalTitle为“教授”或“副教授”的专家的专家编码sExpertCode和姓名sName。说明:IN运算符的作用类似于“逻辑或”,但比“逻辑或”更加方便灵活。2任务实施使用WHERE子句过滤数据5.使用字符匹配符构成查询条件有时用户对数据表中的数据了解不全面,如不能确定所要查询专家的姓名,只知道他姓“王”,这时需要使用LIKE以及通配符来实现模糊匹配查询。使用字符匹配符构成查询条件的一般形式如下:SQL语言提供的通配符有“%”和“_”。

%(百分号):代表0个或任意多个字符。

_(下画线):代表任意单个字符。如果要匹配的字符串本身就含有通配符“%”或“_”,就要使用ESCAPE'<换码字符>'对通配符进行转义。[NOT]LIKE'<匹配串>'[ESCAPE'<换码字符>’]2任务实施使用WHERE子句过滤数据【例13】

查询姓“王”的专家的姓名sName、性别sSex和工作单位sWorkUnit。2任务实施使用WHERE子句过滤数据【例14】

查询姓“王”并且姓名只有两个字的专家的姓名sName、性别sSex和工作单位sWorkUnit。2任务实施使用WHERE子句过滤数据6.使用空值判断符构成查询条件空值判断符“ISNULL”用来判断一个表达式的值是否为空值。使用ISNULL构成查询条件的一般形式如下:【例15】查询出生日期未知的专家的姓名sName、学历sDiploma和出生日期dBirthDate。注意:这里的“IS”不能用等于号“=”代替。expressionIS[NOT]NULL2任务实施使用LIMIT子句限制返回行数【例16】

在专家信息表texpertinfo中,查询专家姓名sName和性别sSex,只显示5条记录。3任务实施使用LIMIT子句限制返回行数【例17】

温馨提示

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

评论

0/150

提交评论