Access数据库程序设计总复习注意2:考试包括试卷、答题卷、机读卡。学号、姓名不能漏写。自带2B铅笔,用于填涂答题卡。不允许使用任何电子设备。带把尺子注意1:总成绩构成:平时成绩占40%,期末考试占60%。按教务处规定“期末考核成绩不及格者,只登记该门课程的期末考核成绩,该门课程必须重修”。考试时间:2018年1月10日考试范围:教材:1~9章。第一章1.35、1.36面向对象模型(不考核)第五章5.4.2规范化基础、5.5、5.6、5.7(不考核)第六章6.5SQL查询设计(不考核)第七章创建索引的语句(不考核)第九章9.3程序调试(不考核)考试参考资料:实验指导书(P90应用题;P114应用题、实验八内容;习题集其他习题)(重点)补充的样题(重点)Access补充复习题(任课教师提供)(重点)部分往年期末考试试卷(重点)补充的等级考试真题(只看教学范围内的习题,着重看VBA题目)(超出教学范围的内容及习题可不看)期末题型:一、判断题(0.5分*20=10分)二、选择题(1分*40=40分)(说明:包含VBA程序阅读题)三、填空题(1分*10=10分)四、应用题(40分)1.关系运算(2分*5=10分)2.SQL语句(2分*5=10分)(说明:有多表连接查询)3.VBA(10分)①VBA表达式写结果(1分*5=5分)②VBA程序编写(5分)4.实验操作题(10分)2题说明:第一、二题在机读卡上完成。第三、四题在答题卷上完成。不考问答题,题型分值和顺序可能略有调整。题型1.关系运算例:设有关系R、S如下表所示,计算:关系R关系S(1)RS(2)A,B(C=“f”(R))(3)A(R)×B=“a”(S)ABCabcbbfcadbcfBCDbcdbceadbefgABCDaacbbaccddebABbbbcABCDabcaaadddbbb(1)(2)(3)答案:注:答案不要写成SQL语句应用题题型第二章---习题4(平时作业)设有关系R、S如例2.11(a)和(b)即下表所示,计算:关系R关系S(1)A,B(R)(2)A=“a1”(R)(3)A,B(A=“A1”(R))(4)A=“a1”(R)S(5)A,B,E(RS)(6)A,B,E(E=3(RS)ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52ABa1a2a3a4b1b2b3b4ABCa1a1b1b256ABa1a1b1b2ABCEa1a1b1b25637ABEa1a1a2a2b1b2b3b337102(1)(2)(3)(4)(5)答案:(6)ABEa1b13第二章---习题5(平时作业)用关系代数表示下面的每个查询,数据表为教材2.12中的(a)、(b)、(c)。(1)列出职称为“讲师”的所有教师。职称=“讲师”(教师)(2)列出成绩大于80分的学生的学号。学号(成绩80(选课))(3)列出王莉所教学生的学号。学号(选课姓名=“王莉”(教师))或学号(姓名=“王莉”(选课教师)(4)列出教“高等数学”老师的编号。教师编号(选课课程名=“高等数学”(课程))或同上(5)列出同时选修了课程编号为“03001”和“03356”的学生的学号。学号(课程编号=“03001”(选课))学号(课程编号=“03356”(选课))(或先求交再投影)(6)列出是刘慧英的学生而不是王莉的学生的学号。学号(选课教师)-学号(选课教师)选课.教师编号=教师.教师编号^姓名=“刘慧英”选课.教师编号=教师.教师编号^姓名=“王莉”题型2.SQL语句设有一个职工表,表中有若干条记录,表结构定义如下:编号姓名部门年龄进厂日期职称性别工资文本文本文本整型日期/时间文本文本数值型记录举例:2006李平技术部501980/05/06技术员男5896.6编写SQL命令完成下面的查询:a.统计女职工人数。b.删除年龄在70岁以上的职工的全部信息。c.在职工表中,将进厂日期在1970年和1975年之间的职工工资增加20%。d.显示姓“王”的全部男职工的信息。e.增加一个“简历”字段。SELECTCOUNT(编号)As人数FROM职工WHERE性别=女DELETEFROM职工WHERE年龄=70UPDATA职工SET工资=工资*1.2WHEREYEAR(进厂日期)=1970andYEAR(进厂日期)=1975SELECT*FROM职工WHERE性别=男andLEFT(姓名,1)=王ALTERTABLE职工ADD简历memo①建立一个Student表,它由Sno(学号)、Sname(姓名)、Ssex(性别)、Sage(年龄)、Sdept(所在系)五个属性组成。其中学号为主码,并且姓名不能为空,取值唯一。②建立一个SC(学生选课)表,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。CreateTableStudent(Snochar(6)primarykey,Snamechar(4)notnullunique,Ssexchar(1),Sagesmallint,Sdeptchar(20));CreateTableSc(Snochar(4),Cnochar(6),Gradesmallint,primarykey(Sno,Cno));数据类型数据类型TEXT/VARCHAR/CHAR文本DATE日期/时间SMALLINT短整型REAL/SINGLE单精度型INTEGER/INT长整型FLOAT双精度型BIT/LOGICAL逻辑型下面3-10题均使用教材中的学生信息管理表。③查询所有姓刘的学生的学号与姓名及其出生年月。SELECT学号,姓名,出生年月FROM学生WHERE姓名like刘*;SELECT学号,姓名,班级名称,学院名称FROM学院,班级,系,学生where班级.班级编号=学生.班级编号and系.系编号=班级.系编号and学院.学院编号=系.学院编号;SELECT姓名,Year(Date())-Year(出生年月)As年龄FROM学生WHEREYear(Date())-Year(出生年月)=20;SELECT学生.学号,姓名FROM学生,选课where学生.学号=选课.学号and成绩60;④查询全体学生的姓名、学号、班级名称、学院名称。⑤查所有年龄在20岁以下的学生姓名及其年龄。⑥查考试成绩有不及格的学生的学号和姓名。⑦查询每个学生的姓名及其选修的课程名和成绩。SELECT学生.姓名,课程.课程名,选课.成绩FROM学生,课程,选课where课程.课程编号=选课.课程编号and学生.学号=选课.学号;SELECTCount(学号)AS人数FROM选课where选课.课程编号in(select课程编号from课程where课程名=数据库应用);或SELECTCount(学号)AS人数FROM选课,课程where课程.课程编号=选课.课程编号and课程名=数据库应用;⑧查询选修了“数据库应用”课程的学生人数。以下SQL语句能解释运行结果(不要求写出语句,了解)。⑨查询信息学院全体学生的学号、姓名、每门课程的成绩。SELECT学生.学号,姓名,成绩FROM班级,系,学生,选课,学院where学生.学号=选课.学号and班级.班级编号=学生.班级编号and系.系编号=班级.系编号and系.学院编号=学院.学院编号and学院.学院编号in(select学院编号from学院where学院名称=信息学院);或SELECT学生.学号,姓名,成绩FROM班级,系,学生,选课,学院where学生.学号=选课.学号and班级.班级编号=学生.班级编号and系.系编号=班级.系编号and系.学院编号=学院.学院编号and学院名称=信息学院;设有下列关系表R(no,name,age,class),其中表中各项分别是学号、姓名、性别、年龄、班级编号,写出下列功能的SQL语句。INSERTINTORVALUES(25,李明,男,21,95031);(1)插入一个记录(25,“李明”,“男”,21,95031)。第七章---习题4(平时作业)INSERTINTOR(学号,姓名,班级)VALUES(0,郑和,95031);(2)插入95031班学号为0,姓名为“郑和”的学生记录。UPDATERSET姓名=王华WHERE学号=10;(3)将学号为10的学生姓名修改为“王华”。UPDATERSET班级编号=95011WHERE班级编号=95031;(4)将所有95031班号改为95011。SELECT*FROMRWHERE姓名LIKE王*;(5)查询所有姓王的学生。DELECTFROMRWHERE性别=男;(6)删除所有男生信息。题型3.VBA函数及编程①VBA表达式写结果(举例)计算下列函数值答案(1)Sqr(4+3*7)+Round(-4.6)0(2)Int(-15.35)+Abs(-12)-4(3)Mid(abcdABCD,5,2)&12AB12(4)Len(高等教育出版社)+310(5)Str(12)+AB12AB(6)Val(45a)+550(7)Lcase(abAs)+Right(高等教育,2)abas教育(8)Len(Left(1234程序设计ABC,6))6掌握以上函数。(函数不超样题范围)②VBA编程(举例)例1用InputBox分别输入x和y两个变量,比较它们的大小,使得x中的值大于y。用MsgBox输出x和y的值。DimxAsSingleDimyAsSingleDimtAsSinglex=Val(InputBox(x值))y=Val(InputBox(y值))IfxyThent=xx=yy=tEndIfMsgBoxx=&x&y=&y教材:第九章9.2.6节例题;习题集:第九章习题例2在按钮单击事件中编写程序,用InputBox函数输入i值,判断其奇偶性,用MsgBox输出结果。PrivateSubCommand0_Click()DimiAsIntegeri=InputBox(请输入一个数)IfInt(i/2)*2=iThenMsgBoxi&是偶数ElseMsgBoxi&是奇数EndIfEndSub0x<2003%200≤x<5005%500≤x<10008%1000≤x<200010%x≥2000Y=例3某公司按购买款项数目x给予不同折扣优惠y。编写程序,用InputBox函数输入x值,求应付款s,用MsgBox输出结果。优惠条件如下:PrivateSubCommand0_Click()DimxAsSingle,sAsSinglex=Val(InputBox(x的值))SelectCasexCaseIs200MsgBoxs=&x-x*0Case200To499.999MsgBoxs=&x-x*3/100Case500To999.999MsgBoxs=&x-x*5/100Case1000To1999.999MsgBoxs=&x-x*8/100CaseIs=2000MsgBoxs=&x-x*10/100EndSelectEndSub例4计算1-100的奇数的个数并累加其和。DimiAsIntegerDimsAsIntegerDimnAsIntegerFori=1To100Step2s=s+in=n+1NextiMsgBox个数=&n&累加和=&s例5计算5!。DimiAsIntegerDimsAsSingles=1Fori=1To5s=s*iNextiMsgBoxs例6计算1!+2!+3!+4!+5!。DimiAsIntegerDimsAsIntegerDimaAsIntegerDimbAsIntegerFori=1To5a=1Forb=1Toia=a*bNextbs=s+aNextiMsgBoxs例7统计1-15之间不是3的倍数的个数,并累加其和。Dimi,nAsInteger,mAsSinglei=1DoWhilei=15IfInt(i/3)*3iThenm=m+in=n