MySQL数据库技术-周德伟-电子课件单元5-数据查询.ppt
《MySQL数据库技术-周德伟-电子课件单元5-数据查询.ppt》由会员分享,可在线阅读,更多相关《MySQL数据库技术-周德伟-电子课件单元5-数据查询.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目知识要点与目标项目知识要点与目标项目知识要点项目知识要点知识能力目标知识能力目标学时学时5.1 5.1 任务任务1 1 单表查询单表查询5.1.1 SELECT5.1.1 SELECT语句定义语句定义5.1.2 5.1.2 选择指定的列选择指定的列5.1.3 5.1.3 聚合函数聚合函数5.1.4 WHERE5.1.4 WHERE子句子句5.2 5.2 任务任务2 2 多表查询多表查询5.2.1 FROM5.2.1 FROM子句子句5.2.2 5.2.2 多表连接多表连接5.3 5.3 任务任务3 3 排序与分类汇总排序与分类汇总5.3.1 GROUP BY5.3.1 GROUP BY子句
2、子句5.3.2 HAVING5.3.2 HAVING子句子句5.3.3 ORDER BY5.3.3 ORDER BY子句子句5.4 5.4 综合实例综合实例 PetStorePetStore数据查询数据查询【情境情境】:PetstorePetstore数据查询数据查询【职业岗位职业岗位】:操作员、程序员:操作员、程序员【典型工作任务典型工作任务】:查询记录、多:查询记录、多表查询、子查询表查询、子查询【技能要求技能要求】:1 1、使用、使用MySQLMySQL命令完成多功能数据命令完成多功能数据查询;查询;2 2、使用图形工具完成多功能数据、使用图形工具完成多功能数据查询查询【知识要求知识要求
3、】:1 1、简单查询、分类汇总、简单查询、分类汇总2 2、联接和嵌套查询、联接和嵌套查询3 3、数据操作的、数据操作的SQLSQL语句语句 8 8项目实训五项目实训五“员工管理系统员工管理系统”数据库查询操作数据库查询操作8 8任务一任务一 单表查询单表查询 使用数据库和表的主要目的是存储数据以便在需要时进行检使用数据库和表的主要目的是存储数据以便在需要时进行检索、统计或组织输出,通过索、统计或组织输出,通过SQLSQL语句的查询可以从表或视图中迅语句的查询可以从表或视图中迅速方便地检索数据。速方便地检索数据。一、一、SELECTSELECT语句语句 语法格式:语法格式: SELECT ALL
4、 | DISTINCT 输出列表达式输出列表达式, . FROM 表名表名1 , 表名表名2 /*FROM子句子句*/ WHERE 条件条件 /*WHERE子句子句*/ GROUP BY 列名列名 | 表达式表达式 | 列编号列编号 ASC | DESC, . /* GROUP BY 子句子句*/ HAVING 条件条件 /* HAVING 子句子句*/ ORDER BY 列名列名 | 表达式表达式 | 列编号列编号 ASC | DESC , . /*ORDER BY子句子句*/ LIMIT 偏移量偏移量, 行数行数|行数行数OFFSET偏移量偏移量 /*LIMIT子句子句*/ 顺序严格地排序
5、。例如,一个顺序严格地排序。例如,一个HAVINGHAVING子句必须位于子句必须位于GROUP BYGROUP BY子句之后,子句之后,并位于并位于ORDER BYORDER BY子句之前。子句之前。 选择指定的列选择指定的列使用使用SELECTSELECT语句选择一个表中的某些列的语法格式如下语句选择一个表中的某些列的语法格式如下: SELECT 字段列表字段列表 FROM 表名称表名称各列名之各列名之间要以逗号分隔。间要以逗号分隔。【例例5.15.1】查询查询BookstoreBookstore数据库的数据库的MembersMembers表中各会员的会员姓名、表中各会员的会员姓名、联系电
6、话和注册时间。联系电话和注册时间。 USE Bookstore; SELECT 会员姓名,联系电话,注册时间 FROM Members;说明:当在说明:当在SELECTSELECT语句指定列的位置上使用语句指定列的位置上使用* *号时,表示选择表的号时,表示选择表的所有列,如要显示所有列,如要显示MembersMembers表中所有列,不必将所有字段名一一列出,表中所有列,不必将所有字段名一一列出,使用使用 SELECT * FROM Members;列别名列别名2. 2. 定义列别名定义列别名 当希望查询结果中的某些列或所有列显示时且使用自己选择的列标题当希望查询结果中的某些列或所有列显示时
7、且使用自己选择的列标题时,可以在列名之后使用时,可以在列名之后使用ASAS子句来更改查询结果的列别名。子句来更改查询结果的列别名。语法格式为:语法格式为: SELECT column_name AS column_alias【例例5.25.2】 查询查询BookBook表中图书类别为计算机的图书书名、作者和出版表中图书类别为计算机的图书书名、作者和出版社,结果中各列的标题分别指定为社,结果中各列的标题分别指定为namename、autherauther和和publisherpublisher。 SELECT 书名 AS name, 作者 AS auther, 出版社 AS publisher
8、FROM Book WHERE 图书类别= 计算机;注意:当自定义的列标题中含有空格时,必须使用引号将标题括起来。注意:当自定义的列标题中含有空格时,必须使用引号将标题括起来。 SELECT 学号 AS Student number, 姓名 AS Student name, 总学分 AS mark FROM XS WHERE 专业名= 计算机;替换查询结果中的数据替换查询结果中的数据3. 3. 替换查询结果中的数据替换查询结果中的数据在对表进行查询时,有时对所查询的某些列希望得到的是一种概念在对表进行查询时,有时对所查询的某些列希望得到的是一种概念而不是具体的数据。例如查询而不是具体的数据。例
9、如查询XSXS表的总学分,所希望知道的是学习的总表的总学分,所希望知道的是学习的总体情况,这时,就可以用等级来替换总学分的具体数字。体情况,这时,就可以用等级来替换总学分的具体数字。要替换查询结果中的数据,则要使用查询中的要替换查询结果中的数据,则要使用查询中的CASECASE表达式,格式为:表达式,格式为:CASE WHEN 条件条件1 THEN 表达式表达式1 WHEN 条件条件2 THEN 表达式表达式2 ELSE 表达式表达式END【例例5.35.3】 查询查询BookBook表中图书编号、书名和数量,对其库存数量按表中图书编号、书名和数量,对其库存数量按以下规则进行替换:若数量为空值
10、,替换为以下规则进行替换:若数量为空值,替换为“尚未进货尚未进货”;若数量小于;若数量小于5 5,替换为,替换为“需进货需进货”;若数量在;若数量在5-505-50之间,替换为之间,替换为“库存正常库存正常”;若;若总学分大于总学分大于5050,替换为,替换为“库存积压库存积压”。列标题更改为。列标题更改为“库存库存”。 SELECT 图书编号, 书名, CASE WHEN 数量 IS NULL THEN 尚未进货 WHEN 数量 =5 and 数量5; MAXMAX和和MINMIN(2 2)MAXMAX和和MINMINMAXMAX和和MINMIN分别用于求表达式中所有值项的最大值与最小值,语
11、法格分别用于求表达式中所有值项的最大值与最小值,语法格式为:式为:MAX / MIN ( ALL | DISTINCT expression )其中,其中,expressionexpression是常量、列、函数或表达式,其数据类型可以是是常量、列、函数或表达式,其数据类型可以是数字、字符和时间日期数字、字符和时间日期 类型。类型。【例例5.95.9】 求订购了图书编号为求订购了图书编号为ISBN 8-5006-6625-XISBN 8-5006-6625-X的订单的最高的订单的最高订购册数和最低订购册数。订购册数和最低订购册数。 SELECT MAX(订购册数), MIN(订购册数) FRO
12、M Sell WHERE 图书编号 = ISBN 8-5006-6625-X;注意:注意:当给定列上只有空值或检索出的中间结果为空时,当给定列上只有空值或检索出的中间结果为空时,MAXMAX和和MINMIN函数的值也为空。函数的值也为空。SUMSUM函数和函数和AVGAVG函数函数(3 3)SUMSUM函数和函数和AVGAVG函数函数SUMSUM和和AVGAVG分别用于求表达式中所有值项的总和与平均值,语法格式为:分别用于求表达式中所有值项的总和与平均值,语法格式为:SUM / AVG ( ALL | DISTINCT expression )其中,其中,expressionexpressio
13、n是常量、列、函数或表达式,其数据类型只能是数值型。是常量、列、函数或表达式,其数据类型只能是数值型。【例例5.105.10】 求订购了图书编号为求订购了图书编号为ISBN 8-5006-6625-XISBN 8-5006-6625-X图书的订购总册数。图书的订购总册数。 SELECT SUM(订购册数) AS 订购总册数 FROM Sell WHERE 图书编号 = ISBN 8-5006-6625-X; 【例例5.115.11】 求订购图书编号为求订购图书编号为ISBN 8-5006-6625-XISBN 8-5006-6625-X图书的订单平均册数。图书的订单平均册数。 SELECT A
14、VG(订购册数) AS 每笔订单平均册数 FROM Sell WHERE 图书编号 = ISBN 8-5006-6625-X; 对对YGGLYGGL数据库完成以下查询:数据库完成以下查询:1 1、计算员工总数、计算员工总数2 2、计算、计算salarysalary表中员工月收入的平均数表中员工月收入的平均数3 3、计算所有员工的总支出、计算所有员工的总支出4 4、显示最高收入和最低收入的员工的员工号、显示最高收入和最低收入的员工的员工号WHEREWHERE子句必须紧跟子句必须紧跟FROMFROM子句之后,在子句之后,在WHEREWHERE子句中,使用一个条件子句中,使用一个条件从从FROMFR
15、OM子句的中间结果中选取行。其基本格式为:子句的中间结果中选取行。其基本格式为: WHERE 列列 运算符运算符 值值操操 作作 符符描描 述述= =等于等于不等于不等于 大于大于 =大于等于大于等于=小于等于小于等于BETWEENBETWEEN在某个范围内在某个范围内LIKELIKE搜索某种模式搜索某种模式比较运算比较运算WHEREWHERE子句会根据条件对子句会根据条件对FROMFROM子句的中间结果中的行一行一行地进行子句的中间结果中的行一行一行地进行判断,当条件为判断,当条件为TRUETRUE的时候,一行就被包含到的时候,一行就被包含到WHEREWHERE子句的中间结果中。子句的中间结
16、果中。在在SQLSQL中,返回逻辑值(中,返回逻辑值(TRUETRUE或或FALSEFALSE)的运算符或关键字都可称为谓)的运算符或关键字都可称为谓词。词。判定运算包括比较运算、模式匹配、范围比较、空值比较和子查询。判定运算包括比较运算、模式匹配、范围比较、空值比较和子查询。1. 1. 比较运算比较运算比较运算符用于比较(除比较运算符用于比较(除TEXTTEXT和和BLOBBLOB类型外类型外) ) 两个表达式值,两个表达式值,MySQLMySQL支持的比较运算符有:支持的比较运算符有:= =(等于)、(等于)、 (小于)、(小于)、= (大(大于)、于)、=(大于等于)、(大于等于)、(相
17、等或都等于空)、(相等或都等于空)、(不等于)、(不等于)、!=!=(不等于)。(不等于)。当两个表达式值均不为空值(当两个表达式值均不为空值(NULLNULL)时,除了)时,除了“”运算符,其他比运算符,其他比较运算返回逻辑值较运算返回逻辑值TRUETRUE(真)或(真)或FALSEFALSE(假);而当两个表达式值中有一(假);而当两个表达式值中有一个为空值或都为空值时,将返回个为空值或都为空值时,将返回UNKNOWNUNKNOWN。【例例5.125.12】 查询查询BookstoreBookstore数据库数据库BookBook表中书名为表中书名为“网页程序设计网页程序设计”的记录。的记
18、录。 SELECT 书名,单价 FROM Book WHERE 书名=网页程序设计; 【例例5.135.13】 查询查询BookBook表中单价大于表中单价大于3030的图书情况。的图书情况。 SELECT * FROM Book WHERE 单价30; MySQLMySQL有一个特殊的等于运算符有一个特殊的等于运算符“”,当两个表达式彼此相等或,当两个表达式彼此相等或都等于空值时,它的值为都等于空值时,它的值为TRUETRUE,其中有一个空值或都是非空值但不相等,其中有一个空值或都是非空值但不相等,这个条件就是这个条件就是FALSEFALSE。没有。没有UNKNOWNUNKNOWN的情况。的
19、情况。【例例5.145.14】 查询查询SellSell表中还未收货的订单情况。表中还未收货的订单情况。 SELECT 订单号,是否收货 FROM Sell WHERE 是否收货NULL; 比较运算举例比较运算举例逻辑运算逻辑运算通过逻辑运算符(通过逻辑运算符(ANDAND、OROR、XORXOR和和NOTNOT)组成更为复杂的查询条件。)组成更为复杂的查询条件。逻辑运算操作的结果是逻辑运算操作的结果是“1 1”或或“0 0”,分别表示,分别表示“truetrue”或或“falsefalse”。符号符号1 1符号符号2 2说明说明示例示例说明说明notnot! !非运算非运算!x!x如果x是t
20、rue,那么示例的结果是false;如果x是false,那么示例的结果是true。oror|或运算或运算x | yx | y如果x或y任一是true,那么示例的结果是true,否则示例的结果是false。andand&与运算与运算x & yx & y如果x和y都是True,那么示例结果是true,否则示例的结果是false。xorxor 异或运算异或运算x yx y如果x和y不相同,那么示例结果是true,否则示例的结果是false。逻辑运算举例逻辑运算举例非:select not 0, not 1, not null;或: select (1 or 0), (0 or 0), (1 or n
21、ull), (1 or 1), (null or null);与: select (1 and 1), (0 and 1), (3 and 1), (1 and null);异或: select (1 xor 1), (0 xor 0), (1 xor 0), (0 xor 1), (null xor 1); 【例例5.155.15】 查询查询SellSell表中已收货且已结清的订单情况。表中已收货且已结清的订单情况。 SELECT 订单号,是否收货,是否结清 FROM Sell WHERE 是否收货=已收货 AND 是否结清=已结清; 【例例5.165.16】 查询查询BookBook表中清
22、华大学出版社和北京大学出版社出版的价格大于表中清华大学出版社和北京大学出版社出版的价格大于2525元的图书。元的图书。SELECT 书名,出版社,单价 FROM Book WHERE (出版社=清华大学出版社 OR 出版社=北京大学出版社 ) AND 单价=25;或: SELECT书名,出版社,单价 FROM Book WHERE (出版社=清华大学出版社 AND 单价=25) OR (出版社=北京大学出版社 AND 单价=25); 【思考题思考题】以下语句能否得到正确结果?为什么?以下语句能否得到正确结果?为什么? SELECT 书名,出版社,单价 FROM Book WHERE 出版社=清
23、华大学出版社 OR 出版社=北京大学出版社 AND 单价=25;WHEREWHERE子句举例子句举例对对YGGLYGGL数据库完成一下查询:数据库完成一下查询:1 1、显示月收入高于、显示月收入高于20002000元的员工号码元的员工号码2 2、查询、查询19701970年以后出生的员工的姓名和地址年以后出生的员工的姓名和地址3 3、显示女雇员的地址和电话,列标题要求用中文、显示女雇员的地址和电话,列标题要求用中文“地址地址”、“电电话话”表示表示LIKELIKE运算符运算符2. 2. 模式匹配(模式匹配(LIKELIKE运算符)运算符)LIKELIKE运算符用于指出一个字符串是否与指定的字符
24、串相匹配,其运运算符用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是算对象可以是charchar、varcharvarchar、texttext、datetimedatetime等类型的数据,返回逻辑等类型的数据,返回逻辑值值TRUETRUE或或FALSEFALSE。使用使用LIKELIKE进行模式匹配时,常使用特殊符号进行模式匹配时,常使用特殊符号_ _和和% %,可进行模糊查询。,可进行模糊查询。“% %”代表代表0 0个或多个字符,个或多个字符,“_ _”代表单个字符。由于代表单个字符。由于MySQLMySQL默认不区分大默认不区分大小写,要区分大小写时需要更换字符集的校对规
25、则。小写,要区分大小写时需要更换字符集的校对规则。【例例5.175.17】 查询查询MembersMembers表中姓表中姓“张张”的会员的身份证号、姓名及的会员的身份证号、姓名及注册时间。注册时间。 SELECT 身份证号,会员姓名, 注册时间 FROM Members WHERE 会员姓名 LIKE 张%; 【例例5.185.18】 查询查询BookBook表中图书编号倒数第二位为表中图书编号倒数第二位为T T的图书的图书编的图书的图书编号和书名。号和书名。 SELECT 图书编号, 书名 FROM Book WHERE 图书编号 LIKE %T_; 例例5.195.19】 查询查询Boo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库技术 周德伟 电子 课件 单元 数据 查询
限制150内