1、第4章 查询,4.1查询的基本知识4.1.1选择视图的方法a 使用视图工具b使用菜单c使用工具栏上工具按钮4.1.2查询的分类a 选择查询 b参数查询 c交叉表查询 d操作查询 e SQL查询,4.2查询操作4.2.1选择查询a 创建不带条件的查询b 创建带条件的查询常用的一些运算符算术运算:+ - * / mod 关系运算 = = =逻辑运算 and or not特殊运算 in between通配符 * ? Like is null is not nullc 创建带“与”或者“或”条件的查询查询中表达式实例Between #1998-8-8# And #1998-9-9#Like (“张*”
2、) Like “*小*” Like (“?”)In(“回族”,”汉族”),3,在选择查询中实现计算在选择查询中,除可实现有图中的运算外,也可 实现自定义运算。 实例:1.以学生表为数据源,建立一个统计各班人数的查询2.查询各班期中成绩的平均值4.计算期末成绩,期末成绩=(期中成绩+期末成绩+平时成绩)/34.以学生表、成绩表为数据源,统计各班成绩表中的最好成绩。4.2.2参数查询参数查询也叫人机对话查询,当运行查询时,根据设计好的提示信息,输入参数,从而得到查询结果。实例:1.建立一个参数查询,根据输入性别进行查询,要求输出全部字段。2.建立一个带有性别及民族两个条件的参数查询。4.2.3交叉
3、表查询交叉表可以实现表格的汇总计算,并将结果显示在行或列交叉的单元格中,实例:1.以学生表为数据源,产生“班号”(行)与“性别”(列)的交叉表查询。4.2.4操作查询操作查询也叫动作查询,操作查询可以修改数据源。包括生成表查询、更新查询、删除查询和追加查询。a、生成表查询可以实现由一个或多个数据源提取数据而生成一个新的数据源实例:由学生表和成绩表为数据源生成一个新的表。b、更新查询可是更新操作表的数据,在实现更新过程中,还可以 对表中的字段进行运算。实例:将学生表中的政治面貌由团员更新为党员c、追加查询是指将表中符合一定条件的某些记录追加到另外一个表尾部的操作,也叫表见操作。实例: 建立一个政
4、治面貌为党员的表,命名为“党员表”,再将学生表中政治面貌为团员的学生记录追加到党员表中。,d、删除查询可以从一个或多个表中产出一组记录,将删除整个记录,而不是只删除记录中所选的字段。实例:建立一个删除查询,删除“是否代培”为“-1”的记录相关上机真题实例:1.,23,45,67,8、10,4.2.5 SQL命令查询SQL查询是利用SQL命令创建的查询,可以用结构化查询语言来查询、更新和管理关系数据库。在查询设计视图中创建查询时,Access在后台建立了等效的SQL语句。SQL查询的特殊方式包括联合查询、传递查询、数据定义查询和子查询。1 SQL基本命令SQL语句格式SELECT DISTINC
5、T (消除重复值) |(*) AS FROM WHERE GROUP BY having ORDER BY 2 SQL 基本操作SQL设计视图的打开方式a、右键 b菜单3 单表查询,实例:1在成绩表中,使用SQL计算:总评成绩=期中成绩*0.3+期末成绩*0.6+平时成绩*0.1select 学号,期中成绩*0.3+期末成绩*0.6+平时成绩*0.1 as 总评成绩 FROM 成绩表常用数据类型的条件查询举例:selece * from student where 性别=“女”selece * from student where 平时成绩=80selece * from student wh
6、ere 是否代培=-1selece * from student where 出生年月=#1999-9-9#selece * from student where 民族 IN(“汉族”,”回族”)selece * from student where 年龄 between 21 and 24selece * from student where 年龄 is nullselece * from student where 年龄nullselece * from student where 姓名 like ”*刘*”,4 创建SQL联合查询联合查询可以将两个或者更多表或者查询中的字段合并到查询结果
7、中的一个字段中,联合查询包括:等值查询、自然连接、非等值查询、自身连接、外连接、复合条件连接查询。(1) 等值联接与非等值连接查询select 学生表.* ,成绩表.* from 学生表,成绩表 where 学生表.学号=成绩表.学号(2) 自然连接(3) 自身连接(本表连接)查询与姓“李”的同籍贯的学生select distinct s1.学号,s1.姓名 from 学生表 s1,学生表 s2 where s1.籍贯=s2.籍贯 and s2.姓名 like“刘*“(4) 复合条件连接SELECT 学生.姓名, 学生.学号 FROM 学生,成绩 WHERE 学生.学号=成绩.学号 and (
8、成绩.课程号)=“1“ AND 成绩.成绩)71(5) 嵌套查询查询与姓“李”的同籍贯的学生SELECT 姓名,籍贯 from 学生表 where 籍贯 in(select 籍贯 from 学生表 where 姓名 like “*刘*“),查询选修了101号课程的学生select 姓名,成绩表.学生编号 from 成绩表,学生表 where 成绩表.学生编号=学生表.学号 and 课程号=“101“查询没有选修101号课程的学生select 姓名 from 学生表 where not exists (select * from 成绩表 where 成绩表.学生编号=学生表.学号 and 课程号
9、=“101“)查询选修了全部课程的学生SELECT 姓名 from 学生表 where not exists (select * from 成绩表 where not exists (select * from 成绩表,课程表 where 成绩表.学号=学生表.学号 and 成绩表.课程号=课程表.课程号)6数据定义查询数据定义查询可以创建、删除或改变表,也可以在数据库表中创建索引create table alter tabledrop create index,如:create talbe 学生表 ( 姓名 text,性别 text ,出生日期 date)注:数据类型说明integer 整形 ,text 文本 ,long 长整形, single 单精度,double双精度 , string 字符型 , currency 货币型, date 日期型 , boolean 布尔型如:alter table 学生表 add 年龄 integerdrop table 学生表alter table 学生表 add unique 姓名,