资源描述:
《第3章 数据库基础.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
13.1数据库系统概述3.2数据库的建立和维护3.3数据库查询第三章数据库基本原理
3.1.1数据库技术的产生和发展数据管理技术经历了三个发展阶段人工管理阶段文件管理阶段数据库系统阶段2
1.人工管理阶段时间:20世纪50年代中期以前硬件:只有卡片、纸带、磁带等存储设备软件:没有操作系统,没有进行数据管理的软件应用:以科学计算为目的特点:程序和数据放在一起数据不能共享特征图3程序1数据1程序2数据2程序n数据n……
人工管理阶段数据管理示例例:两个C语言程序,分别求10个数据之和和最大值4问题:1.程序与数据放在一起,数据没有能够共享2.修改数据必须修改程序
2.文件系统阶段5时间:20世纪60年代中期硬件:磁带、磁盘等大容量存储设备软件:有了操作系统应用:不仅用于科学计算,还用于数据管理.特点:程序与数据分离数据有一定的独立性以文件为单位的数据共享特征图:数据文件1…文件管理系统数据文件n应用程序1应用程序2应用程序n…数据文件2
文件系统阶段数据管理示例上例用文件实现6问题:1.管理数据编程工作量大2.数据的不一致性和独立性
3.数据库系统阶段7时间:20世纪60年代后期硬件:出现了大容量且价格低廉的磁盘软件:有了数据库管理系统DBMS应用:各个方面.特点:数据由DBMS统一管理控制为用户提供了友好的接口
数据库系统阶段数据管理示例解决了数据的独立性问题,实现数据的统一管理,达到数据共享的目的8求和:SELECTSum(Num)FROMData求最大值:SELECTMax(Num)FROMData
3.1.2常用术语91.数据库(DataBase,DB)长期保存在计算机外存上的、有结构的、可共享的数据集合。2.数据库管理系统(DataBaseManagementSystem,DBMS)对数据库进行管理的软件系统。如查询、更新、插入、删除以及各种控制,都是通过DBMS进行的。DBMS是位于用户(或应用程序)和操作系统之间的软件。借助于操作系统实现对数据的存储和管理,使数据能被各种不同的用户所共享,DBMS提供给用户可使用的数据库语言。3.应用程序利用各种开发工具开发的、满足特定应用环境的数据库应用程序。
104.数据库系统相关人员数据库管理员应用程序开发人员最终用户5.数据库系统(DataBaseSystem,DBS)由硬件系统、数据库管理系统、数据库、数据库应用程序、数据库系统相关人员等构成的人-机系统。数据库产品(一整套数据库应用解决方案)桌面型数据库网络数据库MSAccessSQLServerMySqlOracle用户应用程序DBMS操作系统数据库DB数据库系统DBS
数据库系统的特点11(1)采用一定的数据模型,最大限度地减少数据的冗余(2)有较高的数据独立性用户面对的是简单的逻辑结构操作而不涉及数据具体的物理存储结构(3)安全性设置用户的使用权限在数据库被破坏时,系统可把数据库恢复到可用状态。(4)完整性一些完整性检验以确保数据符合某些规则,保证数据库中数据始终是正确的。特点
3.1.3关系模型属性名(字段名)属性值(字段值)记录关键字唯一确定一条记录关系(二维表)值域:{男,女}关系模型将数据组织成表格的形式,这种表格在数学上称为关系。下面是一个学生表:
多个表以及它们之间的联系,就构成了数据库,例如:“教学管理”数据库
关系数据结构包括以下一些主要概念和定义关系:一个关系一张二维表关系模式:Students(学号,姓名,性别,党员,专业,出生年月,助学金,照片)Scores(学号,课程,成绩)记录:表中的一行属性(字段):表中的一列关键字:某个属性可以惟一地确定记录主键:在实际的应用中只能选择一个,一般为关键字值域:属性的取值范围14
注意:关系是二维表格,但这个二维表格是有限制的:1)表中的每一属性必须是基本数据类型,结构或数组就不能作为属性的类型。2)表中的每一列的所有值必须是同类型、同语义的。3)属性的值只能是域中的值。4)表中的每一列都必须有唯一的名字,但不同的属性可以出自相同的域。列在表中的顺序可以任意交换。5)表中不允许有重复的行,行在表中的顺序无关紧要。
3.2数据库的建立和维护Access的特点是Office的组件之一具有对数据进行存储、管理、处理等常规功能直观的可视化操作操作工具和向导丰富的函数功能16
3.2.1Access数据库对象Access数据库对象分别是:表、查询、窗体、报表、页、宏、模块。(1)表表(Table)是数据库中用来存放数据的对象,是Access数据库的核心。其他数据库对象都是以表对象作为基础的。每一个表都有自己的表名和结构,表由字段和记录组成。字段是表中的列,每个字段代表一条信息在某一方面的属性,字段的基本属性有:字段名称、数据类型、字段大小、默认值等。记录是数据表中的行,由一个或多个字段的值组成,一条记录是一条完整的信息,显示一个对象的所有属性。(2)查询查询(Query)是数据库的核心操作,是用来检索和查看数据对象,根据指定条件从数据表或其他查询中筛选出符合条件的记录。
(3)窗体窗体(From)是向用户提供一个交互图形界面的一种对象,是用户与Access应用程序之间的主要接口。(4)报表报表(Report)用来以格式化方式显示并打印数据。利用报表可以整理和计算基本表中的数据,有选择的显示指定信息。(5)宏宏(Macro)是由一个或多个操作组成的集合,如打开窗体、打印报表,完成大量的重复性工作,快速实现数据库的简单操作,可以单击某个命令按钮时运行宏。(6)模块模块(Module)是VisualBasic编写的过程或函数。有了模块对象的支持,软件设计人员就能更灵活、更方便地开发一个较为复杂的管理信息系统。
3.2.2Access数据库的基本操作1.Access数据库文件Access数据库文件的扩展名为“accdb”,除了页对象之外的其他数据库对象都是该数据库文件中的一项内容,不能作为单独的文件保存在磁盘上。2.创建数据库与打开数据库(1)创建数据库例3.1建一个名为“教学管理”的空数据库。所谓“空”的数据库是指,只有数据库文件名而数据库对象中没有任何数据的数据库。(2)打开数据库要使用数据库,必须先打开数据库。3.保存数据库在Access中,数据库文件的保存与其他Office文件保存的含义不一样。Access是对数据库中各个对象分别保存的。4.关闭数据库与退出Access(1)关闭数据库(2)退出Access注意:Access通常一次只能打开一个数据库文件。
3.2.3表的创建与设计表的建立包括两部分,一部分是表的结构建立,另一部分是表的数据建立。1、建立表结构使用表设计器创建数据表,数据表由表结构和表记录两部分组成。表结构是表的框架,定义表结构就是定义二维表的每列的字段名称、数据类型、字段属性等各项参数。
Access2010为字段提供了十一种数据类型:数据类型用途字符长度文本字母和数字0~255个字符备注字母和数字0~64000个字符数字数值1、2、4或8字节日期/时间日期/时间8字节货币数值8字节自动编号自动数字4字节是/否是/否、真/假1位OLE对象链接或嵌入对象可达1G超链接Web地址、邮件地址可达64000字节查阅向导来自其他表或列表的值通常为4字节附件图片、图像、二进制文件、Office文件
字段属性是字段特征值的集合,分为常规属性和查阅属性2种,用来控制字段的操作方式和显示方式。相同字段类型有不同的属性集合,如图所示“性别”字段属性。
字段大小:设置文本字段的大小或数字字段存储的类型。格式:选择或自定义各种数据的格式。小数位数:对数字或货币字段设置小数位数。输入掩码:使输入的数据有统一的模式,可确保数据输入表中时具有正确的格式。标题:在“数据表”视图或窗体中,可作为该字段的标签。默认值:当新建记录时,默认值自动作为该字段的值。有效性规则:设置输入数据的条件。注意,有效性规则的设置不能与默认值冲突。例如:“性别”字段只能输入“男”或“女”,用:"男"or"女"。例如:“出生日期”字段范围是1992年,用:>=#1992-1-1#and<=#1992-12-31#有效性文本:输入的数据不满足“有效性规则”中设置的条件,显示此文本信息。必填字段:选择“是”表示该字段必须有值。索引:确定该字段是否作为索引字段。索引不改变文件中记录的物理顺序,而是按某个索引关键字来建立记录的逻辑顺序。
2.定义主键在Access中,主关键字称为主键,其值能够唯一地标识表中的一条记录。①主键的作用提高查询和排序的速度。②主键的特点一个表只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。③定义主键的方法在表设计视图中,选择要定义主键的字段,然后单击“主键”命令;或右单击,从快捷菜单中选择“主键”命令。
3.修改表结构①添加字段插入一个字段不会影响其他字段,如果表中已输入了数据,也不会影响现有的数据。②删除字段如果被删除的字段中已经存储了数据,则该项数据将全部删除。③修改字段在表设计视图中,可以直接修改字段的名称和数据类型,对于文本和数字类型的字段,还可以修改字段大小。注意:如果字段中已经存储了数据,则修改字段类型或将字段长度由大变小后,可能会造成数据的丢失。
例3.2建“学生表”、“课程表”、“成绩表”表结构。
3.2.4向表中输入数据向表中输入数据可以直接输入或导入外部数据。从外部获取数据有导入和链接两种类型,导入是指将其他Access数据库的表、Excel表、HTML文档或文本文件等引入作为当前数据库的表,导入的数据一旦操作完毕就与外部数据源无关。链接的数据只在当前数据库形成一个链接表对象,其内容随着数据源的变化而变化。1.打开表的数据表视图数据表视图主要用于查看、修改、插入、删除表中的记录。2.向表中直接输入数据进入数据表视图,就可以直接输入、编辑数据。
3.向库中导入电子表格作为数据库表例3.3将“学生表.xls”表导入到数据库,命名为“学生表1.accdb”,数据如图所示。4.将数据表导出为其他类型文件5.表对象的复制、删除与重命名
3.2.5表记录的操作表记录的基本操作:数据表视图完成1.选定记录2.添加记录3.修改记录4.删除记录说明:删除记录的操作是不能撤消的。
3.2.6建立表对象之间的关联1.建立表的基本原则(1)一个表围绕一个主题,避免大而全。(2)表中的字段代表原子数据,不可再分。如总分、平均分这样的字段,是计算得到的二次数据,不要作为表中字段。(3)表之间减少重复字段,只保留做连接用的公共字段即可。(4)设置关键字和外部关键字,用于表之间建立联系。2.表之间的关系表之间有3种关系:一对一、一对多、多对多。其中,多对多关系都被拆分成几个一对多关系。一对一关系存在于两个表中含有相同信息的相同字段,即一个表中的每条记录都只对应于相关表中的一条匹配记录。一对多关系存在于当一个表中的每一条记录都对应于相关表中的一条或多条匹配记录。
最常用的关系是一对多关系,要满足如下几点要求:(1)建立关系的两个表要有公共字段,两字段类型相同,名称可以不同。(2)建立关系以后,“一”方的表称为主表,“多”方的表称为子表。(3)子表中公共字段的值在主表公共字段中有匹配的值,主表公共字段的值不必与子表匹配。子表可以是空表。3.参照完整性参照完整性是一个规则系统,用来确保相关表行之间关系的有效性,并确保不会在无意之间删除或更改相关数据。在定义两个表之间关系时,如果实施了参照完整性,子表将不能随意添加记录,也不能随意更改公共字段中的值。如果同时勾选了“级联更新”和“级联删除”选项,在主表中更改公共字段中的值,子表对应的值自动被更改,在主表中删除某条记录,子表中所有对应记录自动被删除。4.建立表之间的关联
例3.4建“学生表”与“成绩表”一对多关联,“课程表”与“成绩表”一对多关联,实施参照完整性。
3.3查询的创建与使用3.3.1认识查询对象查询就是依据一定的查询条件,对数据库中的数据信息进行查找。它与表一样,都是数据库的对象。它允许用户依据准则或查询条件抽取表中的记录与字段,Access2010中的查询可以对数据库中的一个或多个表中存储的数据信息进行查找、统计、计算、排序等。查询产生的操作结果形式上看类似于数据表,实际上是一个动态的数据集合,每次打开查询,都会显示数据源的最新变化情况,查询结果也可以作为其他查询、窗体、报表等数据库对象的数据源。
1.查询对象的基本类型Access共有以下5种查询类型:选择查询:选择查询是最常见的查询类型。它从一个或多个表中检索所需的数据,对记录进行分组并可作总计、计数、平均值以及其他的统计计算。操作查询:操作查询只需进行一次操作就可对许多记录进行更改和移动。操作查询有4种方式:更新查询、删除查询、生成表查询及追加查询。参数查询:参数查询是在运行时显示对话框以提示用户输入条件或准则的一种查询。交叉查询:交叉查询在行与列交叉的位置上,将表中某字段进行总计、平均值、计数或其他类型的统计。SQL查询:SQL查询是使用SQL语句创建的一种查询。
2.查询的作用和功能查询是数据库提供的一种功能强大的管理工具,可以按照使用者所指定的各种方式来进行查询,查询基本上可满足用户以下需求:通过指定条件,限制在查询结果中的记录。对结果集中的记录进行数学统计。对结果集中的记录排序。可以修改、更新、删除、追加表中的数据。
3.查询视图常用的查询视图有3种:设计视图、数据表视图、SQL视图。SQL视图用SQL查询命令完成查询
3.3.2SQL查询命令38结构化查询语言SQL是操作关系数据库的工业标准语言,用于存取数据以及查询、更新和管理关系数据库系统。在SQL中,常用的命令有两类:数据查询命令SELECT数据更新命令INSERT、UPDATE、DELETE直接输入SQL命令和执行SQL命令方法①切换到“查询”页。②创建一个空查询。③切换到SQL视图。④输入SQL命令,如右图所示。⑤执行查询⑥查看结果。注意:输入命令、标点符号都是西文字符
SELECT语句的语法格式如下:SELECT[DISTINCT]<目标列表达式>[,<目标列表达式>]…FROM<表名>[,<表名>[WHERE<条件表达式>]//-选择满足条件的记录(行)[GROUPBY<列名1>[HAVING|<条件表达式>]//-分组统计[ORDERBY<列名2>[ASC|DESC]]//-排序SELECT语句的含义是:根据WHERE子句中的条件表达式,从表中找出满足条件的记录,按SELECT子句中的目标列,选出记录中的字段形成结果表。如果有ORDERBY子句,则结果集要根据指定的列名2按升序或降序排序,其中“ASC”表示升序(默认值),“DESC”表示降序。GROUPBY子句将结果按列名1分组,分组的附加条件用HAVING短语给出。3.3.3SELECT查询不能出现重复的记录必选,选择字段(列)对分组后的结果过滤)功能:从表中产生所需的行、列内容,形成一个查询结果(虚表)
1.选择字段40例3.5查询所有学生的学号、姓名、性别和专业SELECT学号,姓名,性别FROM学生表说明:若要查询所有学生的基本情况(所有字段),可用*SELECT*FROM学生表例3.6查询所有的院系,查询结果中不出现重复的记录SELECTDISTINCT院系编号FROM学生表;用DISTINCT没有用DISTINCT1.简单查询
2.查询中使用表达式规则41(1)常用运算符类型运算符算术运算符+-*/^(乘方)(整除)MOD(取余数)关系运算符<<=<>=>>=BetweenLike逻辑运算符NotAndOr字符运算符&注意:可使用通配符:*和?查找姓“张”的学生:姓名Like"张*"查找不是姓“张”的学生:姓名NotLike"张*"查找名中含有“明”的学生:姓名Like"?*明*"在表达式中,字符型常量用引号””括起来,日期型常量用“#”括起来。如“zhangsan”、#2010-9-1#
42(2)常用内部函数函数名说明实例结果Date()返回系统日期Date()#5/4/2021#Year(D)返回年份Year(#12/1/1982#)1982(3)表达式和表达式生成器
43合计函数描述AVG(列名)计算某一列的平均值COUNT(*)统计记录的个数COUNT(列名)统计某一列值的个数SUM(列名)计算某一列的总和MAX(列名)计算某一列的最大值MIN(列名)计算某一列的最小值如果没有GROUPBY子句,合计函数对整个表进行统计,产生一条记录,否则按分组统计,一组产生一条记录(4)SQL合计函数:
44例3.7使用合计函数,查询学生人数和平均成绩SELECTCount(*)AS人数,Avg(成绩)AS平均成绩FROM成绩表可改为Count(字段名)用AS子句指定别名本例产生一条记录3.统计
45例3.8查询学生的人数和平均年龄SELECTCount(*)AS人数,Avg(Year(Date())-Year(出生日期))AS平均年龄FROM学生表系统日期得到年份
4.条件选择记录46例3.9显示所有非商船学院(院系编号是01)学生的学号、姓名和年龄SELECT学号,姓名,Year(Date())-Year(出生日期)AS年龄FROM学生表WHERE院系编号<>"01"查询条件例3.10查询1989年(不包括1989年)以前出生的女生姓名和出生日期。SELECT姓名,出生日期FROM学生表WHERE出生日期<#1/1/1989#AND性别="女"
5.排序47ORDERBY子句用于顺序;[ASC]:表示升序;DESC:表示降序。例3.11查询所有男生的学号和姓名,并按院系编号由小到大排序。SELECT学号,姓名FROM学生表WHERE性别=“男”ORDERBY院系编号可用多个关键字排序。例如,ORDERBY院系编号ASC,学号DESC院系编号是第一排序关键字,学号是第二排序关键字。
6.分组查询48简单分组,相当于EXCEL的分类合计把在某一列上值相同的记录分在一组,一组产生一条记录。例3.12查询每个院系学生人数。SELECT院系编号,Count(*)AS学生人数FROM学生表GROUPBY院系编号将院系相同的记录分在一组。
49(2)复杂分组嵌套分类汇总,即多个字段的分类汇总。例3.13查询各院系男女生的人数SELECT院系编号,性别,Count(*)AS学生人数FROM学生表GROUPBY院系编号,性别将院系和性别都相同的记录分在一组。
50(3)分组后过滤HAVING子句对分组后的结果过滤,不是对分组之前的表进行过滤。没有GROUPBY子句时,HAVING的作用等同于WHERE子句。HAVING后的过滤条件中一般都要有合计函数。例3.14查询成绩在60以上、选修2门课程以上的学生的学号和课程数。SELECT学号,Count(*)AS课程数FROM成绩表WHERE成绩>=60GROUPBY学号HAVINGCount(*)>=2
7.连接查询51例3.15查询所有学生的学号、姓名、课程号和成绩SELECT学生表.学号,姓名,成绩表.课程号,成绩FROM学生表,成绩表WHERE学生表.学号=成绩表.学号两个表连接条件利用WHERE条件,在两表中有相同的属性值将两表连接注意:两表连接中,有相同字段名的前加表名以便区分
多表连接查询52例3.16查询所有学生的学号、姓名、成绩和课程名SELECT学生表.学号,姓名,成绩表.成绩,课程表.课程名FROM学生表,成绩表,课程表WHERE学生表.学号=成绩表.学号AND成绩表.课程号=课程表.课程号利用WHERE条件,在两表中有相同的属性值将表两两连接
53例3.17查询选修了“C语言程序设计”课程的学生的学号、姓名、成绩和课程名SELECT学生表.学号,姓名,成绩表.成绩,课程表.课程名FROM学生表,成绩表,课程表WHERE学生表.学号=成绩表.学号AND成绩表.课程号=课程表.课程号AND课程名="C语言程序设计"
3.3.4SQL中的数据更新命令54数据更新命令用于修改表中的数据,常见的命令有:INSERT、UPDATE、DELETE
INSERT命令55INSERT命令用于数据插入其语法格式为:INSERTINTO表名[(字段1,…,字段n)]VALUES(值1,…,值n)说明:若省略[(字段1,…,字段n)],则VALUES各值按表结构各字段次序、类型逐一输入;若不省略,则字段名与值次序、类型一一对应。例3.18向表“学生表”中插入一条记录INSERTINTO学生表(学号,姓名,性别,院系编号,出生日期,党员否,籍贯)VALUES("063510238","李欢","男","02",#12/25/90#,TRUE,"上海")添加完整记录:INSERTINTO学生表VALUES("063510238","李欢","男","02",#12/25/90#,TRUE,"上海“,"成绩优良","PPP")
56注意:所有字符西文符号字符型常量用单引号或双引号括起来逻辑型字段的值是True/False、Yes/No或On/Off日期常量用#号括起,表示形式为#MM/DD/YY#或#MM/DD/YYYY#若有主键,不能输入多个相同的主键值。即不能多次执行插入命令
DELETE命令57例3.19删除表“学生表”中学号为063510238的记录DELETEFROM学生表WHERE学号=“063510238”例3.20删除“成绩表”中成绩低于60分的记录DELETEFROM成绩表WHERE成绩<60DELETE语句用于数据删除其语法格式为:DELETEFROM表[WHERE条件]注意:WHERE子句缺省,则删除表中所有的记录(表还在)
UPDATE命令58例3.21将表“学生表”中学生王五的姓名改为王宝UPDATE学生表SET姓名="王宝"WHERE姓名="王五“例3.22将“成绩表”中成绩低于60的学生加5分UPDATE成绩表SET成绩=成绩+5WHERE成绩<60UPDATE语句用于数据修改其语法格式为:UPDATE表SET字段1=表达式1,…,字段n=表达式n[WHERE条件]注意:WHERE子句缺省,则修改表中所有的记录注意:UPDATE语句一次只能对一个表进行修改
数据库基础实验:6课时实验一创建数据库、建立表、编辑表、导入数据(2学时)实验二数据查询命令SELECT(2学时)实验三多表连接查询命令和数据更新命令INSERT、UPDATE、DELETE(2学时)