Access为我们提供了几种不同类型的查询,主要分为两大类:选择查询和操作查询
选择查询
点击"创建"选项卡的查询设计:
关闭单击右键"SQL视图"
写查询语句
Select:是查询的意思;
班级,avg(英语分数),avg(语文分数):这三个就是我们要的结果,avg是英文平均的缩写
From学生成绩表4:这里是从"学生成绩表4"里面查
group by 班级:group by是分组的意思,就是按哪个字段进行分类
运行
那个红色的"叹号"就是运行
出现下面这个统计结果,第一列是英语平均分,第二列是语文平均分,一目了然:
可以为每个字段加一个别名,As后面接的是一个别名,也可以看作是一个代号,这个别名是为了让我们能够识别"avg(英语分数)"和 "avg(语文分数)"的
查询结果有变化
可以保存这个查询
常用的选择查询可以归纳以下几种类型
第一种查询语句:Select * from 学生成绩表4
它的意义就是查询"学生成绩表4"中所有的数据,下图便是:
运行之后,就出现下图这样的结果,和"学生成绩表4"中的数据一模一样。
第二种查询语句:Select * from 学生成绩表4 where 英语分数>=60
较之前多了where 英语分数>=60,就是表示加了条件限制,只查询英语成绩及格的数据,where后面接的就是限定条件。
运行之后,就出现下图这样的结果,显示的只是英语成绩及格的人员,不及格的不显示。
第三种查询语句:Select 班级,avg(英语分数) from 学生成绩表4 where 英语分数>=60 group by 班级
较之前多了"group by 班级",而且把"*"改成了"班级,avg(英语分数)",就是表示对不同班级进行分组查询,而且只查询及格人员的平均成绩,也就是中上等学生之间的比较,把不及格人员排除在外了。
运行后,是下图这样的结果,显示了不同班级英语成绩及格学生的平均分数。可以看到二班及格学生的英语平均成绩最高,可以断定,二班中上等生的英语成绩要普遍高于其它班级的中上等生。
在简单查询的基础上还可以进行多表查询和嵌套查询
多表查询:
下面这个数据库有两个成绩单,一个是期中考试,一个是期末考试,要看一看学生成绩有没有进步
创建一个查询,并写上下面的查询语句:
SELECT:后面接的就是我们想要的信息,如学号,姓名,期中英语分,期末英语分;
FROM:后面接的就是涉及的表名,这里面我们就涉及两个表,一个是"期中考试",一个是"期末考试";
WHERE:后面接的就是限定条件,因为我们查的是两个表,而这两个表必须有一个纽带能够联系到一起,而这个纽带就是学生的学号,因为每个学生的学号是唯一的,并没有重复,所以,我们查询两个表的时候必须找到一个纽带,这个纽带不能重复,否则我们无法准确的区分学生的成绩。
运行之后,得到下面的结果:
可以看到,赵风车的成绩下降的最快,期中考了70分,而期末考了35分,其他人的成绩有上升较快的,刘玲的成绩由30分上升到76分,这样每个学生的成绩就一目了然了,无论涉及几个表,只要找到这几个表共有的纽带,就可以查询每个表相对应的信息了。
嵌套查询:
先来看一下下面这个简单的查询:
运行结果是:
下面这个就是嵌套查询了:要看一下哪个班级英语平均分和语文平均分都及格了?
运行结果是这样的:
可以看到只显示两门成绩都及格的班级。
操作查询
1、更新表查询
增加一个字段(用于存放修改后的分数)
打开学生成绩表,会看到左上角有一个"视图",它就是设计视图
点击之后:
在下面空白的格子上去加一个字段 "英语分数2",数据类型选"数字",字段大小选"单精度型":
继续点左上角的"视图":
这个表多了一个字段 "英语分数2",创建一个查询,写上语句:
update 学生成绩表
set 英语分数2=英语分数+5
where 英语分数<60
Update后接要修改的表名,set是设置,后接要修改的内容,这里面"="不是等于,而是赋值,就是把"英语分数+5"赋给"英语分数2"字段,where后面接的还是条件。
运行之后:
下面是涉及两个表的"更新查询"
有两个表,一个表是基础信息表,一个是学生成绩表。
学生成绩表中的数据只有学号和分数:
基础信息表中有学号和姓名:
想要把姓名放到学生成绩当中:
在学生成绩表中增加一个姓名字段:
打开"学生成绩表",点击左上角的视图,然后在空白处加一个"姓名"字段,数据类型选"文本型"。
点击左上角的"视图"
创建一个查询并写上语句:
点击"创建"下的"查询设计",点击右键"SQL视图",就可以写语句了:
update 学生成绩表 a,基础信息 b
set a.姓名=b.姓名
where a.学号=b.学号
Update后面仍然接涉及到的表名,set后接的就是要做的内容,将b表中的内容赋值到a表中,where是条件,当学号相等的时候去做这件事。
运行结果:
2、生成表查询
"生成表查询"也是操作查询的一种,平时工作中也比较常用,从字面理解就是生成一个新的数据表。
下面是学生成绩表4,里面有3科的成绩,我们只想要数学的成绩,并且生成一个新的"数学成绩表":
直接创建一个查询,并写上语句:
Select 学号, 数学分数 into 数学成绩表 from 学生成绩表4
Select:后接要查询的字段(学号和 数学分数)
Into: 后接新生成的表名(数学成绩表)
From: 后接从哪个表进行提取数据(学生成绩表4)
运行后,在左侧空格出现了一个新生成的表,这个表就是"数学成绩表":
3、追加查询
就是向已有的表中追加数据,下面是一班成绩单,把二班的成绩单也追加到这个表中:
创建一个查询,并写上语句:
"Insert into 一班成绩 select * from 二班成绩"
Insert into:表示插入到,后接表名(要将数据插入到哪个表)
Select *: 表示插入哪些字段("*"代表全部字段)
From: 后接从哪个表进行提取数据(二班成绩)
运行后,在一班的成绩单里面多出来了二班的成绩:
4、删除查询
"删除查询"就是从一个表中删除数据。
下面是一班成绩单,里面混有二班的成绩,把二班的全部信息删除:
我们直接创建一个查询,并写上语句:
"delete * from 一班成绩 where 班级 = '二班'"
delete:表示删除记录数据(所有记录)
from: 表示从哪个表删除(一班成绩)
where:删除符合什么条件的数据(班级 = '二班')
运行后,在一班的成绩单里面二班的所有数据被删除了: