Access数据库简介 Access是Microsoft公司推出的Office系列办公自动化软件的一个组件 它是一个小型的数据库管理系统。 它广泛应用于财务、行政、金融、统计和审计等众多领域。 在1992年11月Microsoft公司推出了第一个供个人使用的关系数据库系统 此后Access不断地改进和优化,从1995年开始,Access作为MicrosoftOffice套装软件的一部分,先后推出了多个版本 目前比较好用,而且比较稳定的版本是Access2010 你在安装Office2010后,便可启动Access数据库管理系统: “开始”→“所有程序”→“MicrosoftOffice” “MicrosoftAccess2010”命令,启动Access2010。 在Access2010中,它给我们提供了六大数据库对象,Access的主要功能就是通过这六大数据对象来完成的: 表(Table) 查询(Query) 窗体(Form) 报表(Report) 宏(Macro) 模块(Module) 创建数据表的方式有以下几种: 1、通过复制粘贴创建数据表 首先创建了一个空的数据库,找到保存到的路径,双击打开: 选择“表”后,出现了表1,这个就是我们创建的表了,但它是一个空的表: 这个空的表默认的表名就是表1,当然,我们可以给它改成其它的我们便于识别的名字,下面这个图就是了: 从Excel表里面取个现成的数据: 复制后粘贴: 上面这个数据表已经不是普通的数据表了,它是以数据库的形式存在数据表里面,我们可以用数据库命令对这个数据表进行相应操作了。 2、通过导入外部数据创建数据表 Access数据库也可以通过导入外部数据的方式来建立数据表。 在其它文件格式当中,最常用的就是最后一个dBASE文件,它是VF数据库格式,它的扩展名是.dbf 也可以直接导入Excel文件当中的数据: 选中一个数据表: 下一步: 可以添加主键,也就是前面ID那个字段,它就会自动有个编号,所谓的主键,就是不能有重复,它的作用是方便以最快的速度找到想要的行数据: 输入刚刚导入数据表的名称即可: 找到要导入文本文件所在的路径: 继续下一步: 还可以导入VF数据库文件,实际就是将别的数据库格式文件的数据直接移植到ACCESS数据库 Access为你提供了几种不同类型的查询,主要分为两大类:选择查询和操作查询 在进行查询前,我们首先要明确我们的目的,也就是你想要一个什么样的结果? 知道我们想要什么了,才能进一步写查询语句。 例如,校长让教务处主任统计一下哪个班级的英语平均成绩最好?哪个班级语文平均成绩最好? 要统计这个数据,主要分以下几步: 第一步:创建查询 关闭单击右键“SQL视图” 第二步:写查询语句 Select:查询; 班级,avg(英语分数),avg(语文分数):这三个就是我们要的结果,avg是英文平均的缩写 From学生成绩表4:这里是从“学生成绩表4”里面查 groupby班级:groupby是分组的意思,就是按哪个字段进行分类 第三步:运行 红色的“叹号”就是运行 出现下面这个统计结果 第一列是英语平均分 第二列是语文平均分 可以为每个字段加一个别名,As后面接的是一个别名, 也可以把它看作是一个代号 这个别名是为了让你能够识别“avg(英语分数)”和“avg(语文分数)”的 查询结果有变化: 可以保存这个查询: 常用的选择查询可以归纳以下几种类型 第一种查询语句: 它的意义就是查询“学生成绩表4”中所有的数据,下图便是: 运行之后,就出现下图这样的结果,和“学生成绩表4”中的数据一模一样。 第二种查询语句: 较之前多了where英语分数=60,就是表示加了条件限制,只查询英语成绩及格的数据,where后面接的就是限定条件。 运行之后,就出现下图这样的结果,显示的只是英语成绩及格的人员,不及格的不显示。 第三种查询语句: 较之前多了“groupby班级”,而且把“*”改成了“班级,avg(英语分数)”,就是表示对不同班级进行分组查询,而且只查询及格人员的平均成绩,也就是中上等学生之间的比较,把不及格人员排除在外了。 运行后,是下图这样的结果,显示了不同班级英语成绩及格学生的平均分数。 可以看到二班及格学生的英语平均成绩最高 二班中上等生的英语成绩要普遍高于其它班级的中上等生 1、avg()函数 这个比较熟悉,就是取字段的平均值:求每个班级语文的平均分: 运行结果: 2、sum()函数 这个函数和我们Excel里面的比较类似,它就是求和函数,求每个班级语文的总分: 运行结果: 3、count()函数 统计记录数,求每个班级的学生人数: 运行结果: 4、max()函数 取字段最大值,求每个班级的语文最高分: 运行结果: 5、min()函数 取字段最小值,求每个班级的语文最低分: 运行结果: where和having在查询语句中的作用都是条件限制 它们在查询语句中的位置是不一样的,而且限制的内容也不一样 1、所处位置不一样 在查询语句中where作为普通条件限制,它是在groupby之前 而having是一个过滤声明,是在查询返回结果集以后对查询结果进行的条件限制,位置是在groupby之后 2、后接内容不一样 在查询语句中where后面只能接普通条件,不能接聚合函数条件 所谓的聚合函数就是我们上一期提到的函数都可称为聚合函数 下面where后这样写是错误的: 在查询语句中having作为查询结果返回后的条件限制,需要接返回结果后的条件 下面having后这样写是错误的,因为返回结果已经不存在“英语分数”这个字段了: 3、运行结果不一样 在where后接的条件表示要在英语成绩及格的学生中进行统计 统计这些学生的语文成绩怎么样 从下面的结果可以看到: 在一班英语及格的学生中语文成绩并不好平均成绩没有达到及格线 而其它班级英语和语文成绩都较好。 而having后加了个条件是avg(语文分数)=60 这表示在统计结果中只显示平均成绩及格的班级,不及格的班级不显示 从结果看以看到: 下面这个结果较之前少了一个班级,就是一班,因为一班语文平均成绩没及格 下面这个数据库有两个成绩单 一个是期中考试 一个是期末考试 要看一看学生成绩有没有进步: 创建一个查询,并写上下面的查询语句: SELECT:后面接的就是我们想要的信息,如学号,姓名,期中英语分,期末英语分; FROM:后面接的就是涉及的表名,这里面我们就涉及两个表,一个是“期中考试”,一个是“期末考试”; WHERE:后面接的就是限定条件,因为我们查的是两个表,而这两个表必须有一个纽带能够联系到一起,而这个纽带就是学生的学号,因为每个学生的学号是唯一的,并没有重复,所以,我们查询两个表的时候必须找到一个纽带,这个纽带不能重复,否则我们无法准确的区分学生的成绩。 运行之后,得到下面的结果: 可以看到,赵风车的成绩下降的最快,期中考了70分,而期末考了35分 其他人的成绩有上升较快的,刘玲的成绩由30分上升到76分 这样每个学生的成绩就一目了然了,无论涉及几个表,只要找到这几个表共有的纽带,就可以查询每个表相对应的信息了。 先来看下面这个简单的查询: 运行结果是: 下面这个就是嵌套查询了:要看一下哪个班级英语平均分和语文平均分都及格了? 运行结果是这样的,可以看到只显示两门成绩都及格的班级。:Select班级,avg(英语分数),avg(语文分数)From学生成绩表4groupby班
Select班级,avg(英语分数)as英语平均分,avg(语文分数)as语文平均分From学生成绩表4groupby班
Select*from学生成绩表4
Select*from学生成绩表4where英语分数=60
Select班级,avg(英语分数)from学生成绩表4where英语分数=60groupby班级
Select班级,avg(语文分数)from学生成绩表groupby班级
Select班级,sum(语文分数)from学生成绩表groupby班级
SELECT班级,count(学号)FROM学生成绩表GROUPBY班级;
SELECT学号,max(语文分数)FROM学生成绩表GROUPBY学号;
SELECT班级,avg(语文分数)AS语文平均分FROM学生成绩表WHERE英语分数=60GROUPBY班级
SELECT班级,avg(语文分数)AS语文平均分FROM学生成绩表WHERE英语分数=60GROUPBY班级HAVINGavg(语文分数)=60;
SELECT班级,avg(语文分数)AS语文平均分FROM学生成绩表WHEREavg(语文分数)=60//错误GROUPBY班级
SELECT班级,avg(语文分数)AS语文平均分FROM学生成绩表WHERE英语分数=60GROUPBY班级HAVING英语分数=60;//错误
SELECTA.学号,A.姓名,A.英语分数AS其中英语分,B.英语分数AS其末英语分FROM基础信息ASA,期末考试ASBWHEREA.学号=B.学号;
SELECT班级,avg(英语分数)AS英语平均分,avg(语文分数)AS语文平均分FROM学生成绩表4GROUPBY班级;
SELECT*FROM(SELECT班级,avg(英语分数)AS英语平均分,avg(语文分数)AS语文平均分FROM学生成绩表yGROUPBY班级)AS[%$@_Alias]WHERE英语平均分=60AND语文平均分=60;
上一篇
下一篇