1、第五章 数据库技术基础 集美大学计算机基础教研室,大学信息技术基础,第5章 数据库技术基础 考试大纲5.1 简介 5.2 关系数据模型1.数据模型的概念2.概念模型(信息世界)使用的主要术语3.实体间的联系(三种类型)4.掌握E-R模型的表示方法6.关系模型使用的主要术语7.关系完整性约束8.数据库、数据库管理系统、数据库系统、关系数据库的概念9.数据库系统的特点10.SQL的三级模式结构(选学内容),5.3 结构化查询语言1.SQL数据定义语句CREATE TABLE,ALTER TABLE,CREATE INDEX2SQL查询语句SECECT FROMWHEREGroup By Order
2、 By 3.SQL数据统计语句COUNT,SUM,AVG,MAX,MIN函数的使用4.SQL记录更新语句INSERT INTO,UPDATE,DELETE语句的使用5.4 数据库应用系统设计,主要内容: 5.1 引言5.2 关系数据模型及关系数据库系统5.3 关系数据库标准语言SQL5.4 数据库应用系统设计要求:掌握概念模型(信息世界)使用的主要术语和实体间的联系(三种类型)。理解关系数据模型的概念、术语。掌握E-R模型的表示方法。熟练使用SQL查询语句。 重点与难点重点:理解概念模型、逻辑模型中相关术语,理解 关系和关系模型,掌握SQL查询语句的使用。难点:由实体模型画出E-R图.Sele
3、ct语句的用法。,一、ACCESS 应用基础 1.什么是“数据库” 我们举个例子来说明这个问题:每个人都有很多亲戚和朋友,为了保持与他们的联系,我们常常用一个笔记本将他们的姓名、地址、电话等信息都记录下来,这样要查谁的电话或地址就很方便了。这个“通讯录”就是一个最简单的“数据库”,每个人的姓名、地址、电话等信息就是这个数据库中的“数据”。我们可以在笔记本这个“数据库”中添加新朋友的个人信息,也可以由于某个朋友的电话变动而修改他的电话号码这个“数据”。不过说到底,我们使用笔记本这个“数据库”还是为了能随时查到某位亲戚或朋友的地址、邮编或电话号码这些“数据”。 实际上“数据库”就是为了实现一定的目
4、的按某种规则组织起来的“数据”的“集合”.,2.什么是数据库管理系统 图书管理员在查找一本书时,首先要通过目录检索找到那本书的分类号和书号,然后在书库找到那一类书的书架,并在那个书架上按照书号的大小次序查找,这样很快就能找到我所需要的书。数据库里的数据像图书馆里的图书一样,也要让人能够很方便地找到才行。数据库的管理系统就是从图书馆的管理方法改进而来的。人们将越来越多的资料存入计算机中,并通过一些编制好的计算机程序对这些资料进行管理,这些程序后来就被称为“数据库管理系统“,它们可以帮我们管理输入到计算机中的大量数据。 我们将要学习的Access也是一种数据库管理系统。,3创建空Access数据库
5、,启动Access 2000运行后,单击标记为“新建文件”的按钮。然后,在“新建文件”对话框中,选择“空数据库”选项。再在随即出现的“文件新建数据库”对话框中选定数据库文件的存储位置,同时指定数据库文件名,单击“创建”命令按钮“”,即进入数据库设计视图,它意味着一个指定名称的Access数据库创建成功。 一个Access数据库以一个扩展名为“.mdb”的文件存在。,作为一个数据库,最基本的就是要有表,用表存储具体数据。所以在建立数据库后,要创建各种表。 Access 数据表对象由两个部分构成:表对象的结构和表对象的数据(记录)。表的结构是指数据表的框架,主要包括: 1字段名称数据表中的一列称为
6、一个字段,而每一个字段均具有唯一的名字,被称为字段名称。 2数据类型数据表中的同一列数据必须具有共同的数据特征,称为字段的数据类型。 3字段大小数据表中的一列所能容纳的字符或数字的个数被称为字段大小。 4字段的其他属性其他一些属性,包括“索引”、“格式”等等。,(1)创建表的结构(重点) 双击“使用设计器创建表”选项,弹出“表1:表”对话框,进入设计表的结构界面。 对话框分为两个部分,上半部分是表设计器,下半部分用来定义表中字段的属性。 分别定义表的字段名称、数据类型、字段长度等。 设计完成后,点击“关闭”,给出一个表名,即完成表的结构定义。 一个表中建立多个主键(重点),如我们定义三个表:
7、学生表:学号/C/6,姓名/C/10,性别/C/2,出生年月/D,.照片/OLE对象(可选);以学号为主键 课程表:课号/C/3,课名/C/20,学时/整型,学分/整型; 以课号为主键 成绩表:编号/自动编号,学号/C/6,课号/C/3,成绩/整型,以编号为主键,并对学号与课号建立有重复的索引。(目的是为今后建立关系时用,建立1对n关系时,1方要求是主键,n方要求建立索引)数据类型说明:C/6-文本/字段大小;D-日期/时间;,对于任意一个数据表,Access一般都要求定义唯一的一个主关键字段。主关键字段的含义是,在一个数据表中不允许任两条记录的主关键字段值相同。若未定义主关键字段,则在退出表
8、结构设计并要求保存本次设计操作时,Access 2003会询问并在得到认可的情况下自行增加一个取名为ID的、数据类型为“长整型”的自动编号字段。,(2)在设计视图中修改表对象的结构 为了修改数据表对象的结构,应该在数据库设计视图中选中需修改结构的表对象,右击,点选“设计视图”,即可进入数据表设计视图。,(3)输入各表的记录内容 分别双击学生表、课程表、成绩表,输入各表的记录内容输入要符合定义的格式。 对照片的输入,先点击“照处”字段,再“插入”/“对象”,选中“由文件创建”/“浏览”,在相应的文件夹中找到该生的照片,确定即可。这时显示为”位图图像“。另外,注意的是,照片文件的扩展名为“.BMP
9、”位图文件。,(4)用窗体显示表内容 对包含有照片等内容的记录,可以用窗体显示。 点击“窗体”标签,点击“使用向导创建窗体”,先选取“学生”表,再选取需要的字段到右边框中,然后按向导一步步完成,保存一个名字中。今后只要在窗体标签中双击该名字,即可显示各条记录的内容。 但如果要显示三个表的综合内容,则首先必须建立各表之间的关系。,4. 设计Access 数据表对象之间的关联(重点) 在数据库应用系统中,一个数据库中常常包含若干个数据表,用以存放不同类别的数据集合。而这些数据集合存放于同一个数据库中,是由于它们之间存在着相互联接的关系。这种数据集合间的相互联接称之为关联。在关系数据库的实现中,主要
10、存在两种关联:一对一的关联和一对多的关联。 Access是一个关系型数据库管理系统,上述两种关联是通过设定数据库中表对象的关联来实现的。 数据表关联的目的是为了实现关系联接运算,即将两个数据表中的相关记录联接形成一个新关系中的一条记录,这个新关系称为关联数据表。,单击菜单栏的“工具”/“关系” ,随即出现 “关系设计视图”窗口。若已定义了一些关系,该窗口内会显示这些关系;若尚未定义任何关系,该窗口内没有任何内容; 定义表间的关系步骤是:先添加表,再建关系在“关系设计视图”窗口内单击鼠标右键,在随即弹出的快捷菜单中单击【显示表】,在弹出“显示表”对话框中,分别选定三个表并点击“添加”到关系窗口中
11、,然后拖动“学生”表中的学号到“成绩”表中的“学号”,创建一个学生表到成绩表的一对多的关系;再拖动“课程”表中的“课号”到“成绩”表中的“课号”,建立课程表到成绩表的一对多关系。关系创建成功,将有一条连线,“关系”与“子数据表” 在建立一对多的关系后,打开主表,可以看到每条记录左边有一“+”号,点击该“+”号,可以显示对应该记录的“子数据表”内容。 在这种“一对多”关系中,完全可以将两个表或多个表的数据串起来。如建立一个显示所有同学的学号、姓名、性别、课程名、分数的查询,即用到三个表中的数据。,5.查询(重点),在建立了表、并建立各种表之间的关联后,我们开始来学习Access中另一个非常重要的
12、内容 查询。 (1)选择查询 选择查询是从多个数据表中筛选数据形成的查询对象,其中可以包含计算字段、分类汇总字段,可以设定各种筛选条件。选择查询用于显示数据,形成数据编辑界面。 (2)更新查询 更新查询用于在数据表中更改数据。 (3)交叉表查询 交叉表查询用于产生采用垂直方式对记录进行分组汇总的查询结果。,例1.建立一个显示 学号 姓名 性别 课程名 成绩 内容的查询(选择查询) 操作步骤:进入、添加表、选择字段。 在数据库设计视图中,单击“查询”标签按钮即进入“查询对象”选项卡,选取”在设计视图中创建查询“,然后,先选择表,在选择各种表后,若表之间存在关系,则系统连线也自然显示出来;再在下半
13、部中选择准备显示的各字段,这时可以将各个表中的字段选择好。,在设计查询时,可以随时用“视图”下的“设计视图”与“数据表视图”两者之间进行转换,以观察效果。 完成后,关闭查询设计窗口,给一查询名(如:显示各门课成绩)。今后要运行该查询,只要双击即可。 对上述查询的改进: 1)对姓名按降序排列:只要在排序行中进行定义 2)在条件栏中加上条件,即只显示满足条件的记录,如在条件行的性别列中加上=“男”,则只显示性别为“男”的记录;若在成绩列中加上”80”,则只会显示大于80分的记录。若两者都用,则两条件。,例2 创建一个显示每人总分与平均分的查询,即显示出 学号 姓名 性别 总分 平均分 操作步骤:“
14、查询”/“在设计视图中创建查询” 然后选择“学生”与“成绩”表,再在下部选择学号、姓名、性别、成绩、成绩各字段,注意成绩选两次; 点击工具栏的“”符号,在下部中会增加一个“总计”行,在学号、姓名、性别列中该行设为”Group BY”,即分组依据,在第一个成绩列设为“SUM”,第二个成绩列中设为“AVG”。,例2改进:一是平均分显示小数位若设为2位,二是该列标题改为“总分”与“平均分” 右击总分列,选“属性”,然后在字段属性中,选常规列,在格式中选“固定”,小数位数改为2,在标题栏中填上“平均分”即可。 例3 更新查询 若要修改成绩,比如高等数学分数全部加9分: 先制作一个一般查询,包含学号,姓
15、名,课程名,成绩; 然后在“查询”菜单下选择“更新查询”,在设计网络中会出现“更新到”一行,在“成绩”的“更新”行里输入“成绩+2”,再在“课程名”列中的“条件”行中输入“高等数学”。,例4 交叉表查询 常用于汇总特定表中的数据。实际上就是一个矩阵表,在水平和垂直方向列出所需查询的数据标题,在行与列的交汇处显示数据值,并进而对这些数据给出各种总计值。创建一个交汇查询,需要三个要素:行标题、列标题、值。 现在要求制作一个如下表的表 学号 姓名 平均成绩 课程1成绩 课程2成绩 步骤:先创建一个简单的查询,包含学号、姓名、成绩、成绩各字段,然后在“查询”菜单中选择“交叉表查询”,设计网络中会多出“
16、总计”行和“交叉表”行,单击“交叉表”行,在下拉列表中设定“学号”、”姓名“、第一个”成绩“字段为行标题,而”课程名“为列标题,第二个”成绩“字段为值。,且第一个成绩字段的“总计”为“AVG”。运行之,即可得到各人的各门课成绩。,6. 窗体,“表”、“查询”、“窗体”这些都是数据库的对象。 窗体也是Access中的一种对象,它使用计算机屏幕将数据库中的表或查询中的数据告诉我们。由于很多数据库都不是给创建者自己使用的,所以还要考虑到别的使用者的使用方便,建立一个友好的使用界面将会给他们带来很大的便利,让更多的使用者都能根据窗口中的提示完成自己的工作,而不用专门进行培训。这是建立一个窗体的基本目标
17、。 一个好的窗体确实是非常有用的。不管你的数据库中表或查询设计得有多好,如果你的窗体设计得十分杂乱,而且没有任何提示,那别人一看就不想用了,这样的话你建立的数据库就没有什么意义了。,5.2 关系模型及 关系数据库系统,5.2.1 数据模型 模型是对客观世界中复杂对象的抽象描述,获取模型的抽象过程叫做建模。 数据模型是数据库系统中用于提供信息表示和操作手段的形式构架。 数据模型可分为两个级别:概念模型和实施模型。 数据模型由三个要素组成: 数据结构描述系统的静态特性,用于描述数据库的组成对象以及对象之间的联系。 数据操作用于描述系统的动态特性,是对数据库中各种对象的实例允许执行的操作集合。,数据
18、的约束条件是一组完整性规则的集合。 5.2.2 概念模型(信息世界)使用的术语 1.现实世界 现实世界就是人们通常所指的客观世界,事物及其联系就处在这个世界中。 2.概念世界 概念世界又称信息世界,是指现实世界的客观事物经人们的综合分析后,在头脑中形成的印象与概念。 概念模型涉及的概念主要有: (1)实体(Entity) (2)属性(Attribute) (3)码(Key) (4)域(Domain),(5)实体型(Entity Type) (6)实体集(Entity Set) (7)联系(Relationship) 3.数据世界 数据世界又称机器世界。因为一切信息最终是由计算机进行处理的,进入
19、计算机的信息必须是数字化的。,5.2.3 实体间的联系及实体联系方法 1.两个实体之间的联系设A、B为两个实体集,则每种联系类型的简单定义可叙述如下: (1)一对一联系(11),图5-2 实体间的三种联系,(2)一对多联系(1N) (3)多对多联系(MN) 2.实体联系方法(E-R图) 实体关系图是表现实体关系模型的图形工具,简称E-R图。E-R图提供了用图形表示实体、属性和联系的方法。以下分别举例说明三种联系的表示方法。 (1)11联系的E-R图表示法,图5-3 实体关系图的表示方法,图5-4 系主任与院系之间的 分管联系,即11联系,(2)1N联系的ER图表示法 (3)MN联系的ER图表示
20、法,图5-5 班级与学生之间的包含关系,即1N联系,图5-6学生和课程之间的选修联系,即MN联系,5.2.4 关系模型 1.关系模型的组成 (1)关系模型的数据结构非常简单,只包含单一的数据结构关系。 (2)关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。 以下简单介绍关系模型支持的最基本的三种运算: 选择(selection) 选择运算是根据给定的条件,从一个关系中选出一个或多个元组(表中的行)。 投影(projection),投影是从一个关系中选择某些特定的属性(表中的列)重新排列组成一个新关系,投影之后属性
21、减少,新关系中可能有一些行具有相同的值。 连接(join) 连接运算是从两个或多个关系中选取属性间满足一定条件的元组,组成一个新的关系。 (3)关系完整性约束 实体完整性:规定关系的所有元组的主键属性不能取空值;当主键由属性组组成时,属性组中所有的属性均不能取空值。 参照完整性:现实世界中的实体之间往往存在某种联系,这样就会存在关系之间的引用。 用户定义的完整性:实体完整性和参照完整性是任何关系数据库系统都必须支持的。,2.关系模型使用的主要术语 (1)关系(Relation):用来存储数据的基本构件,一个关系对应通常所说的一张表。 (2)元组(Tuple):表中的每一行称为关系的一个元组,它
22、对应于实体集中的一个实体。 (3)属性(Attribute):表中的每一列就是一个字段,对应于实体的一个属性,每个字段要有一个字段名。 (4)域(Domain):每个字段的取值范围称为它的值域,表的每个字段都必须对应一个值域,不同字段的值域可以相同或不同。 (5)码(Key):为了能够唯一地定义表中的每一个记录,关系模型需要用表中的某个字段或某几个字段的组合作为主键。,(6)外键(外码):在关系模型中,为了实现表与表之间的联系,通常将一个表的主键作为数据之间联系的纽带放到另一个表中,这个起联系作用的属性称为外码。 (7)分量:元组中的一个属性值。 (8)关系模型:对关系的描述,一般表示为:关系
23、名(属性1,属性2,属性n),3.关系模型的规范化 关系模型要求关系必须规范化,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项。 构造数据库必须遵循一定的规则,在关系数据库中,这些规则就是范式。 4.关系模型的性质 关系中每个属性值是不可分解的。也就是表中元组分量必须是原子的; 关系中每个元组代表一个实体,因此不允许存在两个完全相同的元组; 元组的顺序无关紧要,可以任意交换,不会改变关系的意义;,关系中各列的属性值取自同一个域,故一列中的各个分量具有相同性质; 列的次序可以任意交换,不改变关系的实际意义,但不能重复。 5.2.5 数据
24、、数据库、数据库管理系统、数据库系统 1.数据 数据是数据库中存储的基本对象。 2.数据库 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。,3.数据库管理系统 数据库管理系统是位于用户和操作系统之间的一层数据管理软件。它的主要功能包括: (1)数据定义功能 (2)数据组织、存储和管理 (3)数据操纵功能 (4)数据库的事务管理和运行管理 (5)数据库的建立和维护功能 4.数据库管理员 5.数据库系统 数据库系统本质上是一个用计算机存储记录的系统,可以存储信息并支持用户检索和更新所需要的信息。,与人工管理和文件系统相比,数据库系统的特点主要有以下几个方面。 1.数据结构化 2.数
25、据的共享性高,冗余度低,易扩充 3.数据由DBMS统一管理和控制DBMS在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。,图5-7 数据库系统的组成及其关系,5.3 关系数据库标准语言SQL,5.3.1 SQL概述 1.SQL的功能 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI的规定,SQL被作为关系型数据库管理系统的标准语言。 结构化查询语言SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制
26、四个方面,是一个通用的、功能极强的关系数据库语言。 SQL语言之所以能够为用户和业界所接受,成为国际标准,是因为它是一个综合的、通用的、功能极强同时又简洁易学的语言。,2.SQL语言的主要特点 (1)一体化 (2)高度非过程化 (3)语言简洁,易学易用 (4)能以多种方式使用 (5)面向集合的操作方式 3.SQL对数据库系统三级模式的支持 SQL支持关系数据库的三级模式结构,如图5-9所示。 4.SQL提供的主要数据类型 SQL提供了一些主要的数据类型,如表5.13所示。,一个字段要根据实际情况来选用数据类型,一般从两个方面来考虑,一是取值范围,二是要做哪些运算。,图5-9 SQL对关系数据库
27、模式的支持,(2)SQL的数据定义语句,1)基本表的定义、修改和删除,基本表的定义CREATE TABLE ( , , ); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列的完整性约束条件 :涉及一个或多个属性列的完整性约束条件 ) 常用完整性约束 主码约束: PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束,例1:要建立一个学生情况表(学生1) CREATE TABLE 学生1 (学号 CHAR(10) NOT NULL UNIQUE PRIMARY KEY, 姓名 CHAR(8) NOT NULL,年龄 INT) 其中,
28、学号字段 非空 ,且具有唯一性,为主键,姓名字段非空,年龄字段为整数型,基本表的修改:ALTER TABLE ADD 完整性约束 DROP ALTER ; :要修改的基本表ADD子句:增加新列和新的完整性约束条件 DROP子句:删除指定的完整性约束条件 ALTER子句:用于修改列名和数据类型 不论基本表中原来是否已有数据,新增加的列一律为空值,例2:在“学生1”表中增加一个“成绩”字段C型 ALTER table 学生1 ADD 成绩 CHAR(3) 例3:修改“学生1”表中刚增加的“成绩”字段,类型改为整型INT ALTER table 学生1 Alter 成绩 int 例4:在“学生1”表
29、中删除“成绩”字段 ALTER table 学生1 drop 成绩,删除基本表:DROP TABLE 例5:删除”学生1“表DROP TABLE 学生1,(2) 视 图(重点),注:在Access 中,没有视图功能。其功能类似于查询。下面介绍的命令无法执行。 在SQL中,视图是外模式一级数据结构的基本单位。它是从一个或几个基本表或其他视图中导出的表,是从现有基本表中抽取若干子集组成用户的“专用表”。这种构造方式必须使用SQL中的SELECT语句来实现。在定义一个视图时,只是把其定义存放在系统的数据中,而并不直接存储视图对应的数据,直到用户使用视图时才去求得对应的数据。 视图的定义: CREAT
30、E VIEW 视图名 (,)AS ,(3) 索引的定义、修改与删除 建立索引 建立索引是加快查询速度的有效手段 CREATE UNIQUE CLUSTER INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引 在一个基本表上最多只能建立一个聚簇索引 聚簇索引的适用范围很少对基表进行增删操作很少对其中的变长列进行修改操作,例1:为“学生”表建立姓名的索引 create
31、index aaa on 学生 (姓名 DESC) 例2:为“学生”表建立姓名的唯一索引 create unique index aaa1 on 学生 (姓名 DESC) 索引的删除: DROP INDEX 索引名 on 表名 例3:删除上面建立的索引aaa1 drop index bbb1 on 学生 注:在索引的建立与删除在设计视图中可见到结果,语句格式如下: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,(4)SQL记录查询语句(重点),SELECT子句:指定要显示的属性列,可以是*,可以是属
32、性列表(各属性名之间用逗号分开),也可以是属性表达式,如成绩+5. FROM子句:指定查询对象(基本表或查询) WHERE子句:指定查询条件,可以用and、or、 Not 组合GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。 HAVING短语:筛选出只有满足指定条件的组 ORDER BY子句:对查询结果表按指定列值的升序或降序排序,SQL记录查询语句,实例:学生-课程数据库-专业 学生表:学号,姓名,性别,出生年月,团员,照片,专业号,年龄 课程表:课号,课名成绩表:编号,课号,学号,成绩 专业:专业号,专业名 无条件查询 例1 查询全
33、体学生的学号与姓名。 SELECT 学号,姓名 FROM 学生 例:找出所有学生的情况 Select * From 学生 条件查询 例2找出课号为101 的成绩不及格的学生 SELECT 学号 FROM 成绩 WHERE 课号=101 AND 成绩60,排序查询 例3查找不及格的记录,并将结果按课程号从大到小排列 SELECT 学号,课号,成绩 from 成绩 where 成绩80) 计算查询例5 :求男学生的总人数和平均年龄 select count(*), avg(年龄) from 学生 where 性别=“男“,例6 :查询“计算机”专业学生的学号与姓名 select 学号,姓名 fro
34、m 学生 where 专业号 in (select 专业号 from 专业 where 专业名=“计算机“) 该查询采取嵌套的方式表达了多表的查询,查询执行方式是由内而外,先执行内层查询,再执行外层查询。 也可写成:select 学号,姓名 from 学生,专业 where 专业.专业号=学生.专业号 and 专业名=“计算机“ * 与?在查询中的应用 *代表任一串字符,?代表任一个字符。 例7 :查找学生表中所有姓“李”的记录 SELECT * from 学生 where 姓名 like “李*“,要查询中,And 表示与,OR表示或,而NOT表示非。 例8 :查询成绩在70-80之间的同学
35、记录 select * from 成绩 where 成绩70 and 成绩75 也可写成 select * from 成绩 where 成绩 between 70 and 80 如果要显示姓名,则可用: select 成绩.学号,姓名,成绩 from 成绩,学生 where (成绩 between 70 and 80) and (学生.学号=成绩.学号),记录更新 插入记录 INSERT INTO (,) VALUES ( , ) 注:对于INTO子句中没有出现的属性列,新记录将在这些列上取空值 如果INTO子句中没有指明任何列名,则插入的新记录必须每个属性列上都有取值,例1:将一个新学生记录
36、(200511,李丽,女,”1988-08-08”)插入到学生表中。 insert into 学生 (学号,姓名,性别,出生日期) values (“200511”,“李丽”,“女”,“1988-08-08”) 例2:插入一条选课记录(即成绩记录) (66,200511,101,88)insert into 成绩 values (66,200511,301,88),记录的修改UPDATE SET =,= WHERE ; 三种修改方式 修改某一个元组的值 修改多个元组的值 带子查询的修改语句,例1: 将所有学生的成绩加2分 UPDATE 成绩 SET 成绩=成绩+2 例2 将200501 学号的
37、102课号的成绩改为99 update 成绩 set 成绩=99 where 学号=200501 and 课号=102 删除记录 DELETE FROM WHERE ; 例3: 删除(200511,李丽,女,”1988-08-08”)的学生记录。DELETE FROM 学生 WHERE 学号= 200511 ,其他例: 1.求年龄字段的查询 UPDATE 学生 SET 年龄 = Year(Date()-Year(出生日期) 2.查询姓别为“男”且年龄18岁的学生学号,姓名 Select 学号,姓名 from 学生 where 性别=“男” And 年龄=18 3.查询计算机和信息学院的学生情况
38、 Select * from 学生 where 专业号 IN(“A01“,“A02“) 4.统计各专业的人数 Select 专业号,count(*) from 学生 group by 专业号,4.求每人的平均分 select 学号,avg(成绩) from 成绩 group by 学号 5.求每门课的平均分 select 课号,avg(成绩) from 成绩 group by 课号,select avg(成绩) from 成绩 group by 课号 having 课号“102“ select 学号,成绩 from 成绩 where 成绩 between 70 and 80 select 学号
39、,成绩,课号 from 成绩 where 课号 in(“102“,“103“) select 性别,count(*), avg(year(date()-year(出生日期) from 学生 Group by 性别,5.4 数据库应用系统设计,5.4.1 数据库设计概述 数据库设计的基本步骤包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行与维护。 对数据库的设计包括如下几个过程: (1)信息的收集。 研究和考虑所要建立的数据库的信息环境,对数据库应用领域中各种信息要求和操作要求进行详细的分析;了解应用领域中数据项、数据项之间的关系和所有的数据操作的详细要求,了解哪
40、些因素对响应时间、可用性和可靠性有较大的影响等。 (2)确定数据。 (3)建立实体关系模型。,(4)进行规范化。 (5)编写SQL代码以创建数据库。 设计过程是一个反复的过程。 5.4.2 E-R图向关系模型的转换 E-R图向关系模型的转换要解决的问题是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。 转换遵循的原则是:一个实体型转换为一个关系模式。 对于实体型间不同类型的联系,转换的规则是:,(1)一个11联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 (2)一个1N联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并。 (3)一
41、个MN联系转换为一个关系模式。 (4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。 (5)具有相同码的关系模式可合并。,5.4.3 数据库的实施与维护 完成数据模型的建立后,我们就必须对字段进行命名,确定字段的类型和宽度,并利用数据库管理系统或数据库语言创建数据库结构、输入数据和运行等,因此数据库的实施是数据库设计过程的“最终实现”。 数据库的维护工作,包括做好备份工作、数据库的安全性和完整性调整、改善数据库性能等。,关系数据模型数据模型的概念概念模型(信息世界)使用的主要术语实体间的联系(三种类型)掌握E-R模型的表示方法关系模型使用的主要术语数据库系统数据库、数据库管理系统、
42、数据库系统、关系数据库的概念数据库系统的特点 结构化查询语言的概念(具体语法在实践中考核)重点掌握SQL语句、建表、表与表连接、主键、视图等。,本章小结,第5章 部分习题 1 在教学中,一个学生要学习多门课程,而一门课程又有多名学生学习, 则学生与课程这两个实体之间存在着( )联系。 A) 一对一 B) 一对多 C) 多对多 D) 多对一 2 在下列关系基本性质的描述中,错误的概念是( )。 A) 关系中不允许存在两个完全相同的元组。 B) 关系中的每一列的属性值可以取自不同的值域。 C) 元组的顺序无关紧要。 D) 列的顺序无关紧要。 3 一个关系相当于一张二维表,表中的各列相当于关系的(
43、)。 A) 数据项 B) 元组 C) 结构 D) 属性,16-1数据库应用系统是指在( )直接支持下运行的计算机应用系统。 A) 数据库管理系统 B) 文件系统 C) 应用程序 D) 操作系统 16-2 数据库系统的特点不包括( )。 A) 数据的结构化程度高 B) 数据共享性好 C) 数据的独立性高 D) 数据与程序的相互依赖性强 16-2 在E-R图向关系模式转换中,如果两实体之间是多对多的联系,则必须为联系 建立一个关系,该联系对应的关系模式属性只包括( )。 A) 联系本身的属性 B) 联系本身的属性及所联系的任一实体的主键 C) 联系本身的属性及所联系的双方实体的主键 D) 自定义的
44、主键,15-3 在一个学生关系中,学号为主键,按照关系完整性约束中( )完整性的要求,学号不能为空。 A) 实体 B) 参照 C) 用户自定义 D) 属性 (完整性指关系中数据的正确性、相容性,它由一系列的约束条件所组成。三类:实体完整性,参照完整性,用户自定义完整性。实体完整性:若属性A是关系R的主属性,则A的取值不能为空 实体完整性可将一个数据行定义成与特定表对应的唯一实体。实体完整性主要通过索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性实现数据表内标识符列或主键的完整性。 实体完整性规则要求关系中,记录关键字的字段不能为空,不同记录的关键字,字段值也不能相同,否
45、则,关键字就失去了唯一标识记录的作用。参照完整性:关系中外键取值或者为空,或者等于被参照关系中某个元组的主键值。目的是对两个相关联的表进行数据插入和删除时,通过参照完整性保证它们之间数据的一致性。用户自定义完整性:反映某一具体应用所涉及的数据必须满足的条件。 域完整性(Field Integrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域(即合法的数据集合)的成员。方法是限制列的数据类型、精度、范围、格式和长度等。),16-1 有如下三个关系模式: 学生(学号,姓名,专业) 课程(课号,课程名,学分) 成绩(学号,课号,成绩) 则在成绩关系中的外键是( )。 A) 学号,课号,成绩 B) 学号,课号 C) 学号,成绩 D) 课号,成绩 (外键是该表与另一个表之间联接的字段外键必须为另一个表中的主键主键:唯一标识表中的所有行的一个列或一组列。主键不允许空值。不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行。表中可以有不止一个键唯一标识行,每个键都称作候选键。只有一个候选键可以选作表的主键,所有其它候选键称作备用键。尽管表不要求具有主键,但定义主键是很好的做法。 在规范化的表中,每行中的所有数据值都完全依赖于主键。),