计算机基础第8章.ppt_第1页
计算机基础第8章.ppt_第2页
计算机基础第8章.ppt_第3页
计算机基础第8章.ppt_第4页
计算机基础第8章.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第八章 数据库基础,2,基本要求,理解数据库系统的功能与基本组成 了解常见数据库管理系统的特点 了解概念模型及常见数据模型 了解建立关系数据库系统的步骤 了解数据库在管理信息系统中的应用 掌握Access数据库的使用,解决简单应用问题,3,主要内容,8.1 数据库系统概述 8.2 Access 2002数据库的建立和维护 8.3 Access 2002数据库的查询 8.4 Access 2002的窗体、报表,4,8.1数据库系统概述,信息化社会离不开信息系统,信息系统的核心是数据库。 典型案例: 大学计算机基础考试系统 银行取款系统 考试系统数据库,5,8.1.1 常用术语,1.数据库(D

2、ataBase,DB) 长期保存在计算机外存上的、有结构的、可共享的数据集合。 2.数据库管理系统(DataBase Management System,DBMS) 数据库系统中对数据库进行管理的软件系统。数据库的一切操作,如查询、更新、插入、删除以及各种控制,都是通过DBMS进行的。 DBMS是位于用户(或应用程序)和操作系统之间的软件。借助于操作系统实现对数据的存储和管理,使数据能被各种不同的用户所共享,DBMS提供给用户可使用的数据库语言。 3.数据库系统(DataBase System,DBS) 由数据库、数据库管理系统、应用程序、数据库管理员、用户等构成的人机系统。,6,8.1.2

3、数据库技术的产生和发展,数据管理经历了三个发展阶段: 人工管理 文件管理 数据库系统 数据库技术是对传统信息管理模式的大变革: 提高了信息的利用率 缩短了信息的传播过程 实现了信息一体化的管理,7,1. 人工管理阶段,20世纪50年代中期以前: 硬件方面只有卡片、纸带、磁带等存储设备 软件方面没有操作系统,没有进行数据管理的软件 此时的计算机、数据主要以科学计算为目的 原始数据随程序一起输入内存 、运算、退出 数据是面向应用 数据不具有共享性 数据需要由应用程序自己来管理 程序与相应的数据有着很强的依赖性 程序与数据之间不具有独立性,8,人工管理程序举例:,求6个数据之和和最大值,/* 程序1

4、:求6个数之和 */ #include main() int i,s=0; int a6=66,55,75,42,86,77; for(i=0;i6;i+) s=s+ai; printf(“%d”,s); ,/* 程序2:求6个数中的最大值 */#include main() int i,s; int a6=66,55,75,42,86,77; s=a0; for(i=1;i6;i+) if (sai) s=ai; printf(“%d”,s); ,程序和数据放在一起,虽然是处理同一批数据,但是程序之间没有数据共享。,9,2. 文件系统阶段,20世纪60年代中期 硬件方面有了磁带、磁盘等大容量

5、存储设备 软件方面有了操作系统 不仅用于科学计算,还用于数据管理。所有相关数据存放在特定的应用文件中,并由该文件系统进行管理。 问题: 数据共享性差,冗余度大 数据的不一致性 程序与数据之间的独立性不高 数据缺乏统一的管理和控制 安全性、完整性 、并发操作、数据破坏后的恢复 子系统的问题 :大量重复程序、技术难度,10,文件系统程序举例:,求6个数据之和和最大值,/* 程序1:求6个数之和 */ #include main() int i,s=0,a6; FILE * fp; fp=fopen(c:data.dat,rb); fread(a,2,6,fp); /*读数据*/ for(i=0;i

6、6;i+) s=s+ai; printf( %d,s); fclose(fp); /* 关闭文件 */ ,/* 程序2:求6个数中的最大值 */#include main() int i,s= a0 ,a6; FILE * fp; fp=fopen(c:data.dat,rb); fread(a,2,6,fp); s=a0; for(i=0;i6;i+) if (sai) s=ai; printf(%d,s); fclose(fp); ,数据来自同一个文件C: data.dat,11,3. 数据库系统阶段,20世纪60年代后期: 硬件方面出现了大容量且价格低廉的磁盘 软件方面操作系统已开始成熟

7、,为数据技术的发展提供了良好的基础 数据处理的规模越来越大,数据共享的要求越来越强烈 数据库技术诞生的标志: 1968年美国IBM公司推出的层次模型的IMS数据库管理系统 1969年美国数据系统语言研究会下属数据库任务组公布了关于网状模型的DBTG报告 1970年IBM公司研究员E.F.Codd发表论文提出了关系模型,12,数据库系统程序举例:,查询某个数据项的和、最大值 如下语句来实现: SELECT sum(数据) AS 数据和FROM 数据表 SELECT max(数据) AS 最大值FROM 数据表,13,数据库系统的特点:,1采用复杂的结构化的数据模型。 2最低的冗余度 3有较高的数

8、据独立性 用户面对的是简单的逻辑结构操作而不涉及数据具体的物理存储结构, 4安全性 设置用户的使用权限 在数据库被破坏时,系统有能力把数据库恢复到可用状态。 5完整性 系统采用一些完整性检验以确保数据符合某些规则,保证数据库中数据始终是正确的。,14,新型数据库系统:,分布式数据库系统-数据库中一个数据在多个不同的地理位置存储的和处理。 面向对象数据库-可以像对待一般对象一样存储复杂信息与过程。 多媒体数据库-涉及图像、音频、视频处理、三维动画、数据存储与检索等技术。 数据仓库-面向主题的、集成的、稳定的和随时间变化的数据集合,用于决策制定。 工程数据库-存储和管理各种工程设计图形和工程设计文

9、档,并能为工程设计提供各种服务的数据库。 空间数据库-是描述、存储与处理具有位置、形状、大小、分布特征及空间关系等属性的空间数据及其属性数据的数据库系统。,15,8.1.3 数据模型,1. 数据模型的定义-现实世界数据特征的模拟和抽象,数据库中数据的存储方式 。 2. 数据模型的基本要求-较真实的模拟现实世界 容易被人理解 便于在计算机上实现。 3. 数据模型的二个层次-概念模型(信息模型)、基本数据模型。 4. 数据模型的三个要素-数据结构、数据操作、数据的约束条件。 在几十年的数据库发展史中,出现了三种重要的数据模型: 层次模型 用树型结构来表示实体及实体间的联系 网状模型 用网状结构来表

10、示实体及实体间的联系 关系模型 用一组二维表表示实体及实体间的关系,16,1. 层次模型,以树形结构来表示实体及其之间的联系(1:n) 例:早期IBM公司 IMS系统 学校组织结构图,17,2. 网状模型,以网状结构表示实体及其之间的联系(m:n) 例: DBTG系统,IBM的IDMS系统 课程、学生、选课,共同存在问题:难以实现系统扩充,插入或删除数据时,在于涉及到大量链接指针的调整。,18,3. 关系模型,Students表,属性值 (字段值),关系(二维表),记录,属性名 (字段名),关键字 确定一条记录,19,三种关系类型:,基本表 基本表就是关系模型中实际存在的表,如表Student

11、s 查询表 查询表是查询结果表,或查询中生成的临时表 视图 视图是由基本表或其他视图导出的表 视图是为数据查询、处理及数据安全设计的虚表,不对应实际存储的数据。,20,8.1.4 常见的数据库系统及其开发工具,21,8.1.5 新型数据库系统,分布式数据库系统-数据库中一个数据在多个不同的地理位置存储的和处理 面向对象数据库-可以像对待一般对象一样存储复杂信息与过程 多媒体数据库-涉及图像、音频、视频处理、三维动画、数据存储与检索等技术 数据仓库-面向主题的、集成的、稳定的和随时间变化的数据集合,用于决策制定 工程数据库-存储和管理各种工程设计图形和工程设计文档,并能为工程设计提供各种服务的数

12、据库 空间数据库-是描述、存储与处理具有位置、形状、大小、分布特征及空间关系等属性的空间数据及其属性数据的数据库系统,22,8.2 Access 数据库的建立和维护8.2.1 Access 数据库的组成,表 最基本的对象,表及其表之间的关系构成数据库的核心 查询 从表(或查询)中选择一部分数据,形成一个全局性的集合 窗体 用户与数据库交互的界面,窗体的数据源是表或查询 报表 按指定的样式格式化的数据形式 宏 若干个操作的组合 模块 用户用VBA语言编写函数过程或子程序 Web页 向Internet上发布数据,23,8.2.2 Access 数据库的建立,方法:数据库向导(模板)或设计视图 确定

13、表的结构 建立一个空数据库,输入文件名 使用设计器或向导创建表,进入设计视图,输入各个字段的信息 定义主键 输入表的名称保存表,字段数据类型 有10种 字段属性 大小、小数位、格式,24,1. 实例-创建表Students。,Students的结构,25,2. 数据库建立,3.定义表的结构,1.建立空数据库,2.使用设计器或向导,26,8.2.3 Access 数据库的管理与维护,添加,新记录,向表中输入数据 选定基本表,进入数据表视图,输入编辑数据,27,2. 表结构的修改,选定基本表,进入设计视图,修改表结构 打开的表或正在使用的表是不能修改的,要修改必须先将此表关闭 修改字段名称不会影响

14、到字段中所存放的数据,但是会影响到一些相关的部分。如果查询、报表、窗体等对象使用了这个更换名称的字段,那么在这些对象中也要作相应的修改。 关系表中互相关联的字段是无法修改的,如果需要修改,必须先将关联去掉。,28,3. 数据的导出和导入,导出操作 可以将表中数据以另一种文件格式保存在磁盘上 导入操作 是导出操作的逆操作,表的复制、删除、恢复和更名 类似于Windows中对文件或文件夹的操作 注意 在进行这些操作之前,必须关闭有关的表 操作必须在“数据库”窗口中完成,29,8.2.4 Access 2002的表达式,常用运算符,30,表达式,表达式由变量、常量、运算符、函数和圆括号按一定的规则组

15、成,表达式主要应用在以下三个方面 查询的SQL视图:必须输入完整的表达式 查询的设计视图:使用时,表达式最左边的字段名可以缺省 字段的有效性规则:为字段输入一个表达式指定该字段可接受的数据范围 (有效性规则),31,8.2.5 SQL中的数据更新命令,结构化查询语言SQL是操作关系数据库的工业标准语言 在SQL中,常用的语句有两类: 数据查询语句 SELECT 数据更新命令 INSERT、UPDATE、DELETE,INSERT语句用于数据插入 其语法格式为: 插入一条记录 INSERT INTO 表名 (字段1,字段n) VALUES (值1,值n) 插入查询的结果 INSERT INTO

16、表名 (字段1,字段n) VALUES 子查询,32,1. INSERT语句实例,例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,33,2. DELETE语句,例8.5 删除表Students中所有学号为990

17、301的记录 DELETE FROM Students WHERE 学号=“990301” 例8.6 删除表Scores中成绩低于70分的记录 DELETE FROM Scores WHERE 成绩70,DELETE语句用于数据删除 其语法格式为: DELETE FROM 表 WHERE 条件 注意: WHERE子句缺省,则删除表中所有的记录(表还在),34,3. UPDATE语句,例8.7 将表Students中学生王涛的姓名改为王宝球 UPDATE Students SET 姓名=“王宝球” WHERE 姓名=王涛 例8.8 将表Students中助学金低于200的学生加30元 UPDAT

18、E Students SET 助学金=助学金+30 WHERE 助学金200,UPDATE语句用于数据修改 其语法格式为: UPDATE 表 SET 字段1=表达式1, ,字段n=表达式n WHERE 条件 注意: WHERE子句缺省,则修改表中所有的记录,UPDATE语句一次只能对一个表进行修改,35,8.3 数据库的查询 8.3.1 SELECT语句,SELECT语句中用于数据查询 常见的SELECT语句包含4部分,其语法形式为: SELECT ALL|DISTINCT 目标列 FROM 表(或查询) WHERE 条件表达式 GROUP BY 列名1 HAVING 过滤表达式 ORDER

19、BY 列名2 ASC|DESC,不可缺少,可缺省,不出现重复的记录,36,根据WHERE子句中的表达式,从指定的表或视图中找出满足条件的记录,按目标列显示数据 GROUP BY子句按列名1的值进行分组,每一组产生一条记录,HAVING短语对组进行输出过滤 ORDER BY子句按列名2 对查询结果的值进行排序,37,1.SQL合计函数,如果没有ORDER BY子句,合计函数对整个表进行统计,产生一条记录,否则按分组统计,一组产生一条记录,38,2.SELECT语句示例,例8.9 查询所用学生的基本情况 SELECT 学号,姓名,性别,党员,专业,出生年月,助学金,照片 FROM Students

20、 例8.10 查询学生人数、最低、最高助学金和平均助学金 SELECT Count(*) AS 人数,Min(助学金) AS 最低助学金, Max(助学金) AS 最高助学金,Avg(助学金) AS 平均助学金 FROM Students,可改为Count(学号),用别名命名输出列,本例产生一条记录,39,例8.12 查询学生的人数和平均年龄 SELECT Count(*) AS 人数,Avg(Year(Date()-Year(出生年月) AS 平均年龄 FROM Students,例8.11 查询所用的专业,查询结果中不出现重复的记录。 SELECT DISTINCT 专业 FROM Stu

21、dents,不出现重复,系统日期,Year函数得到年份,40,例8.14 显示所有非计算机专业学生的学号、姓名和年龄 SELECT 学号, 姓名, Year(Date()-Year(出生年月) AS 年龄 FROM Students WHERE 专业计算机,WHERE子句示例,例8.13 查询计算机专业学生的学号、姓名和专业 SELECT 学号,姓名,专业 FROM Students WHERE 专业=计算机,查询条件,例8.15 查询1981年(包括1981年)以前出生的女生姓名和出生年月。 SELECT 姓名,出生年月 ROM Students WHERE 出生年月 #1/1/1982#

22、AND 性别=女,可用 #MM/DD/YYYY# 的形式表示日期,41,例8.17查询选修了2门(包括2门)以上课程的学生的学号和课程数 SELECT 学号, Count(*) AS 课程数 FROM Scores GROUP BY 学号 HAVING Count(*)=2,ORDER BY子句示例,例8.16 查询所有党员学生的学号和姓名,并按助学金升序排列 SELECT 学号, 姓名FROM Students WHERE 党员=True ORDER BY 助学金,逻辑值,按学号分组,2门以上,例8.18查询所有课程的成绩在70分以上的学生的学号 SELECT 学号 FROM Scores

23、GROUP BY 学号 HAVING Min(成绩)=70,42,3.SELECT语句-连接查询,例8.20 查询所有学生的学号、姓名、课程和成绩 SELECT Students.学号,Students.姓名,Scores.课程, Scores.成绩 FROM Students,Scores WHERE Students.学号 = Scores.学号,两个表,连接条件,使用内连接格式 SELECT Students.学号,Students.姓名,Scores.课程,Scores.成绩 FROM Students INNER JOIN Scores ON Students.学号=Scores.学号,连接条件,表1,连接命令,表2,43,SELECT语句-嵌套查询,在SQL中,将一个SELECT语句查询块嵌套在另一个SELECT语句的WHERE子句或HAVING子句中称为嵌套查询,44,嵌套查询示例,例8.23 查询与“邓倩

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论