信息管理系统-数据库标准语言SQL.pptVIP

  • 7
  • 0
  • 约1.57万字
  • 约 112页
  • 2018-12-19 发布于北京
  • 举报
信息管理系统-数据库标准语言SQL.ppt

* 使用EXISTS的嵌套查询 在嵌套查询中还可以使用[NOT] EXISTS,具体形式是: [NOT] EXISTS (子查询) EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回(即存在元组或不存在元组)。 * 检索哪些仓库中还没有职工的仓库的信息。 SELECT * FROM 仓库 WHERE NOT EXISTS (SELECT * FROM 职工 WHERE 仓库号 = 仓库.仓库号) SELECT * FROM 仓库 WHERE 仓库号 NOT IN (SELECT 仓库号 FROM 职工) 等价于 结果是: WH4 武汉 400 * 检索那些仓库中至少已经有 一个职工的仓库的信息 SELECT * FROM 仓库 WHERE EXISTS (SELECT * FROM 职工 WHERE 仓库号 = 仓库.仓库号) 等价于 SELECT * FROM 仓库 WHERE 仓库号 IN (SELECT 仓库号 FROM 职工) 结果是: WH1 北京 370 WH2 上海 500 WH3 广州 200 * 注意: [NOT] EXISTS只是判断子查询中是否有或没有结果返回,它本身并没有任何运算或比较。 [NOT] EXISTS实际是一种内、外层互相关的嵌套查询,只有在内层引用了外层的值,这种查询才有意义。 * 集合运算 SQL Server2005/2008支持以下的集合运算 并(UNION) 交(INTERSECT) 差(EXCEPT) * 集合并运算 查询工资大于1500和工资小于1250的职工的仓库号、职工号、和工资信息(用集合并运算完成),结果按工资升序排序。 语句 SELECT 仓库号, 职工号, 工资 FROM 职工 WHERE 工资1500 UNION SELECT 仓库号, 职工号, 工资 FROM 职工 WHERE 工资1250 ORDER BY 工资 注意:ORDER BY短语是对最终结果进行排序,该短语不能用在中间结果上。 * 集合交运算 查询WH2仓库有经手2011年6月订购单的职工号信息(用集合交运算完成)。 语句 SELECT 职工号 FROM 职工 WHERE 仓库号=WH2 INTERSECT SELECT职工号 FROM 订购单 WHERE 订购日期 BETWEEN ‘2011/06/01’ AND ‘2011/06/30’ * 集合差运算 查询目前没有经手订购单的职工号(用集合差运算完成)。 语句 SELECT 职工号 FROM 职工 EXCEPT SELECT职工号 FROM 订购单 * 分组及计算查询 SQL语言不仅可以从数据库中查询原始信息,而且还可以直接对查询结果进行计算和汇总。 SQL语言支持分组的计算和汇总。 用于计算检索的函数主要有: COUNT——计数 SUM——求和 AVG——计算平均值 MAX——求最大值 MIN——求最小值 * 找出供应商所在地的数目 SELECT COUNT (DISTINCT 地址) FROM 供应商 结果为3 * 求支付的工资总数 SELECT SUM(工资) FROM 职工 结果是:6160 SELECT SUM(工资) AS 工资总和 FROM 职工 结果是: 工资总和 6160 * 求在“上海”仓库工作的职工的最高工资值 SELECT MAX(工资) FROM 职工 WHERE 仓库号 IN (SELECT 仓库号 FROM 仓库 WHERE 城市=‘上海’) 结果是:1250 * 求每个仓库的职工的平均工资 SELECT 仓库号,AVG(工资) 平均工资 FROM 职工 GROUP BY 仓库号 结果是: WH1 1230 WH2 1235 WH3 1230 * 求至少有两个职工的每个仓库的平均工资 SELECT 仓库号,COUNT(*) 职工人数,AVG(工资) 平均工资 FROM 职工 GROUP BY 仓库号 HAVING COUNT(*) = 2 结果是: WH1 2 1230 WH2 2 1235 COMPUTE子句 GROUP BY子句能完成汇总,但是却不能显示细节。 利用COMPUTE子句,汇总结果是附加在细节之后显示的,这样用户既能看到细节,又能看到汇总行。 COMPUTE子句的格式 COMPUTE 函数名(列名)[,函数名(列名)…] [BY 列名[,列名…]] 这里函数名只能是用于SELECT计算查询的函数SUM、AVG

文档评论(0)

1亿VIP精品文档

相关文档