第二章 关系数据库

更新时间:2024-06-19 23:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数据库系统概论》 第二章 关系数据库 讲义

第二章 关系数据库

本章系统地讲解关系数据库的重要概念,并着重对关系模型进行讲解。关系模型包括关系数据结构、关系操作集合、以及关系完整性约束三个组成部分。要求学生重点掌握关系模型的三类完整性规则和关系代数的运算等。

2.1 关系数据结构及形式化定义 2.2 关系操作 2.3 关系的完整性 2.4 关系代数 2.5 关系演算 2.6 小结

2.1 关系数据结构及形式化定义 2.1.1 关系 2.1.2 关系模式 2.1.3 关系数据库 2.1.1 关系

单一的数据结构----关系

现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构---- 二维表

从用户角度,关系模型中数据的逻辑结构是一张二维表 建立在集合代数的基础上 关系(续)

⒈ 域(Domain)

2. 笛卡尔积(Cartesian Product) 3. 关系(Relation)

⒈ 域(Domain)

域是一组具有相同数据类型的值的集合。例:

整数 实数

- 1 -

《数据库系统概论》 第二章 关系数据库 讲义

介于某个取值范围的整数 长度指定长度的字符串集合 {‘男’,‘女’} ?????..

2. 笛卡尔积(Cartesian Product) 笛卡尔积

给定一组域D1 ,D2 ,? ,Dn ,这些域中可以有相同 的。 D1 ,D2 ,? ,Dn 的笛卡尔积 为:

D1×D2×?×Dn =

{(d1 ,d2 ,? ,dn )|di?Di ,i =1 ,2 ,? ,n } 所有域的所有取值的一个组合 不能重复

元组 (Tuple )

笛卡尔积中每一个元素(d1,d2,?,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)

(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)等都是元组

分量 (Component )

笛卡尔积元素(d1,d2,?,dn)中的每一个值di叫作一个分量 张清玫、计算机专业、李勇、刘晨等都是分量

基数(Cardinal number)

若Di(i=1,2,?,n)为有限集,其基数为mi(i=1,2,?,n),则D1×D2

×?×Dn的基数M为:

笛卡尔积的表示方法

笛卡尔积可表示为一个二维表

表中的每行对应一个元组,表中的每列对应一个域

- 2 -

《数据库系统概论》 第二章 关系数据库 讲义

3. 关系(Relation) 1) 关系

D1×D2×?×Dn的子集叫作在域D1,D2,?,Dn上的 关系,表示为

R(D1,D2,?,Dn)

R:关系名

n:关系的目或度(Degree) 2) 元组

关系中的每个元素是关系中的元组,通常用t表示。 3) 单元关系与二元关系

当n=1 时,称该关系为单元 关系 (Unary relation )

或一元 关系 当n=2 时,称该关系为二元 关系(Binary relation )

4) 关系的表示

关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域 关系(续) 5)属性

关系中不同列可以对应相同的域

为了加以区分,必须对每列起一个名字,称为属性(Attribute)

n目关系必有n个属性 6) 码

候选码(Candidate key)

若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码 简单的情况:候选码只包含一个属性 全码(All-key)

最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)

- 3 -

《数据库系统概论》 第二章 关系数据库 讲义

主码

若一个关系有多个候选码,则选定其中一个为主码(Primary key) 主属性

候选码的诸属性称为主属性(Prime attribute)

不包含在任何侯选码中的属性称为非主属性( Non-Prime attribute) 或非码属性(Non-key attribute) 关系(续)

D1,D2,?,Dn的笛卡尔积的某个子集才有实际含义 例:表2.1 的笛卡尔积没有实际意义 取出有实际意义的元组来构造关系

关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) 假设:导师与专业:1:1, 导师与研究生:1:n 主码:POSTGRADUATE(假设研究生不会重名) SAP关系可以包含三个元组 { (张清玫,计算机专业,李勇), (张清玫,计算机专业,刘晨), (刘逸,信息专业,王敏) }

7) 三类关系

基本关系 (基本表或基表)

实际存在的表,是实际存储数据的逻辑表示 查询表

查询结果对应的表 视图表

由基本表或其他视图表导出的表,是虚表,不对 应实际存储的数据

8)基本关系的性质

① 列是同质的(Homogeneous) ② 不同的列可出自同一个域 其中的每一列称为一个属性 不同的属性要给予不同的属性名

- 4 -

《数据库系统概论》 第二章 关系数据库 讲义

③ 列的顺序无所谓,,列的次序可以任意交换 ④ 任意两个元组的候选码不能相同

⑤ 行的顺序无所谓,行的次序可以任意交换 基本关系的性质(续) ⑥ 分量必须取原子值

这是规范条件中最基本的一条

表2.3 非规范化关系

2.1.2 关系模式 1.什么是关系模式 2.定义关系模式 3. 关系模式与关系 1.什么是关系模式

关系模式(Relation Schema)是型 关系是值

关系模式是对关系的描述 元组集合的结构

属性构成

属性来自的域 属性与域之间的映象关系

元组语义以及完整性约束条件 属性间的数据依赖关系集合

- 5 -

《数据库系统概论》 第二章 关系数据库 讲义

3. 参照完整性规则 规则2.2 参照完整性规则

若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值

[例1]:

学生关系中每个元组的“专业号”属性只取两类值: (1)空值,表示尚未给该学生分配专业

(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业

〔例2〕 :

选修(学号,课程号,成绩) “学号”和“课程号”可能的取值 : (1)选修关系中的主属性,不能取空值 (2)只能取相应被参照关系中已经存在的主码值 例3〕:

学生(学号,姓名,性别,专业号,年龄,班长) “班长”属性值可以取两类值:

(1)空值,表示该学生所在班级尚未选出班长 (2)非空值,该值必须是本关系中某个元组的学号值

2.3.4 用户定义的完整性

针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求

关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能

- 11 -

《数据库系统概论》 第二章 关系数据库 讲义

例:

课程(课程号 ,课程名,学分) “ 课程号” 属性必须取唯一值 非主属性“ 课程名” 也不能取空值 “ 学分” 属性只能取值{1 ,2 ,3 ,4}

2.4 关系代数 概述

传统的集合运算 专门的关系运算

2.4 关系代数 概述

传统的集合运算 专门的关系运算

1. 并(Union)

R和S 具有相同的目n(即两个关系都有n个属性) 相应的属性取自同一个域

R∪S

仍为n 目关系,由属于R 或属于S 的元组组成

R∪S = { t|t ? R∨t ?S }

2. 差(Difference)

R和S 具有相同的目n 相应的属性取自同一个域

- 12 -

《数据库系统概论》 第二章 关系数据库 讲义

R - S

仍为n 目关系,由属于R 而不属于S 的所有元组组成 R -S = { t|t?R∧t?S }

3. 交(Intersection)

R和S 具有相同的目n 相应的属性取自同一个域

R∩S 仍为n 目关系,由既属于R 又属于S 的元组组成

R∩S = { t|t ? R∧t ?S } R∩S = R –(R-S ) 交 (续)

4. 笛卡尔积(Cartesian Product)

严格地讲应该是广义的笛卡尔积(Extended Cartesian Product) R: n目关系,k1个元组 S: m目关系,k2个元组

R×S

列:(n+m ) 列元组的集合 元组的前n列是关系R的一个元组 后m列是关系S的一个元组 行:k1×k2 个元组

R×S = {tr ts |tr ?R ∧ ts?S }

2.4.2 专门的关系运算 先引入几个记号 (1) R,t?R,t[Ai]

设关系模式为R(A1,A2,?,An) 它的一个关系设为R

- 13 -

《数据库系统概论》 第二章 关系数据库 讲义

t?R表示t是R的一个元组

t[Ai]则表示元组t中相应于属性Ai的一个分量

(2) A,t[A], A

若A={Ai1,Ai2,?,Aik},其中Ai1,Ai2,?,Aik是A1,A2,?,An中的一部分,则A称为属性列或属性组。

t[A]=(t[Ai1],t[Ai2],?,t[Aik])表示元组t在属性列A上诸分量的集合。

A则表示{A1,A2,?,An}中去掉{Ai1,Ai2,?,Aik}后剩余的属性组。

(3) tr ts

R为n目关系,S为m目关系。

tr ?R,ts?S, tr ts称为元组的连接。

tr ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。

(4)象集Zx

给定一个关系R(X,Z),X和Z为属性组。 当t[X]=x时,x在R中的象集(Images Set)为: Zx={t[Z]|t ?R,t[X]=x}

它表示R中属性组X上值为x的诸元组在Z上分量的集合

x1在R中的象集

Zx1 ={Z1,Z2,Z3}, x2在R中的象集 Zx2 ={Z2,Z3}, x3 在R 中的象集 Zx3={Z1 ,Z3}

- 14 -

《数据库系统概论》 第二章 关系数据库 讲义

专门的关系运算(选择、投影、连接、除)

1. 选择(Selection)

1) 选择又称为限制(Restriction) 2) 选择运算符的含义

在关系R中选择满足给定条件的诸元组 σF(R) = {t|t?R∧F(t)= '真'} F:选择条件,是一个逻辑表达式,基本形式为: X1θY1

3) 选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算

[例1] 查询信息系(IS系)全体学生 结果:

[例2] 查询年龄小于20 岁的学生

σ

Sage < 20

σ

5 ='IS'

Sdept

= 'IS' (Student)

或 σ(Student)

(Student)

或 σ 结果:

4 < 20

(Student)

2. 投影(Projection) 1)投影运算符的含义

从R 中选择出若干属性列组成新的关系 πA(R) = { t[A] | t ?R }

A:R 中的属性列

- 15 -

《数据库系统概论》 第二章 关系数据库 讲义

2. 投影(Projection)

2 )投影操作主要是从列的角度进行运算

但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

[例3] 查询学生的姓名和所在系

即求Student关系上学生姓名和所在系两个属性上的投影 π

Sname,Sdept

(Student) (Student)

或 π结果:

2,5

[例4] 查询学生关系Student 中都有哪些系 π

3. 连接(Join) 1)连接也称为θ连接 2)连接运算的含义

从两个关系的笛卡尔积中选取属性间满足一定条件的元组

Sdept

(Student)

R ∞ S = { | tr ? R∧ts ?S∧tr[A]θts[B] }

A和B:分别为R和S上度数相等且可比的属性组 θ:比较运算符

连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组

- 16 -

《数据库系统概论》 第二章 关系数据库 讲义

3)两类常用连接运算 等值连接(equijoin)

什么是等值连接

θ为“=”的连接运算称为等值连接 等值连接的含义

从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:

R ∞ S = { | tr ?R∧ts ?S∧tr[A] = ts[B] }

自然连接(Natural join) 自然连接是一种特殊的等值连接

两个关系中进行比较的分量必须是相同的属性组 在结果中把重复的属性列去掉

自然连接的含义

R和S具有相同的属性组B

R ∞ S = { | tr ?R∧ts ?S∧tr[B] = ts[B] }

4)一般的连接操作是从行的角度进行运算。

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

[例5]关系R和关系S 如下所示: 等值连接 R ∞ S 的结果如下:

- 17 -

《数据库系统概论》 第二章 关系数据库 讲义

自然连接 R ∞ S 的结果如下: 外连接

如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。 左外连接

如果只把左边关系R 中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN 或LEFT JOIN) 右外连接

- 18 -

《数据库系统概论》 第二章 关系数据库 讲义

如果只把右边关系S 中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN 或RIGHT JOIN) 。

4. 除(Division)

给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。

R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。 R与S的除运算得到一个新的关系P(X), P是R中满足下列条件的元组在 X 属性列上的投影: 元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作: R÷S = {tr [X] | tr ? R∧πY (S) ? Yx }

Yx:x在R中的象集,x = tr[X]

2)除操作是同时从行和列角度进行运算

分析

在关系R中,A可以取四个值{a1,a2,a3,a4}

a1的象集为 {(b1,c2),(b2,c3),(b2,c1)} a2的象集为 {(b3,c7),(b2,c3)}

- 19 -

《数据库系统概论》 第二章 关系数据库 讲义

a3的象集为 {(b4,c6)} a4的象集为 {(b6,c6)} S在(B,C)上的投影为

{(b1,c2),(b2,c1),(b2,c3) } 只有a1的象集包含了S在(B,C)属性组上的投影 所以 R÷S ={a1}

5.综合举例

以学生-课程数据库为例 (P56)

[例7] 查询至少选修1号课程和3号课程的学生号码

首先建立一个临时关系K: 然后求:πSno,Cno(SC)÷K 综合举例(续) 例 7续 πSno,Cno(SC)

200215121象集{1,2,3} 200215122象集{2,3} K={1,3}

于是:πSno,Cno(SC)÷K={200215121}

[例 8] 查询选修了2 号课程的学生的学号。 π

Sno

(σ

Cno='2'

(SC ))

={ 200215121 ,200215122 }

- 20 -

《数据库系统概论》 第二章 关系数据库 讲义

[例9] 查询至少选修了一门其直接先行课为5号课程的 的学生姓名 π或 π或 π

[例10] 查询选修了全部课程的学生号码和姓名。 π 小结

关系代数运算 关系代数运算

并、差、交、笛卡尔积、投影、选择、连接、除 基本运算

并、差、笛卡尔积、投影、选择 交、连接、除

可以用5种基本运算来表达

引进它们并不增加语言的能力,但可以简化表达

关系代数表达式

关系代数运算经有限次复合后形成的式子

Sno,CnoSname

SnameSname

Cpno='5'

(Course SC Student))

Cpno='5'

(Course) SC π

Sno,Sname

(Student))

Sno

Cpno='5'

(Course) SC) π

Sno,Sname

(Student))

(SC)÷π

Cno

(Course) π

Sno,Sname

(Student)

- 21 -

《数据库系统概论》 第二章 关系数据库 讲义

典型关系代数语言

ISBL(Information System Base Language) 由IBM United Kingdom研究中心研制

用于PRTV(Peterlee Relational Test Vehicle)实验系统

2.5 关系演算 关系演算

以数理逻辑中的谓词演算为基础 按谓词变元不同 进行分类 1.元组关系演算:

以元组变量作为谓词变元的基本对象 元组关系演算语言ALPHA 2.域关系演算:

以域变量作为谓词变元的基本对象 域关系演算语言QBE

2.5.1 元组关系演算语言ALPHA 由E.F.Codd提出

INGRES所用的QUEL语言是参照ALPHA语言研制的 语句 检索语句 GET 更新语句

PUT,HOLD,UPDATE,DELETE,DROP 一、检索操作 语句格式:

GET 工作空间名 [(定额)](表达式1) [:操作条件] [DOWN/UP 表达式2] 定额:规定检索的元组个数

- 22 -

《数据库系统概论》 第二章 关系数据库 讲义

格式: 数字 表达式1:指定语句的操作对象 格式:

关系名| 关系名. 属性名| 元组变量. 属性名| 集函数 [,? ] 操作条件:将操作结果限定在满足条件的元组中 格式: 逻辑表达式 表达式2:指定排序方式

格式: 关系名. 属性名| 元组变量. 属性名[,? ]一、检索操作

(1)简单检索

GET 工作空间名 (表达式1)

[例1] 查询所有被选修的课程号码。 GET W (SC.Cno) [例2] 查询所有学生的数据。 GET W (Student)

(2)限定的检索 格式

GET 工作空间名(表达式1):操作条件

[例3] 查询信息系(IS) 中年龄小于20 岁的学生的学号和年龄 GET W (Student.Sno,Student.Sage): Student.Sdept='IS'∧ Student.Sage<20

(3)带排序的检索 格式

GET 工作空间名(表达式1)[:操作条件] DOWN/UP 表达式2

- 23 -

《数据库系统概论》 第二章 关系数据库 讲义

[例4]查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序 GET W (Student.Sno,Student.Sage):

Student.Sdept='CS‘ DOWN Student.Sage (4)带定额的检索 格式

GET 工作空间名(定额)(表达式1) [:操作条件] [DOWN/UP 表达式2] [例5] 取出一个信息系学生的学号。 GET W (1) (Student.Sno):

Student.Sdept='IS'

[例6] 查询信息系年龄最大的三个学生的学号及其年龄,结果按年龄降序排序。 GET W (3) (Student.Sno,Student.Sage): Student.Sdept='IS' DOWN Student.Sage (5)用元组变量的检索 元组变量的含义

表示可以在某一关系范围内变化(也称为范围变量Range Variable) 元组变量的用途

① 简化关系名:设一个较短名字的元组变量来代替较长的关系名。 ② 操作条件中使用量词时必须用元组变量。 定义元组变量

格式:RANGE 关系名 变量名 一个关系可以设多个元组变量 (6) 用存在量词的检索

操作条件中使用量词时必须用元组变量 [例8] 查询选修2号课程的学生名字。 RANGE SC X

GET W (Student.Sname): RANGE Course CX GET W (SC.Sno): CX (CX.Cno=SC.Cno∧CX.Pcno='6')

用存在量词的检索(续)

X(X.Sno=Student.Sno∧X.Cno='2')

[例9] 查询选修了这样课程的学生学号,其直接先行课是6号课程。

- 24 -

《数据库系统概论》 第二章 关系数据库 讲义

[例10]查询至少选修一门其先行课为6号课程的学生名字 RANGE Course CX

SC SCX GET W (Student.Sname): 前束范式形式:

GET W (Student.Sname):

(7)带有多个关系的表达式的检索

[例11] 查询成绩为90分以上的学生名字与课程名字。 RANGE SC SCX

GET W(Student.Sname,Course.Cname): SCX (SCX.Grade≥90 ∧

SCX.Sno=Student.Sno∧ Course.Cno=SCX.Cno) (8)用全称量词的检索

[例12] 查询不选1号课程的学生名字 RANGE SC SCX

GET W (Student.Sname):

SCX (SCX.Sno≠Student.Sno∨SCX.Cno≠'1') 用存在量词表示: RANGE SC SCX

GET W (Student.Sname): ?

(9)用两种量词的检索

[例13] 查询选修了全部课程的学生姓名。 RANGE Course CX

SC SCX GET W (Student.Sname):

SCX (SCX.Sno=Student.Sno∧SCX.Cno='1')

SCX CX.Cno=SCX.Cno∧CX.Pcno='6')

SCX (SCX.Sno=Student.Sno∧ CX (CX.Cno=SCX.Cno∧CX.Pcno='6'))

CX (SCX.Sno=Student.Sno∧

- 25 -

《数据库系统概论》 第二章 关系数据库 讲义

CX

SCX (SCX.Sno=Student.Sno∧

SCX.Cno=CX.Cno)

(10)用蕴函(Implication)的检索

[例14] 查询最少选修了200215122 学生所选课程的学生学号 RANGE Couse CX

SC SCX SC SCY GET W (Student.Sno): CX( (SCX.Sno=‘200215122'

(11)聚集函数

常用聚集函数(Aggregation function)或内部函数(Build-in function) 聚集函数(续)

[例15] 查询学生所在系的数目。

GET W ( COUNT(Student.Sdept) ) COUNT 函数在计数时会自动排除重复值。 [例16] 查询信息系学生的平均年龄

GET W (AVG(Student.Sage): Student.Sdept='IS’ )

二、更新操作 (1) 修改操作 (2) 插入操作 (3) 删除操作 (1)修改操作步骤

① 用HOLD语句将要修改的元组从数据库中读到工作空间中

HOLD 工作空间名(表达式1)[:操作条件 ] HOLD语句是带上并发控制的GET语句 ② 用宿主语言修改工作空间中元组的属性

SCY(SCY.Sno=Student.Sno

SCY.Cno= CX.Cno))

SCX ∧

SCX.Cno=CX.Cno)

- 26 -

《数据库系统概论》 第二章 关系数据库 讲义

③ 用UPDATE语句将修改后的元组送回数据库中 UPDATE 工作空间名 修改操作(续)

[例17] 把200215121学生从计算机科学系转到信息系。 HOLD W (Student.Sno, Student.Sdetp): Student.Sno=‘200215121' (从Student关系中读出95007学生的数据) MOVE 'IS' TO W.Sdept

(2)插入操作 步骤

① 用宿主语言在工作空间中建立新元组 ② 用PUT 语句把该元组存入指定关系中 PUT 工作空间名 (关系名)

PUT语句只对一个关系操作,关系演算中的聚集函数

[例18] 学校新开设了一门2学分的课程“计算机组织与结构”,其课程号为8,直接先行课为6号课程。插入该课程元组 MOVE '8' TO W.Cno

MOVE '计算机组织与结构' TO W.Cname MOVE '6' TO W.Cpno MOVE '2' TO W.Ccredit PUT W (Course)

(用宿主语言进行修改)

(把修改后的元组送回Student关系)

UPDATE W

- 27 -

《数据库系统概论》 第二章 关系数据库 讲义

(3)删除操作 步骤

① 用HOLD语句把要删除的元组从数据库中读到工作空间中 ② 用DELETE语句删除该元组 DELETE 工作空间名

[例19] 200215125学生因故退学,删除该学生元组 HOLD W (Student): Student.Sno=‘200215125' DELETE W

[例20] 将学号200215121改为200215126

HOLD W (Student): Student.Sno=‘200215121' DELETE W

MOVE ‘200215126' TO W.Sno MOVE '李勇' TO W.Sname MOVE '男' TO W.Ssex MOVE '20‘ TO W.Sage MOVE 'CS' TO W.Sdept PUT W (Student)

[例21] 删除全部学生

HOLD W (Student) DELETE W

为保证参照完整性 ,删除Student中元组时相应地要删除SC中的元组 HOLD W (SC) DELETE W

小结:元组关系演算语言ALPHA

- 28 -

《数据库系统概论》 第二章 关系数据库 讲义

检索操作 GET

GET 工作空间名 [(定额)](表达式1) [:操作条件] [DOWN/UP 表达式2] 插入操作

建立新元组--PUT 修改操作

HOLD--修改--UPDATE 删除操作 HOLD--DELETE

2.5.2 域关系演算语言QBE 一种典型的域关系演算语言 由M.M.Zloof提出

以元组变量的分量即域变量作为谓词变元的基本对象

QBE :Query By Example 基于屏幕表格的查询语言

查询要求:以填写表格的方式构造查询 用示例元素(域变量)来表示查询结果可能的情况 查询结果:以表格形式显示 QBE操作框架

一、检索操作 1.简单查询

[例1]求信息系全体学生的姓名 操作步骤为: (1)用户提出要求; (2)屏幕显示空白表格; 简单查询(续)

(3)用户在最左边一栏输入要查询的关系名Student;

- 29 -

《数据库系统概论》 第二章 关系数据库 讲义

(4)系统显示该关系的属性名

(5)用户在上面构造查询要求

李勇是示例元素,即域变量

(6)屏幕显示查询结果 构造查询的几个要素

示例元素 即域变量 一定要加下划线

示例元素是这个域中可能的一个值,它不必是查询结果中的元素 打印操作符P. 实际上是显示 查询条件

可使用比较运算符>,≥,<,≤,=和≠ 其中=可以省略

[例2] 查询全体学生的全部数据 简单查询(续)

显示全部数据也可以简单地把P.操作符作用在关系名上。 2. 条件查询

[例3] 求年龄大于19 岁的学生的学号

条件查询(与条件)

[例4] 求计算机科学系年龄大于19 岁的学生的学号。

方法(1) :把两个条件写在同一行上 条件查询(与条件)

方法(2):把两个条件写在不同行上,但使用相同的示例元素值 条件查询(与条件)

[例5] 查询既选修了1号课程又选修了2号课程的学生的学号。 条件查询(或条件)

- 30 -

《数据库系统概论》 第二章 关系数据库 讲义

[例6] 查询计算机科学系或者年龄大于19 岁的学生的学号。

条件查询(多表连接)

[例7] 查询选修1号课程的学生姓名。

条件查询(非条件)

[例8] 查询未选修1号课程的学生姓名

[例9] 查询有两个人以上选修的课程号。 3. 聚集函数 常用聚集函数:

函数名 CNT SUM AVG MAX MIN

[例10] 查询信息系学生的平均年龄。 4.对查询结果排序 升序排序:

功能 对元组计数 求总和 求平均值 求最大值 求最小值 - 31 -

《数据库系统概论》 第二章 关系数据库 讲义

对查询结果按某个属性值的升序排序,只需在相应列中填入“AO.” 降序排序:

按降序排序则填“DO.” 多列排序:

如果按多列排序,用“AO(i).” 或“DO(i).” 表示,其中i 为排序的优先级,i 值越小,优先级越高 对查询结果排序(续)

[例11] 查全体男生的姓名,要求查询结果按所在系升序排序,对相同系的学生按年龄降序排序。

二、更新操作 1.修改操作

[例12] 把200215121 学生的年龄改为18 岁。 方法(1) :将操作符“U.” 放在值上

修改操作(续)

方法(2): 将操作符“U.”放在关系上

码200215121标明要修改的元组。 “U.”标明所在的行是修改后的新值。

由于主码是不能修改的,所以系统不会混淆要修改的属性。

修改操作(续)

[例13] 把200215121学生的年龄增加1岁

- 32 -

《数据库系统概论》 第二章 关系数据库 讲义

操作涉及表达式,必须将操作符“U.”放在关系上

修改操作(续)

[例14] 将计算机系所有学生的年龄都增加1 岁 2.插入操作

[例15] 把信息系女生200215701 ,姓名张三,年龄17 岁存入数据库中。

3. 删除操作

[例17] 删除学生200215089

为保证参照完整性,删除200215089学生前,先删除200215089学生选修的全部课程

2.6 小结

关系数据库系统是目前使用最广泛的数据库系统 关系数据库系统与非关系数据库系统的区别: 关系系统只有“ 表” 这一种数据结构;

非关系数据库系统还有其他数据结构,以及对这些数据结构的操作

关系数据结构 关系 域 笛卡尔积 关系

关系,属性,元组

- 33 -

《数据库系统概论》 第二章 关系数据库 讲义

候选码,主码,主属性 基本关系的性质

关系模式 关系数据库 关系操作 查询

(选择、投影、连接、除、并、交、差) 数据更新

(插入、删除、修改)

关系的完整性约束 实体完整性 参照完整性 外码

用户定义的完整性

关系数据语言 关系代数语言 关系演算语言

元组关系演算语言 ALPHA 域关系演算语言 QBE

- 34 -

本文来源:https://www.bwwdw.com/article/jg43.html

Top