- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.4 数据查询 输出合并UNION 把来自不同查询的数据组合起来,形成一个具有综合信息的查询结果。 语法:[UNION [ALL]SELECT语句] ALL——结果全部合并,若没有ALL,则重复的记录将被自动去掉。 8.4 数据查询 例8-17:查询高品质商品和低品质商品编号、名称,合并查询结果。 select 商品编号,名称 from 商品 where 品质=高 union select 商品编号,名称 from 商品 where 品质=低 提示: 两个SELECT语句必须输出同样的列数。 两个表各相应列的数据类型必须相同。 只有最后一个SELECT语句中可以用ORDER BY 子句。 8.4 数据查询 通过GROUP BY、HAVING进行分组与筛选 通过GROUP BY子句可以将查询结果按指定列进行分组,该列值相等的记录为一组。 语法:GROUP BY group_by_expression1 [,group_by_expression2][,…] 例8-18:查询商品表中高、中、低品质的商品个数。 SELECT 品质, count(*) as 商品数 FROM 商品 GROUP BY 品质 提示: group_by_expression1通常为字段名(列名)。 通常和集合函数一起使用。 8.4 数据查询 筛选HAVING 若在分组后还要按照一定的条件进行筛选,则需使用HAVING子句。 语法:HAVING searching_condition 例8-19:查询商品个数在10种以上的品质和商品个数。 SELECT 品质, count(*) as 商品数 FROM 商品 GROUP BY 品质 having count(*)10 思考:查询选课表中平均成绩在90分以上的学生学号和平均成绩。注:选课表(学号,课程号,成绩) 8.4 数据查询 提示: HAVING子句通常需要使用集合函数来限定查询结果。 HAVING子句和WHERE子句都是条件限定子句,但其作用对象不同。 WHERE子句 HAVING子句 作用对象 表字段 计算字段 与分组的关系 无关 只能用于分组查询中,必须在GROUP BY 之后。 8.4 数据查询 连接查询 连接类型 内连接(INNER JOIN):使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。 外连接(OUTER JOIN):不只列出与连接条件相匹配的数据行,而是列出左表(左外连接)、右表(右外连接)或两个表(全外连接)中所有符合条件的数据行。 交叉连接(CROSS JOIN):没有where子句,返回连接表中所有数据行的笛卡尔乘积。 8.4 数据查询 建立连接的方法 WHERE子句 例8-20:查询阳光超市员工姓名、所在部门名称。 select 姓名,部门名称 from 员工,部门 where 员工.部门编号=部门.部门编号 FROM子句 举例:上题用FROM子句实现 select 姓名,部门名称 from 员工 inner join 部门 on 员工.部门编号=部门.部门编号 练习:查询商品编号、名称和商品类型名称。 8.4 数据查询 使用表别名 由于查询来源于多个表,如果多个表有相同列,需要在列名前附加表名,形如表名.列名。表名可以是原表名,也可以用别名。 对比以下两段SQL语句,学会使用表别名 select 姓名,部门名称,部门.部门编号 from 员工,部门 where 员工.部门编号=部门.部门编号 select 姓名,部门名称,b.部门编号 from 员工 AS a,部门 As b where a.部门编号=b.部门编号 8.4 数据查询 多表连接 例8-21:查询商品进货信息,要求显示商品的名称、进货日期,生产厂家的名称。 select 名称,进货日期,生产厂家 from 生产厂家,商品,商品进货 where 生产厂家.厂家ID = 商品进货.生产厂家ID and 商品.商品编号 = 商品进货.商品编号 课堂练习 完成对如下三个表的查询: 职工(职工号,姓名,性别,出生日期,党员否,参加工作,部门号) 部门(部门号,部门名) 工资(职工号,工资日期,工资) 显示所有职工的职工号、姓名、部门名,并按部门名升序排列。 显示在2008年7月1日以前参加工作的职工号、姓名、性别、出生日期、部门名。 显示部门号为1的职工号、姓名、工资日期、工资。 8.4 数据查询 嵌套查询 有时一个SELECT语句无法完成查询任务,而需要一个子SELECT的结果作为查询的条件,即需要在一个SELECT语句的条件短语中出现另一个SELECT语句,这种查询称为嵌套查询。 把内部的被另一个查询语句调用的查询叫子查询,
文档评论(0)