《ACCESS数据库.pdf》由会员分享,可在线阅读,更多相关《ACCESS数据库.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ACCESS 数据库 ACCESS 数据库 后缀名:.mdb 表 A B C D E F 字段 字段类型:自动编号、文本、数字、货币、备注、日期、是否(TRUE/FALSE)SQL 语句 常用内部函数和合计函数 内部函数:DATE()返回日期 YEAR(D)返回年份 组合:YEAR(DATE()合计函数:AVG(列)计算列的数据的平均值 COUNT(列)计算列的数据个数 特殊:COUNT(*)计算表的行数 SUM(列)计算列的和 MAX(列)计算列的最大值 MIN(列)计算列的最小值 FIRST(列)分组查询时选择同一组中的数据的第一条(最后一条)作为输出数据 LAST(列)Students
2、学号 文本 姓名 文本 性别 文本 党员 是否 专业 文本 出生年月 日期 助学金 数字 Scores 学号 文本 课程 文本 成绩 数字 第一节:插入、删除、更新语句 一、INSERT 语句 作用:插入语句 格式:INSERT INTO 表名(字段 1),.(字段 n)VALUES (数据 1,数据 n)解释:向表(指定的字段中)插入指定的数据 注意:所有文本类型的字段数据需要加“日期格式:2011/11/12 表达为:#11/12/2011#数字类型不需要加引号 自动编号类型不能用 SQL 语句插入数据 例:向表 students 插入记录(990301 杨国强 男 党员 化学 1980.
3、12.28 220)INSERT INTO Students VALUES(“990301”,”杨国强”,”男”,True,”化学”,#12/28/1980#,220)二、DELETE 语句 作用:删除数据 格式:DELETE FROM 表 WHERE 条件 解释:从表中删除数据(如果有 WHERE 条件,则删除满足该条件句的数据)注意:如果删除整个表的数据,表仍存在。例:删除 scores 中成绩低于 60 的记录 DELETE FROM scores WHERE 成绩=60 and 成绩=70 三、UPDATE 语句 作用:更新数据库中的数据 格式:UPDATE 表 SET 字段 1=表达
4、式 1,字段 n=表达式 n WHERE 解释:分别对每个字段执行相应的表达式来更新数据 例:将 students 中助学金低于 200 的学生的助学金加 30 UPDATE students set 助学金=助学金+30 WHERE 助学金200 第二节:查询语句-SELECT 语句 作用:查询数据 SELECT all/distinct 列 from 表 基本语句,选择字段 WHERE 选择记录条件 GROUP BY 列名 HAVING 过滤表达式 分组(HAVING 选择分组数据条件)ORDER BY 列名 asc/desc 排序 一、选择字段 基本部分,作用是查询所需要的列 All/d
5、istinct:ALL 显示所有数据 Distinct 显示不重复的数据 注意:目标列格式:列名 as 别名 目标列可以使用合计函数 例:查询所有学生的学号,姓名,性别和专业 SELECT 学号,姓名,性别,专业 from Students 例:查询学生人数、最低助学金、最高助学金、平均助学金 SELECT COUNT(*)AS 学生人数,MIN(助学金)AS 最低助学金,MAX(助学金)AS 最高助学金,AVG(助学金)AS 平均助学金 FROM Students 例:查询学生的人数和平均年龄 SELECT COUNT(*)AS 学生人数,AVG(YEAR(Date()-YEAR(出生年月)
6、AS 平均年龄 FROM Students 二、选择记录 WHERE 子句作用:一是选择记录,二是建立多个表之间的连接。例:查询所有非计算机专业学生的学号,姓名和年龄 SELECT 学号,姓名,Year(Date()-Year(出生年月)AS 年龄 FROM Students WHERE 专业 “计算机”例:查询 1981 年(包括 1981 年)以前出生的女生姓名和出生年月 SELECT 姓名,出生年月 FROM Students WHERE 出生年月75 GROUP BY 学号 HAVING Count(*)=2 五、连接查询 查询多个表 例:查询所有学生的学号,姓名,课程和成绩 SELE
7、CT Students.学号,Students.姓名,Scores.课程,Scores.成绩 FROM Students,Scores WHERE Students.学号=Scores.学号 可改为:SELECT Students.学号,Students.姓名,Scores.课程,Scores.成绩 FROM Students INNER JOIN Scores ON Students.学号=Scores.学号 例:查询选修了游泳课程的学生的学号,姓名和成绩 SELECT Students.学号,Students.姓名,Scores.成绩 FROM Students INNER JOIN Sc
8、ores ON Students.学号=Scores.学号 WHERE Scores.课程=”游泳”例:查询每个学生的学号,姓名和平均成绩 SELECT Students.学号,FIRST(Students.姓名)AS 姓名,AVG(Scores.成绩)AS 平均成绩 FROM Students INNER JOIN Scores ON Students.学号=Scores.学号 GROUP BY Students.学号 练习:Teachers:教师号 文本 姓名 文本 性别 文本 年龄 数字 参加工作年月 日期 党员 是否 应发工资 数字 扣除工资 数字 Students 学号 文本 姓名
9、文本 教师号 文本 成绩 数字 第一题:在表 Teachers 中插入一条新的记录:600001 杨梦 女 64 1966/04/22 YES 1660 210 第二题:在表 Teachers 中删除年龄小于 36 且性别为“女”的记录。第三题:用对表中工龄超过 25 年的职工加 20%元工资。Update teachers set“yingfagongzi=yingfagongzi*1.2 as gongzi where year(date()-year(canjiagongzuonianyue)25 第四题:查询 1990 年之前(包括 1990 年)参加工作的所有教师的教师号、姓名和实发
10、工资,查询结果按实发工资从高到低排序。select jiaoshihao,xingming,yingfagongzi-kouchugongzi as shifagongzi from teachers where year(gongzuonianyue)1990 group by yingfagongzi-kouchugongzi 第五题:查询教师的人数和平均实发工资。请参阅下图(仅供参考)。Select count(*)as renshu,avg(yingfa-kouchu)as pingjunshifagongzi from teachers 第六题:查询男女职工的最低工资、最高工资和平均
11、工资(工资是指实发工资)。Select mxingbie,in(yingfa-kouchu)as zuidigongzi,max(yingfa-kouchu)as zuigaogongzi,avg(yingfa-kouchu)as pingjungongzi from teahers group by xingbie 第七题:分组查询党员和非党员教师所教学生的人数以及平均成绩,查询结果按平均成绩从大到小排列。Select avg(students.chengji)as pingjunchengji,teachers.dangyuan,students.count(students.xuehao
12、)from teachers inner join students on teachers.jiaoshihao=students.jiaoshihao group by teachers.dangyuan order by avg(students.fenshu)desc 第八题:查询党员和非党员的人数和平均年龄。Select dangyuan,count(*),avg(nianling)as pingjunnianling from teachers group by dangyuan 第九题:请查询每一个学生的学号、姓名,以及任教教师的教师号、姓名和性别,查询结果按学号从大到小排序。S
13、elect stu.xuehao,stu.xingming,teachers.jiaoshihao,teachers.as xingming,tea.xingbie from teachers inner join students on students.jiaoshihao=teachers.jiaoshihao order by students.xuehao 第十题:查询每一个教师的教师号、姓名以及所教学生的最低分、最高分和平均分。select teachers.jiaoshihao as jiaoshihao.tea.xingming as xingming,stu.min(chen
14、gji)as zuidifen,stu.max(chengji)as zuigaofen,stu.avg(chengji)as pingjunfen from students inner join teachers on tea.jiaoshihao=stu.jiaoshihao 答案:1、INSERT INTO Teachers VALUES(600001,杨梦,女,64,#4/22/1966#,YES,1660,210);2、DELETE*FROM Teachers WHERE 年龄25;4、SELECT 教师号,姓名,应发工资-扣除工资 AS 实发工资 FROM Teachers WH
15、ERE 参加工作年月#1/1/1991#year(参加工作年月)1990 ORDER BY 应发工资-扣除工资 DESC;5、SELECT Count(*)AS 教师人数,AVG(应发工资-扣除工资)AS 实发工资 FROM Teachers;6、SELECT 性别,Min(应发工资-扣除工资)AS 最低工资,Max(应发工资-扣除工资)AS 最高工资,AVG(应发工资-扣除工资)AS 平均工资 FROM Teachers GROUP BY 性别;7、SELECT Teachers.党员,Count(Students.学号)AS 学生人数,AVG(Students.分数)AS 平均成绩 FRO
16、M Teachers INNER JOIN Students ON Teachers.教师号=Students.教师号 GROUP BY Teachers.党员 ORDER BY AVG(Students.分数)DESC;8、SELECT 党员,Count(*)AS 教师人数,AVG(年龄)AS 平均年龄 FROM Teachers GROUP BY 党员;9、SELECT Students.学号,Students.姓名 AS 学生姓名,Teachers.教师号,Teachers.姓名 AS 教师姓名,Teachers.性别 FROM Students INNER JOIN Teachers ON Students.教师号=Teachers.教师号 ORDER BY Students.学号 DESC;10、SELECT Teachers.教师号,First(Teachers.姓名)AS 姓名,Min(Students.分数)AS 最低分,Max(Students.分数)AS 最高分,Avg(Students.分数)AS 平均分 FROM Students INNER JOIN Teachers ON Students.教师号=Teachers.教师号 GROUP BY Teachers.教师号;