资源描述
1,第七章 视图和查询,教学内容:简单的顺序查询与索引查询方法;利用查询设计器和SQL语句构造SQL查询;视图的含义与两类视图的创建与使用方法。 重 点:创建视图、利用视图更新数据、创建查询、使用查询。 难 点:利用视图设计器和SQL语句创建可更新的视图。,2,第七章 视图和查询,7.1 视图 7.2 查询 7.3 结构化查询语言SQL,3,7.1 视图,视图不能单独存在,它依赖于某一数据库。只有打开与视图相关的数据库才能创建和使用视图。 7.1.1 利用视图设计器创建视图 (单表视图) 打开数据库,进入“数据库设计器”窗口“文件” “新建” 选择文件类型为“视图” “新建文件” ,弹出“添加表或视图”窗口把建立视图所依据的表添加到视图设计器中添加可用的字段到“选定字段”的列表框中“退出”,进入保存提示窗口输入视图名保存。 7.1.2浏览视图 选定要浏览的视图“数据库”菜单中选择“浏览”。,4,7.1 视图,7.1.3 创建多表视图 在添加表时要添加多个表进入“连接条件”窗口选定连接条件,其余操作同7.1.1 7.1.4 利用向导创建视图 7.1.5 利用视图更新数据 为保证在视图中更新的数据能够有效送到原表中,需要进行如下设置: 数据库中选定视图文件“数据库”菜单中的“修改” “视图设计器”窗口中选择“更新条件”标签选择要更新的字段名选择“发送SQL”,5,7.2 查询,视图与查询 视图要在数据库;查询不一定在数据库。 视图有更新功能;查询没有。 查询有多种输出格式;视图较少。 7.2.1 创建查询(单表查询) “文件” “新建” 选择“查询” “新建文件” 选择要使用的表在“查询设计器”窗口的“可用字段”列表框中,选择需要的字段“退出” 输入查询文件名保存 7.2.2 创建查询(多表查询) 在“选择要使用的表”时选择多张表,并建立连接,其余同7.2.1 7.2.3 运行查询 菜单方式:打开查询“查询”菜单运行查询 命令方式:DO .qpr,6,7,7.3 SELECT-SQL查询,仓库,职工,供应商,8,订购单,注:NULL是空值,表示供应商未确定,9,一、 SELECT-SQL查询命令 1、简单查询 格式: SELECT ALL | DISTINCT FROM WHERE 说明: ALL表示选出的记录中包括重复值 DISTINCT表示选出的记录中不包括重复值 缺省为ALL,例1 :从职工表中检索出所有工资值 SELECT 工资 FROM 职工 或 SELECT DISTINCT 工资 FROM 职工,10,例2 :检索仓库表中的所有内容 SELECT * FROM 仓库 注:*是通配符,表示所有字段,例3 :检索工资多于1230元的职工号 SELECT 职工号 FROM 职工 WHERE 工资1230 注:WHETE用于指定查询条件,条件须是逻辑表达式,11,例4:检索哪些仓库有工资多于1210元的职工 SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资1210 注:本处需使用DISTINCT,例5:给出在仓库WH1或WH2工作,并且工资少于1250元的职工号 SELECT 职工号 FROM 职工 WHERE 工资1250 AND (仓库号=“WH1” OR 仓库号=“WH2”),12,2、简单的关联查询 格式: SELECT ALL | DISTINCT . , . FROM , WHERE 说明: 别名为表的别名,例6:找出工资多于1230元的职工号和他们所在城市 SELECT 职工号,城市 FROM 职工,仓库 WHERE 工资1230 AND (职工.仓库号=仓库.仓库号),例7:找出工作在面积大于400的仓库的职工号,以及这些职工工作所在城市 SELECT 职工号,城市 FROM 职工,仓库 WHERE (面积400) AND (职工.仓库号=仓库.仓库号),13,3、嵌套查询 格式: SELECT FROM WHERE IN ( SELECT FROM WHERE ),例8:哪些城市至少有一个仓库的职工工资为1250元? SELECT 城市 FROM 仓库 WHERE 仓库号 IN (SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资=1250),例9:找出和职工E4挣同样工资的所有职工 SELECT 职工号 FROM 职工 WHERE 工资= (SELECT 工资 FROM 职工 WHERE 职工号=“E4”) 注:E4为字符型数据,需用引号定界,14,4、排序 格式: SELECT FROM WHERE ORDER BY ASC | DESC ,ASC|DESC 说明: 查询结果按的值进行排序 默认为ASC升序,例13:按职工的工资值升序检索出全部职工信息,工资相同时按仓库号降序排列 SELECT * FROM 职工 ORDER BY 工资,仓库 DESC,15,5、简单的计算查询 在SELECT语句中,可包含以下系统函数,以完成某种计算功能 AVG() 求平均值 COUNT() 统计记录个数 MIN() 求最小值 MAX() 求最大值 SUM() 求和,16,例14:找出供应商所在地的数目 SELECT COUNT(DISTINCT 地址) FROM 供应商,例15:求支付工资的总数 SELECT SUM(工资) FROM 职工,例16:求北京和上海的仓库职工的工资总和 SELECT SUM(工资) FROM 职工WHERE 仓库号 IN (SELECT 仓库号 FROM 仓库 WHERE 城市=“北京” OR 城市=“上海”),例17:求在WH2仓库工作的职工的最高工资值 SELECT MAX(工资) FROM 职工 WHERE 仓库号=“WH2”,17,6、分组与计算查询 格式: SELECT FROM WHERE GROUP BY HAVING ,例18:求每个仓库的职工的平均工资 SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号,例19:求至少有两个职工的每个仓库的平均工资 SELECT 仓库号,COUNT(*),AVG(工资) FROM 职工 GROUP BY 仓库号 HAVING COUNT(*)=2 注:COUNT(*)表示表中记录个数,18,7、连接查询(多表查询) 格式: SELECT FROM INNER | LEFT | RIGHT | FULL JOIN ON WHERE 说明: INNER JOIN = JOIN :内部连接 LEFT JOIN : 左连接 RIGHT JOIN: 右连接 FULL JOIN: 全连接,19,20,21,22,23,8、集合的并运算(UNION) 将两个SELECT查询语句的结果通过并运算合成一个查询结果,要求两个查询结果具有相同的字段个数,对应字段要有相同的数据类型和取值范围,例24:求北京和上海的仓库信息 SELECT * FROM 仓库 WHERE 城市=“北京” UNION SELECT * FROM 仓库 WHERE 城市=“上海”,24,9、显示部分结果 SELECT TOP PERCENT FROM ORDER BY 说明: TOP 子句须与ORDER BY 子句同时使用 表示在符合条件的记录中选取的记录数,范围在132767 排序后并列的若干项只算一项 PERCENT表示百分比,此时为百分比的整数部分,范围在0.0199.99,25,例25:显示工资最高的三位职工的信息 SELECT * TOP 3 FROM 职工 ORDER BY 工资 DESC,例26:显示工资最低的那30%职工信息 SELECT * TOP 30 PERCENT FROM 职工 ORDER BY 工资,26,10、查询结果的存放 (1)INTO 目标可为: ARRAY :查询结果输出到数组 CURSOR :查询结果输出到临时表 DBF :查询结果输出到表 (2)TO 子句 TO FILE:查询结果输出到指定的 文本文件 TO PRINTER: 查询结果输出到打印机 TO SCREEN :查询结果输出到屏幕,
展开阅读全文