资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Access 数据库技术,第4章 查询,第 4 章 查询,认识查询 通过查询来查看、更改、分析数据 用来搜索、汇总、追加、删除数据 可以用来作为报表、窗体的数据源 从一个或多个基表中获取的数据排序显示,几种常用的查询,交叉表查询 SQL 查询 自动输入数据的“自动查阅”查询,选择查询 参数查询 操作查询,4.1 选择查询的创建,使用“简单查询向导” 方法1: 单击“新建” 选择“简单查询向导” 方法2: 双击快捷方式“使用向导创建查询”,查询的三种视图,数据表视图 设计视图 SQL视图,常用此按钮切换,使用“设计视图”创建查询,双击字段名,增加字段,拖动可以调整位置、宽度等,条件的使用,实例1:查找“80年以前工作的教师”,显示:#1980-1-1#,实例2 性别为“男”的副教授,同行表示“与”,不同行表示“或”,实例3 职称为“教授”或“副教授”的教师,或在同一行中输入:“教授“ Or “副教授“,实例4:学历不是“本科”的职工,实例5:列出所有姓“李”的教师,输入:李*,自动形成表达式:Like “李*“,利用表达式生成器建立条件,实例6:查找工资在5001000之间的职工,添加计算结果字段,在查询中,允许添加“计算字段”, 操作如下: 在右端第一个空列上输入计算表达式 例如在查询5中增加字段:基础工资*0.1 当“回车”后,变为:表达式1:基础工资*0.1 将“表达式1”改为字段名“奖金”,即: 奖金:基础工资*0.1,实例7:计算各人的总分和平均分,分组统计的查询(Group By),实例8:按性别求A班各科成绩的平均分 只保留分组字段“性别”的“Group By”,其他各科成绩的总计项改为相应的统计函数 , 单击“”按钮,创建带有参数的通用查询,直接在“条件”中输入 提示内容 例1,在基础工资“条件”中输入: Between 最低工资 and 最高工资 表示两个可变的上、下限值。 例2,按性别查询 (在性别“条件”中输入) 性别? 或请输入性别:,创建自动输入数据的 “自动查阅”查询,“自动查阅”必须符合以下特殊条件: 基于一个以上的表,且具“一对多”的关系 “一方”必须具有唯一的索引(主键) 联接字段必须来自“多方”(不能是主键) “多方”输入的值,必须在“一方”已存在。 功能: “多方”联接字段的值被更改,或添加新数据时,自动查找并显示“一方”中相关的值。,例9 利用“自动查阅”功能建立查询“学生选课情况”,(1) 在查询的设计视图中,有关的三个表,见下图; (2) 将有关字段拖到设计网格中,这里的关键技术是“学号”和“课程ID” 都必须选择“学生选课”中的字段,因为只有它们已建立查阅字段 ; (3) 保存查询,命名为“学生选课情况”;,测试,1) 切换到“数据表视图”,在最后一行增加新的选课学生; 2) 单击学号选择某学生; 3) 单击查阅字段“课程ID”,选中“艺术教育”, 说明:由于在“学生选课”中,已对“学号”和“课程ID”建立了查阅字段,因此,只要对这2个字段直接选择,就可以得到6个字段的全部信息,2 使用“向导”创建交叉表查询,对于“学生选课”表,按姓名列出每个学生选修课的学分总数,交叉表查询操作步骤,(1)选择表“学生”等(见图),建立辅助的查询“学生选课情况”;(因为学生选课中没有姓名和课程名),交叉表查询操作步骤,(2)在查询的设计视图中,单击“新建”按钮,选择“交叉表查询向导”, (3)选择查询“学生选课情况” ,下一步,选择“姓名”作为行标题; (4) 下一步,选择“课程名”的值作为列标题; (5) 选择“学分”作为计算对象,选择函数“求和”;,3. 使用“查找重复项查询向导”,该向导帮助用户查找数据库中的重复数据。 实例:查找“学生选课”表中输入重复的记录 (即选同一门选课,被两次输入) 操作步骤: 单击“新建”,选择“查找重复项查询向导”; 指定基表或查询; 确定可能重复的字段,(姓名、课程名 ) 选择其它要显示的字段(剩余的其它字段) 完成,4. 使用“查询向导”查找表之间不匹配的纪录,实例: 列出“课程”表中从未被选修的课程名称。 发生于“一对多”的关系 步骤: 单击“新建”,选择表“课程” (一方) 选择与之匹配的相关表“学生选课” (多方) 建立匹配,按按钮 指定两个表之间的相关字段,即 “课程ID”,4.2 操作查询的创建,创建“生成表查询” 功能:本查询的执行将产生一个新表 实例1:创建生成表查询: 从“学生”表中,将98级的学生,生成表名为“98毕业生备份”的新表。 用SQL语句表示如下: SELECT 学生.* INTO 98毕业生备份 FROM 学生 WHERE (学生.年级)=“98“);,操作步骤,建立一个选择查询,它包含新表所需的字段(来自表或查询) 将所需的字段拖入设计网格,(设定条件) 将类型改为“生成表” 在“表名称”框填入新表的名称 要预览新表的内容,单击“视图”按钮 要生成新表,单击运行按钮“!”,2、创建“删除查询”:,例2:从“学生”表中,将98级的学生删去。 建立一个选择查询,条件是班级为98 将查询类型修改为:“删除查询” 要预览即将删除的字段,单击“视图”按钮 要执行删除,单击红色的运行按钮“!” 用SQL语句表示如下 DELETE 学生.*, 学生.年级 FROM 学生 WHERE (学生.年级)=“98“);,3. 创建“追加查询”,功能:从一个表(A)追加纪录到另一个表(B) 基于要追加的数据源表(A),建立查询 将类型改为追加查询 在“表名称”框中填入用来接受数据的表(B) 若(B)表在当前数据库,则选择“当前数据库” 单击运行按钮“!” 用SQL语句表示如下 INSERT INTO AA ( 学号, 姓名, 性别, 专业, 年级, 出生日期, 籍贯, 毕业中学 ) SELECT 学生.学号, 学生.姓名, 学生.性别, 学生.专业, 学生.年级, 学生.出生日期, 学生.籍贯, 学生.毕业中学 FROM 学生 WHERE (学生.姓名) Like “李*“) AND (学生.性别)=“男“);,例3:创建“追加查询”,将“学生”表中姓李的男生的信息追加到“AA”表中 说明:追加查询要求两个表具有相同的字段(多个)和属性,顺序可以不同,为了不破坏数据库的原始表, 先将“A班学生信息”复制副本“AA”, 再将“学生”表中姓李的男生的信息追加到“AA”表中 注意:追加查询不能用*号,再加条件,4. 更新查询,功能:利用查询结果更新一个表 例4:将基础工资在900以下的增加100元 建立一个查询,它包含所需的字段(要更新的字段和条件所在) 将类型改为“更新查询” 在“基础工资”的更新到中输入“基础工资+100” 在条件中输入“900” 要预览更新表的内容,单击“视图”按钮 要执行更新,单击运行按钮“!” 注意:查询中只要输入条件的字段 用SQL语句表示如下: UPDATE 教师信息表 SET 教师信息表.工资 = 工资+100 WHERE (教师信息表.工资)900);,4.3 SQL查询(P95),在“新建”-“设计视图”-选择表-查询下,见下图:,最简单的SQL,SELECT * FROM ; SELECT FROM ; SELECT 姓名,性别, 籍贯 FROM A班学生信息 ; SELECT 姓名 , 性别, 职称 FROM 教师信息表 ORDER BY 姓名;,逗号分隔 分号结束,SQL视图代码的表达,例1:列出工资在550元以下的女职工 SELECT * FROM 职工信息表 Where 性别=“女” and 基础工资 =500; 例2:多表查询 SELECT A班学生信息.学号, A班学生信息.姓名, A班成绩表.数学, A班成绩表.英语, A班成绩表.政治 FROM A班学生信息 INNER JOIN A班成绩表 ON A班学生信息.学号 = A班成绩表.学号;,4.4 联合查询,功能:用于将多个表的信息合并(相同的字段和顺序) 例1:将“98毕业生备份”表与“aa”表建立联合 SELECT * FROM aa UNION SELECT * FROM 98毕业生; 例2:师生姓名,性别列表 SELECT 姓名,性别 ,出生日期,“学生“ AS 身份 FROM A班学生信息 UNION SELECT 姓名,性别,出生日期, “教师“ FROM 教师信息表 ORDER BY 性别 DESC;,再见!,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号