SQL标准语言内容大全(7)

2019-01-19 12:57

[HAVING group_condition] [ORDER BY column];

3、规则

having对行进行分组。

having子句限制的是组,而不是行。where子句限制的是行。

演示 - 使用HAVING

1. 查看表EMPLOYESS,显示最高薪金高于$10000的部门编号和最高薪金。

练习 - 使用HAVING

1. 查看表EMPLOYEES,:显示经理编号以及该经理所管员工的最低薪金。不包括其

经理不知是谁的任何员工。不包括最低薪金未超过$6000的组。按薪金降序排列输出。

演示 - 使用HAVING

1. 显示工资总额超过$13000的每个职务的职务标识和月薪总额。该示例排除了销售代

表,并按照月薪总额对列表进行排序。

6-8嵌套分组函数

1、分组函数可以嵌套两层。

演示 - 嵌套分组函数

1. 显示最高平均薪金。

6-9分组函数进阶练习

1、掌握SQL分组函数的使用。

练习 - 分组函数使用

1. 查看EMPLOYEES,DEPARTMENT。

2. 编写一个查询,使其显示每个部门的名称、地点、员工数以及该部门所有员工的平

均薪金。分别将这些列标记为Name、Location、Number of People和Salary。将平均薪金舍入到小数点后第二位。

练习 - 分组函数使用

1. 查看表EMPLOYEES。

2. 创建一个查询,使其显示员工总数以及其中在1995年、1996年、1997年和1998

年聘用的员工数。创建合适的列标题。

练习 - 使用分组函数

1. 查看表EMPLYEES。

2. 创建一个矩阵查询,使其显示一个职务、按照部门编号的该职务的薪金、以及该职

务的总薪金,对并部门20、50、80和90的每个列给出合适的标题。

7-1子查询

1、使用子查询解决问题

如谁的薪金比Tom的薪金高等。

通过组合两个查询,即将一个查询放置到另一个查询中,可以解决此问题。

2、语法

SELECT select_list FROM table

WHERE expr operator (SELECT select_list FROM table);

3、子查询在执行主查询之前执行,然后主查询会使用该子查询的结果。 4、子查询可以放置在以下子句中:

WHERE HAVING FROM

4、使用规则

子查询可以嵌套多层。 子查询需要圆括号()括起来。

子查询放在比较条件的右侧。

单行运算符用于单行子查询,而多行运算符用于多行子查询。

演示 - 使用子查询

1. 查看比Abel薪金高的员工。

7-2单行子查询

1、仅返回一行数据。 2、使用单行比较运算符。

= > >= <

<= <>

3、在子查询里可以使用分组函数。

演示 - 使用单行子查询

1. 显示职务和员工ID 141相同的员工。

演示 - 使用单行子查询

1. 显示职务和员工141相同,并且薪金高于员工143的员工。

练习 - 子查询

1. 查看表EMPLOYEES.

2. 编写一个查询,使其显示与Zlotkey在同一部门的所有员工的姓氏和聘用日期。但

不包括 Zlotkey。

练习 - 子查询

1. 查看表EMPLOYEES。

2. 创建一个查询,显示薪金超过平均薪金的所有员工的员工编号和姓氏。按薪金升序

排列结果。

演示 - 子查询里使用分组函数

1. 显示薪金等于最低薪金的所有员工和姓氏、职务和薪金。 2. 显示最低薪金高于部门50的最低薪金的所有部门。

7-3多行子查询

1、返回多个行。

2、使用多行比较运算符。

IN :等于列表中的任意一个

ANY:将值与子查询返回的任意一个值 进行比较。如用ANY运算符,ANY表示高于最低值。=ANY相当于IN。

ALL:将值 与查询返回的每个值进行比较。如果用ALL运算符。>ALL表示高于最高值。

演示 - 多行子查询

1. 查找薪金等于各个部门最低薪金的所有员工。

演示 - 多行子查询

1. 显示职务不是IT_PROG并且薪金低于任何一个IT_PROG的员工。

演示 - 多行子查询

1. 显示薪金低于所有职务为IT_PROG的员工且职务不是IT_PROG的员工。

演示 - 子查询的结果返回空值

1. 如果子查询的结果中出现空值,不要使用NOT IN运算符,应使用IN运算符。 2. 显示具有下属的员工。

练习 - 多行子查询

1. 查看表EMPLOYEES。

2. 编写一个查询,使其显示所有员工的员工编号和姓氏,条件是:他们所工作的部门

里有员工和姓氏中包含一个“u”

练习 - 多行子查询

1. 查看表EMPLOYEES,DEPARTMENTS。

2. 显示部门地点标识为1700的所有员工的姓氏、部门编号和职务标识。

练习 - 多行子查询

1. 查看表EMPLOYEES、DEPARTMENTS。

2. 显示行政部(Executive)中每位员工的部门编号、姓氏和职务标记。

练习 - 多行子查询

1. 查看表EMPLOYEES。

2. 显示所有员工的员工编号、姓氏和薪金,条件是:他们的薪金超过平均薪金并且他

们所工作的部门里员工的姓氏中包含一个“u”。

8-1集合概念

1、所有的SELECT语句都返回一组数据集。集合运算可以将两个或多个SELECT语句的结果作为输入,并根据集合运算的不同,而生成相应的结果集。

2、集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结果将采用第一个集合的表头作为最终的表头,order by必须放在每个集合后。

8-2 UNION(并集)

1、使用 UNION 运算符返回两个查询剔除了重复行的结果。 SELECT * from EMPLOYEES WHERE DEPARTMENT_ID=10

UNION

SELECT * from EMPLOYEES WHERE DEPARTMENT_ID=20;

2、使用 UNION ALL 运算符返回两个查询的全部结果包括重复的记录。 SELECT * from EMPLOYEES WHERE DEPARTMENT_ID=10 UNION ALL

SELECT * from EMPLOYEES WHERE DEPARTMENT_ID=20; 3、规则

? 各个集合必须有相同的列数且类型一致。

? 生成的结果集将采用第一个集合的表头作为最终的表头,order by必须放在

整个集合后。

演示 - 使用UNION

1. 查询表EMPLOYEES表中10部门和20部门的员工信息。

演示 - 使用UNION

1. 统计表EMPLOYEES中各个部门的总工资,和各部门各职位的工资。

练习 - 使用UNION

1. 查看表EMPLOYEES。

2. 显示部门10、50和20生成一个岗位列表。显示岗位编号和部门编号,用集合操作

建立此查询。

8-3 INTERSECT(交集)

1、使用 INTERSECT 运算符返回两个查询相同的记录。 2、规则

? 在查询中被 SELECT 语句选择的列数和数据类型必须与在查询中所使用的所

有的 SELTCT 语句中的一样,但列的名字不必一样。 ? 相交的表的倒序排序不改变结果。 ? 相交不忽略空值。

演示 - 使用INTERSECT

1. 查询表EMPLOYEES和DEPARTMENTS都存在的部门号。

练习 - 使用INTERSECT

1. 查看表EMPLOYEES。


SQL标准语言内容大全(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新人教版一年级语文下册期末字词专项复习题[1]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: