MySQL数据库技术 电子ppt课件单元5 数据查询.ppt
《MySQL数据库技术 电子ppt课件单元5 数据查询.ppt》由会员分享,可在线阅读,更多相关《MySQL数据库技术 电子ppt课件单元5 数据查询.ppt(55页珍藏版)》请在三一办公上搜索。
1、单元五,数据查询,项目知识要点与目标,任务一 单表查询,使用数据库和表的主要目的是存储数据以便在需要时进行检索、统计或组织输出,通过SQL语句的查询可以从表或视图中迅速方便地检索数据。一、SELECT语句 语法格式: SELECT ALL | DISTINCT 输出列表达式, . FROM 表名1 , 表名2 /*FROM子句*/ WHERE 条件 /*WHERE子句*/ GROUP BY 列名 | 表达式 | 列编号 ASC | DESC, . /* GROUP BY 子句*/ HAVING 条件 /* HAVING 子句*/ ORDER BY 列名 | 表达式 | 列编号 ASC | DE
2、SC , . /*ORDER BY子句*/ LIMIT 偏移量, 行数|行数OFFSET偏移量 /*LIMIT子句*/ 顺序严格地排序。例如,一个HAVING子句必须位于GROUP BY子句之后,并位于ORDER BY子句之前。,选择列,选择指定的列使用SELECT语句选择一个表中的某些列的语法格式如下: SELECT 字段列表 FROM 表名称各列名之间要以逗号分隔。【例5.1】查询Bookstore数据库的Members表中各会员的会员姓名、联系电话和注册时间。 USE Bookstore; SELECT 会员姓名,联系电话,注册时间 FROM Members;说明:当在SELECT语句指
3、定列的位置上使用*号时,表示选择表的所有列,如要显示Members表中所有列,不必将所有字段名一一列出,使用 SELECT * FROM Members;,列别名,2. 定义列别名 当希望查询结果中的某些列或所有列显示时且使用自己选择的列标题时,可以在列名之后使用AS子句来更改查询结果的列别名。语法格式为: SELECT column_name AS column_alias【例5.2】 查询Book表中图书类别为计算机的图书书名、作者和出版社,结果中各列的标题分别指定为name、auther和publisher。 SELECT 书名 AS name, 作者 AS auther, 出版社 AS
4、 publisher FROM Book WHERE 图书类别= 计算机;注意:当自定义的列标题中含有空格时,必须使用引号将标题括起来。 SELECT 学号 AS Student number, 姓名 AS Student name, 总学分 AS mark FROM XS WHERE 专业名= 计算机;,替换查询结果中的数据,3. 替换查询结果中的数据在对表进行查询时,有时对所查询的某些列希望得到的是一种概念而不是具体的数据。例如查询XS表的总学分,所希望知道的是学习的总体情况,这时,就可以用等级来替换总学分的具体数字。要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为:CASE
5、 WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 ELSE 表达式END,【例5.3】 查询Book表中图书编号、书名和数量,对其库存数量按以下规则进行替换:若数量为空值,替换为“尚未进货”;若数量小于5,替换为“需进货”;若数量在5-50之间,替换为“库存正常”;若总学分大于50,替换为“库存积压”。列标题更改为“库存”。 SELECT 图书编号, 书名, CASE WHEN 数量 IS NULL THEN 尚未进货 WHEN 数量 =5 and 数量=50 THEN 库存正常 ELSE 库存积压 END AS 库存 FROM Book;,替换查询结果举例,计算列
6、值,4. 计算列值使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值,即SELECT子句可使用表达式作为结果,格式为:SELECT expression , expression 【例5.4】 对Sell表已发货的记录计算订购金额(订购金额=订购册数*订购单价),并显示图书编号和订购金额。 SELECT 图书编号, 订购册数*订购单价 AS 订购金额 FROM Sell WHERE 是否发货= 已发货;,消除结果集中的重复行,5. 消除结果集中的重复行 对表只选择其某些列时,可能会出现重复行。例如,若对XSCJ数据库的XS表只选择专业名和总学分,则出现多行重复的情况。可以使用DI
7、STINCT或DISTINCTROW关键字消除结果集中的重复行,其格式是:SELECT DISTINCT column_name , column_name其含义是对结果集中的重复行只选择一个,保证行的唯一性。【例5.5】 对Book表只选择图书类别和出版社,消除结果集中的重复行。 SELECT DISTINCT 图书类别, 出版社 FROM Book;,课堂练习,对YGGL数据库完成以下查询: 1、查询每个雇员的的地址和电话,显示的列标题要求显示“地址”、“电话”。2、查询employees表部门号和性别,要求消除重复行3、计算每个雇员的实际收入4、查询employees表中员工的姓名和性别
8、,要求sex值为1时显示为“男”,为0时显示为“女”。5、查询Salary表中员工的员工编号和收入水平,要求2000元以下显示为“低收入”,2000-3000显示为“中等收入”,3000元以上时显示为“高收入”。,聚合函数,SELECT子句的表达式中还可以包含所谓的聚合函数。聚合函数常常用于对一组值进行计算,然后返回单个值。,COUNT函数,(1)COUNT函数聚合函数中最经常使用的是COUNT()函数,用于统计组中满足条件的行数或总行数,返回SELECT语句检索到的行中非NULL值的数目,若找不到匹配的行,则返回0。 语法格式为:COUNT ( ALL | DISTINCT expressi
9、on | * )其中,expression是一个表达式,其数据类型是除BLOB或TEXT之外的任何类型。ALL表示对所有值进行运算,DISTINCT表示去除重复值,默认为ALL。使用COUNT(*)时将返回检索行的总数目,不论其是否包含 NULL值。,【例5.6】 求会员总人数。 SELECT COUNT(*) AS 会员数 FROM Members; 【例5.7】 统计已结清的订单数。 SELECT COUNT(是否结清) AS 已结清的订单数 FROM Sell;注意:这里COUNT(是否结清)只统计是否结清列中不为NULL的行。【例5.8】 统计订购册数在5以上的订单数。 SELECT
10、COUNT(订购册数) AS 订购册数在5以上的订单数 FROM Sell WHERE 订购册数5;,COUNT函数举例,MAX和MIN函数,(2)MAX和MINMAX和MIN分别用于求表达式中所有值项的最大值与最小值,语法格式为:MAX / MIN ( ALL | DISTINCT expression )其中,expression是常量、列、函数或表达式,其数据类型可以是数字、字符和时间日期 类型。【例5.9】 求订购了图书编号为ISBN 8-5006-6625-X的订单的最高订购册数和最低订购册数。 SELECT MAX(订购册数), MIN(订购册数) FROM Sell WHERE
11、图书编号 = ISBN 8-5006-6625-X;注意:当给定列上只有空值或检索出的中间结果为空时,MAX和MIN函数的值也为空。,SUM函数和AVG函数,(3)SUM函数和AVG函数SUM和AVG分别用于求表达式中所有值项的总和与平均值,语法格式为:SUM / AVG ( ALL | DISTINCT expression )其中,expression是常量、列、函数或表达式,其数据类型只能是数值型。【例5.10】 求订购了图书编号为ISBN 8-5006-6625-X图书的订购总册数。 SELECT SUM(订购册数) AS 订购总册数 FROM Sell WHERE 图书编号 = IS
12、BN 8-5006-6625-X; 【例5.11】 求订购图书编号为ISBN 8-5006-6625-X图书的订单平均册数。 SELECT AVG(订购册数) AS 每笔订单平均册数 FROM Sell WHERE 图书编号 = ISBN 8-5006-6625-X;,课堂练习,对YGGL数据库完成以下查询:1、计算员工总数2、计算salary表中员工月收入的平均数3、计算所有员工的总支出4、显示最高收入和最低收入的员工的员工号,WHERE子句,WHERE子句必须紧跟FROM子句之后,在WHERE子句中,使用一个条件从FROM子句的中间结果中选取行。其基本格式为: WHERE 列 运算符 值,
13、比较运算,WHERE子句会根据条件对FROM子句的中间结果中的行一行一行地进行判断,当条件为TRUE的时候,一行就被包含到WHERE子句的中间结果中。在SQL中,返回逻辑值(TRUE或FALSE)的运算符或关键字都可称为谓词。判定运算包括比较运算、模式匹配、范围比较、空值比较和子查询。1. 比较运算比较运算符用于比较(除TEXT和BLOB类型外) 两个表达式值,MySQL支持的比较运算符有:=(等于)、(大于)、=(大于等于)、(相等或都等于空)、(不等于)、!=(不等于)。当两个表达式值均不为空值(NULL)时,除了“”运算符,其他比较运算返回逻辑值TRUE(真)或FALSE(假);而当两个
14、表达式值中有一个为空值或都为空值时,将返回UNKNOWN。,【例5.12】 查询Bookstore数据库Book表中书名为“网页程序设计”的记录。 SELECT 书名,单价 FROM Book WHERE 书名=网页程序设计; 【例5.13】 查询Book表中单价大于30的图书情况。 SELECT * FROM Book WHERE 单价30; MySQL有一个特殊的等于运算符“”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。没有UNKNOWN的情况。【例5.14】 查询Sell表中还未收货的订单情况。 SELECT 订单号
15、,是否收货 FROM Sell WHERE 是否收货NULL;,比较运算举例,逻辑运算,通过逻辑运算符(AND、OR、XOR和NOT)组成更为复杂的查询条件。逻辑运算操作的结果是“1”或“0”,分别表示“true”或“false”。,逻辑运算举例,非:select not 0, not 1, not null;或: select (1 or 0), (0 or 0), (1 or null), (1 or 1), (null or null);与: select (1 and 1), (0 and 1), (3 and 1), (1 and null);异或: select (1 xor 1)
16、, (0 xor 0), (1 xor 0), (0 xor 1), (null xor 1);,【例5.15】 查询Sell表中已收货且已结清的订单情况。 SELECT 订单号,是否收货,是否结清 FROM Sell WHERE 是否收货=已收货 AND 是否结清=已结清; 【例5.16】 查询Book表中清华大学出版社和北京大学出版社出版的价格大于25元的图书。SELECT 书名,出版社,单价 FROM Book WHERE (出版社=清华大学出版社 OR 出版社=北京大学出版社 ) AND 单价=25;或: SELECT书名,出版社,单价 FROM Book WHERE (出版社=清华大
17、学出版社 AND 单价=25) OR (出版社=北京大学出版社 AND 单价=25); 【思考题】以下语句能否得到正确结果?为什么? SELECT 书名,出版社,单价 FROM Book WHERE 出版社=清华大学出版社 OR 出版社=北京大学出版社 AND 单价=25;,WHERE子句举例,课堂练习,对YGGL数据库完成一下查询:1、显示月收入高于2000元的员工号码2、查询1970年以后出生的员工的姓名和地址3、显示女雇员的地址和电话,列标题要求用中文“地址”、“电话”表示,LIKE运算符,2. 模式匹配(LIKE运算符)LIKE运算符用于指出一个字符串是否与指定的字符串相匹配,其运算对
18、象可以是char、varchar、text、datetime等类型的数据,返回逻辑值TRUE或FALSE。使用LIKE进行模式匹配时,常使用特殊符号_和%,可进行模糊查询。“%”代表0个或多个字符,“_”代表单个字符。由于MySQL默认不区分大小写,要区分大小写时需要更换字符集的校对规则。【例5.17】 查询Members表中姓“张”的会员的身份证号、姓名及注册时间。 SELECT 身份证号,会员姓名, 注册时间 FROM Members WHERE 会员姓名 LIKE 张%; 【例5.18】 查询Book表中图书编号倒数第二位为T的图书的图书编号和书名。 SELECT 图书编号, 书名 FR
19、OM Book WHERE 图书编号 LIKE %T_; 例5.19】 查询Book表中书名中包含下画线的图书。 SELECT 图书编号,书名 FROM Book WHERE 书名 LIKE %#_% ESCAPE #;,范围比较,3. 范围比较 用于范围比较的关键字有两个:BETWEEN和IN。当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为:expression NOT BETWEEN expression1 AND expression2当不使用NOT时,若表达式expression的值在表达式expression1与expressi
20、on2之间(包括这两个值),则返回TRUE,否则返回FALSE;使用NOT时,返回值刚好相反。注意:expression1的值不能大于expression2的值。【例5.20】 查询Book表中2010年出版的图书的情况。 SELECT * FROM Book WHERE 出版时间 BETWEEN 2010-1-1 AND 2010-12-31;,使用IN关键字可以指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时,即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为:expression IN ( expression ,n)【例5.21】 查询Book表中“高等教
21、育出版社”、“北京大学出版社”和“人民邮电出版社”出版的图书的情况。 SELECT * FROM Book WHERE 出版社 IN ( 高等教育出版社, 北京大学出版社, 人民邮电出版社); 说明:IN关键字最主要的作用是表达子查询。,范围比较举例,空值比较,4. 空值比较当需要判定一个表达式的值是否为空值时,使用IS NULL关键字,格式为:expression IS NOT NULL当不使用NOT时,若表达式expression的值为空值,返回TRUE,否则返回FALSE;当使用NOT时,结果刚好相反。【例5.22】 查询Sell表中尚未发货的订单记录。 SELECT * FROM Se
22、ll WHERE 是否发货 IS NULL;本例即查找总学分为空的学生,结果为空。,课堂练习,对YGGL数据库完成一下查询:1、显示月收入高于2000元的员工号码2、查询1970年以后出生的员工的姓名和地址3、 查询支出在50-150之间的员工信息4、查询财务部、研发部、市场部的员工信息5、显示工作年限三年以上(含3年)、学历在本科以上(含本科)的男性员工的信息6、查找员工号码中倒数第二个数字为0的姓名、地址和学历7 查找地址中包含中山路 的员工的信息,任务二 多表查询,前面介绍了使用SELECT子句选择列,本小节讨论SELECT查询的对象(即数据源)的构成形式。SELECT的查询对象由FRO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL数据库技术 电子ppt课件单元5 数据查询 MySQL 数据库技术 电子 ppt 课件 单元 数据 查询
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1481215.html