《大学计算机基础ppt课件(第八章).ppt》由会员分享,可在线阅读,更多相关《大学计算机基础ppt课件(第八章).ppt(56页珍藏版)》请在三一办公上搜索。
1、1,大学计算机基础,第八章 数据库基础,第四版,8.1 数据库系统概述8.2 数据库的建立和维护 8.3 数据库查询 8.4 窗体、报表,数据库基础,3,典型案例,无纸化通用考试系统大学计算机基础isual Basic程序设计 C/C+程序设计 软件技术基础,应用程序,数据库管理系统,VB,VC+,PowerBuilder,Delphi,ACCESS,SQL SERVER,ORACLE,FOXPRO,SQL命令,数据库引挚,数据库,信息化社会离不开信息系统信息系统的核心和基础是数据库,4,计算机基础教育网站http:/,IE,HTM、ASP,客户机,服务器,SQL命令,数据库,发出请求,响应请
2、求,数据,8.1.1 常用术语8.1.2 数据库技术的产生和发展8.1.3 数据模型8.1.4 常见的数据库系统及其开发工具8.1.5 典型的新型数据库系统,8.1 数据库系概述,6,8.1.1 常用术语,1. 数据库(DataBase,DB) 长期保存在计算机外存上的、有结构的、可共享的数据集合。2. 数据库管理系统(DataBase Management System,DBMS) 对数据库进行管理的软件系统。数据库的一切操作,如查询、更新、插入、删除以及各种控制,都是通过DBMS进行的。 DBMS是位于用户(或应用程序)和操作系统之间的软件。借助于操作系统实现对数据的存储和管理,使数据能被
3、各种不同的用户所共享,DBMS提供给用户可使用的数据库语言。3. 数据库系统(DataBase System,DBS) 由DB、DBMS、应用程序、数据库管理员、用户等构成的人机系统。,用户,应用程序,DBMS,操作系统,数据库 DB,数据库系统,7,8.1.2 数据库技术的产生和发展,数据管理技术经历了三个发展阶段人工管理阶段文件管理阶段数据库系统阶段,8,.人工管理阶段,时间:20世纪50年代中期以前 硬件:只有卡片、纸带、磁带等存储设备软件:没有操作系统,没有进行数据管理的软件应用:以科学计算为目的特点: 程序和数据放在一起数据不能共享 特征图,9,人工管理阶段数据管理示例,例:两个C语
4、言程序,分别求10个数据之和和最大值。 程序与数据放在一起,数据没有能够共享,10,.文件系统阶段,时间:20世纪60年代中期硬件:磁带、磁盘等大容量存储设备软件:有了操作系统应用:不仅用于科学计算,还用于数据管理特点: 程序与数据分离数据有一定的独立性实现了以文件为单位的数据共享 特征图,数据文件,文件管理系统,数据文件n,应用程序,应用程序,应用程序n,数据文件2,11,文件系统阶段数据管理示例,上例用文件实现,12,3.数据库系统阶段,时间:20世纪60年代后期硬件:出现了大容量且价格低廉的磁盘软件:有了数据库管理系统DBMS应用:各个方面特点: 数据结构化 数据共享性高,冗余小 数据独
5、立性高 数据由DBMS统一管理控制为用户提供了友好的接口特征图,史料: 数据库技术发展的分水岭 书写历史的甲骨文,13,数据库系统阶段数据管理示例,上例用数据库实现,求和: SELECT Max(Num) FROM Data求最大值:SELECT Avg(Num) FROM Data,14,4. 数据库系统的特点,(1) 采用一定的数据模型,最大限度地减少数据的冗余 (2) 最低的冗余度 (3) 有较高的数据独立性 用户面对的是简单的逻辑结构操作而不涉及数据具体的 物理存储结构 (4) 安全性 设置用户的使用权限 在数据库被破坏时,系统可把数据库恢复到可用状态。 (5) 完整性 一些完整性检验
6、以确保数据符合某些规则,保证数据库中 数据始终是正确的。,15,8.1.3 数据模型,1. 数据模型的定义 现实世界数据特征的模拟和抽象,数据库中数据的存储方式 2. 数据模型的基本要求 较真实的模拟现实世界 容易被人理解 便于在计算机上实现3. 数据模型的二个层次 概念模型(信息模型) 基本数据模型4. 数据模型的三个要素数据结构 数据操作 数据的约束条件 5. 三种重要的数据模型层次模型、网状模型、关系模型,16,层次型 以树形结构来表示实体及其之间的联系(1:n) 1968年美国IBM公司推出的层次模型的IMS数据库管理系统 例:学校组织结构图,校部,学院A,系A,学院B,系B,系C,系
7、D,系E,17,网状型 以网状结构表示实体及其之间的联系(m:n) 1969年美国数据系统语言研究会下属数据库任务组公布了关于网状模型的DBTG报告 例:城市交通图,共同存在问题: 难以实现系统扩充,插入或删除数据 时,在于涉及到大量链接指针的调整。,18,关系模型,Students表,属性名(字段名),属性值(字段值),记录,关键字唯一确定一条记录,关系(二维表),值域:男,女,一组二维表表示实体及其之间的联系,建立在严格的数学概念的基础上. 1970年IBM公司研究员E.F.Codd发表论文提出了关系模型,19,术语 关系:一个关系一张二维表记录:表中的一行属性(字段):表中的一列关键字:
8、某个属性可以惟一地确定记录值域:属性的取值范围,20,特点:关系必须规范化:表中不能再包含表。 模型概念单一: 数据本身自然地反映它们之间的联系, 无需另设指针。 关系运算:集合运算(并、差、交等) 、关系运算(选择、投影、联接等),结果还是关系。,常见关系DBMS: Microsoft Access、Visual FoxPro、Lotus Approach等; 在大型机上的数据库软件有Oracle、SQL Server、Sybase和DB2,21,8.1.4 常见的数据库系统及其开发工具,22,8.1.5 新型数据库系统,分布式数据库系统数据库中一个数据在多个不同的地理位置存储的和处理面向对
9、象数据库可以像对待一般对象一样存储复杂信息与过程多媒体数据库涉及图像、音频、视频处理、三维动画、数据存储与检索等技术数据仓库面向主题的、集成的、稳定的和随时间变化的数据集合,用于决策制定工程数据库存储和管理各种工程设计图形和工程设计文档,并能为工程设计提供各种服务的数据库空间数据库是描述、存储与处理具有位置、形状、大小、分布特征及空间关系等属性的空间数据及其属性数据的数据库系统,23,8.2 数据库的建立,一、 Access 概述二、 Access 数据库的组成三、 Access 数据库的建立,24,一、Access概述,是Office的组件之一具有对数据进行存储、管理、处理等常规功能直观的可
10、视化操作操作工具和向导丰富的函数功能,25,实例 创建表Students。,Students的结构,26,二、 Access 数据库的组成,表: 最基本的对象,表及其表之间 的关系构成数据库的核心查询: 从表(或查询)中选择一部分数 据,形成一个全局性的集合窗体: 用户与数据库交互的界面,窗体 的数据源是表或查询报表: 按指定的样式格式化的数据形式宏: 若干个操作的组合模块: 用户用VB语言编写应用程序Web页: 向Internet上发布数据这些不同类型的对象集合构成了一个数据库文件,以.mdb存储在盘上,27,三、 Access 数据库的建立,字段数据类型有10种 字段属性 大小、小数位、格
11、式,确定表的结构 建立一个空数据库,输入文件名 使用设计器或向导创建表,进入设计视图, 输入各个字段的信息 建立表的索引 定义主键 输入表的名称保存表,主要方法:数据库向导(模板)或设计视图,一般用后者,28,1.Access 数据库的建立,3.定义表的结构,1。建立空数据库,2.使用设计器或向导,29,2. 数据输入,选定基本表,进入数据表视图,输入编辑数据,添加,新记录,30,注意:打开的表或正在使用的表是不能修改的修改字段名称不会影响到字段中所存放的数据,但是会影响到一些相关的部分。如果查询、报表、窗体等对象使用了这个更换名称的字段,那么在这些对象中也要作相应的修改。关系表中互相关联的字
12、段是无法修改的,如果需要修改,必须先将关联去掉,选定基本表,进入设计视图,修改表结构,3.表结构的修改,31,4.数据的导出和导入,导出操作 可以将表中数据以另一种文件格式保存在磁盘上导入操作 是导出操作的逆操作,5.表的复制、删除、恢复和更名类似于Windows中对文件或文件夹的操作注意 在进行这些操作之前,必须关闭有关的表 操作必须在“数据库”窗口中完成,32,8.3 数据库查询,一、SQL语言概述二、 数据更新语句:INSERT INTO, DELETE, UPDATE三、数据查询语句:SELECT四、多表查询,33,一、 SQL语言,什么是SQL语言 Structure Query L
13、anguage即结构化查询语言,1974年推出,已成为DBMS的国际标准语言,在众多DBMS系统中使用。,特点 使用方便、功能丰富、语言简单易学。,工作方式 独立语言: 直接输入SQL命令与机器交互,实现对数据库操作. 宿主语言: 将SQL命令嵌入某高级语言中实现对数据库操作.,34,SQL语言,进入SQL视图在“查询”对象中选择“在设计视图中创建查询”,建立空查询表。在“视图|SQL视图”就可进入其对话框输入相应的命令。,主要功能和动词:,35,二、数据更新-INSERT语句,INSERT语句用于数据插入 其语法格式为: 插入一条记录 INSERT INTO 表名 (字段1,字段n) VAL
14、UES (值1,值n) 插入查询的结果 INSERT INTO 表名 (字段1,字段n) VALUES 子查询,36,例8.3 向表Students中插入一条记录INSERT INTO Students (学号, 姓名, 性别, 党员, 专业, 出生年月, 助学金) VALUES (“990301”, 杨国强, 男, TRUE, 化学, #12/28/80#, 220)注意:字符型常量用 单引号 或 双引号 括起来逻辑型字段的值是 True/False、Yes/No 或 On/Off日期的表示形式为 # MM/DD/YY# 或 #MM/DD/YYYY#,37,数据更新-DELETE语句,例8.
15、5 删除表Students中所有学号为990301的记录DELETE FROM Students WHERE 学号=“990301”例8.6 删除表Scores中成绩低于70分的记录DELETE FROM Scores WHERE 成绩70,DELETE语句用于数据删除 其语法格式为:DELETE FROM 表 WHERE 条件注意: WHERE子句缺省,则删除表中所有的记录(表还在),38,数据更新-UPDATE语句,例8.7 将表Students中学生王涛的姓名改为王宝球UPDATE Students SET 姓名=“王宝球” WHERE 姓名=王涛例8.8 将表Students中助学金低
16、于200的学生加30元UPDATE Students SET 助学金=助学金+30 WHERE 助学金200,UPDATE语句用于数据修改 其语法格式为:UPDATE 表 SET 字段1=表达式1, ,字段n=表达式n WHERE 条件 注意: WHERE子句缺省,则修改表中所有的记录,UPDATE语句一次只能对一个表进行修改,39,三、数据查询 SELECT语句,查询 根据给定的条件,从一个或多个表中获取所需的数据,形成一张“虚表”(表中的记录是与数据库表链接产生的)。,40,SELECT语句,语法形式为:SELECT ALL|DISTINCT 目标列 FROM 表(或查询) WHERE 条
17、件表达式 GROUP BY 列名1 HAVING 过滤表达式 ORDER BY 列名2 ASC|DESC,不可缺少,可缺省,功能 根据WHERE子句中的表达式,从指定的表或视图中找出满足条件的记录,按目标列显示数据 GROUP BY子句按列名1的值进行分组,每一组产生一条记录,HAVING 短语对组进行输出过滤 ORDER BY子句按列名2 对查询结果的值进行排序,不能出现重复的记录,41,SELECT语句示例,例8.9 查询所用学生的基本情况SELECT 学号,姓名,性别,党员,专业,出生年月,助学金,照片 FROM Students例8.10 查询学生人数、最低、最高助学金和平均助学金SE
18、LECT Count(*) AS 人数,Min(助学金) AS 最低助学金, Max(助学金) AS 最高助学金,Avg(助学金) AS 平均助学金 FROM Students,可改为Count(学号),用别名命名输出列,本例产生一条记录,42,例8.12 查询学生的人数和平均年龄SELECT Count(*) AS 人数,Avg(Year(Date()-Year(出生年月) AS 平均年龄 FROM Students,例8.11 查询所用的专业,查询结果中不出现重复的记录。SELECT DISTINCT 专业 FROM Students,不出现重复,系统日期,Year函数得到年份,43,例8
19、.14 显示所有非计算机专业学生的学号、姓名和年龄SELECT 学号, 姓名, Year(Date()-Year(出生年月) AS 年龄FROM Students WHERE 专业计算机,()WHERE子句示例,例8.13 查询计算机专业学生的学号、姓名和专业SELECT 学号,姓名,专业 FROM Students WHERE 专业=计算机,查询条件,例8.15 查询1981年(包括1981年)以前出生的女生姓名和出生年月。SELECT 姓名,出生年月 ROM StudentsWHERE 出生年月 #1/1/1982# AND 性别=女,可用 #MM/DD/YYYY# 的形式表示日期,44,
20、例8.17查询选修了2门(包括2门)以上课程的学生的学号和课程数SELECT 学号, Count(*) AS 课程数 FROM ScoresGROUP BY 学号 HAVING Count(*)=2,()ORDER BY,GROUP BY子句示例,例8.16 查询所有党员学生的学号和姓名,并按助学金升序排列SELECT 学号, 姓名 FROM Students WHERE 党员=TrueORDER BY 助学金,逻辑值,按学号分组,2门以上,例8.18查询所有课程的成绩在70分以上的学生的学号SELECT 学号 FROM Scores GROUP BY 学号HAVING Min(成绩)=70,
21、45,问 查询姓“张”的学生?Like 运算符,46,Access 2002的表达式,常用运算符,通配符 :* ? - 任意字符串 单个字符 一定范围的字符用于 Like Betwwen 运算符中 例 姓名 Like “? 明*”,47,练习,SELECT 学号, COUNT(课程) AS 课程数, AVG(成绩) AS 平均成绩 FROM scores GROUP BY 学号 ORDER BY 学号 DESC;,问 查询选修了2门(包括2门)以上课程、最低成绩在6分以上的学生的学号、课程数和最低分?SELECT 学号, Min(成绩) AS 成绩之Min, Count(课程) AS 课程之C
22、ount FROM Scores GROUP BY Scores.学号HAVING (Min(成绩)=60) AND (Count(课程)2);,例 对学生成绩表,统计每人的平均分和课程数,按学号递减排序,48,学生成绩表,学生基本情况表,49,() SELECT语句-连接查询,例8.20 查询所有学生的学号、姓名、课程和成绩 SELECT Students.学号,Students.姓名,Scores.课程, Scores.成绩 FROM Students,Scores WHERE Students.学号 = Scores.学号,两个表,连接条件,使用内连接格式SELECT Students.
23、学号,Students.姓名,Scores.课程,Scores.成绩FROM Students INNER JOIN Scores ON Students.学号=Scores.学号,连接条件,表1,连接命令,表2,50,()嵌套查询,在SQL中,将一个SELECT语句查询块嵌套在另一个SELECT语句的WHERE子句或HAVING子句中称为嵌套查询,51,嵌套查询示例,例8.26 查询与“邓倩梅”在同一个专业的学生的学号和姓名 SELECT Students.学号, Students.姓名FROM StudentsWHERE 专业 in (SELECT Students.专业 FROM Stu
24、dents WHERE Students.姓名=邓倩梅),与查询结果同专业的学生,查询邓倩梅的专业,52,(5) 使用向导的查询,例8.27 使用向导查询所用学生的基本情况,1.进入向导选定字段,2.选择明细方式,3.输入查询的名称,4.查询结果,53,(6) 在设计视图中创建查询,例8.28 查询学生人数、最低助学金、最高助学金和平均助学金,3.输入或选定查询的字段,54,8.4 窗体、报表8.4.1 创建窗体,例8.29 创建下图所示的窗体Scores1,创建窗体的方法:使用向导创建窗体 使用设计视图创建窗体,打开Student.mdb数据库 选择使用向导创建窗体 选定表Scores及所有
25、字段 选定窗体布局和窗体样式 输入窗体名称:Scores1,55,使用设计视图创建窗体,例8.30 创建下图所示的窗体Scores2,数据分布在两个表中,先建立下列查询SELECT Students.学号, First(Students.姓名) AS 姓名, Avg(Scores.成绩) AS 平均成绩 FROM Students,Scores GROUP BY Students.学号,4.建立查询,56,8.4 .2 创建报表,例8.31 创建下图所示的报表Scores1,打开Student.mdb数据库 选择使用向导创建报表 选定表Scores及所有字段 决定要否分组(本例不分组) 选择排序方式(本例按学号) 选择表格布局方式 选择报表样式(本例为组织) 输入报表名称:Scores1,