第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容...

73
第二章 关系数据库 1)什么是关系数据库? 2)数据模型包含哪些要素?

Transcript of 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容...

Page 1: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

第二章 关系数据库

1)什么是关系数据库?

2)数据模型包含哪些要素?

Page 2: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

本章内容

关系数据模型的三大要素:

1. 数据结构

2. 数据操作

3. 数据的完整性约束条件

Page 3: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

§2.1 关系数据模型概述

关系数据库:是建立在关系数据模型基础上的数据库系统。

关系模型:基于数学理论。信息代数、集合论等

关系数据库:用数学的方法来处理数据库中的数据

Page 4: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据模型 (数据结构)

单一的数据结构

扁平的二维表

以关系的形式来描述现实世界

实体(学生、课程)

实体间的联系(学生选课表)

Page 5: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据模型 (操作)

关系操作特点 集合操作

非过程化

用户不必关心路径

关系数据操作语言 关系代数

关系演算

SQL(结构化的查询语言)

Page 6: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据模型 (续)

完整性约束

实体完整性

参照完整性

用户定义的完整性

Page 7: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

§2.2 关系数据结构的定义

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

关系模型要求域必须是原子数据的集合

Page 8: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

笛卡儿积

给定一组域D1,D2,…,Dn,这些域中可以有相同的。 D1,D2,…,Dn

的笛卡儿积为:

D1×D2×…×Dn = {(d1,d2,…,dn) |

di∈ Di, i=1,2,…,n}

其中,每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组

Page 9: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

关系

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

R(D1,D2,…,Dn,)

关系是笛卡儿积的子集,是一张二维表,表的每行对应一个元组,列对应一个域,给每个列取名属性名以示区别

Page 10: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

若关系中的某一组属性的值能唯一地标识一个元组,则称该属性组为候选码。

候选码的超集为超码。

候选码之一可被选作主码(PrimaryKey,PK)。

候选码中的属性称为主属性

Page 11: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

基本关系(基本表)

实际存在的表

实际存储数据的逻辑表示

查询表

查询结果对应的表

视图表

由基本表或其他视图表导出的表

虚表,无实际存储的物理表相对应

关系有三种类型

Page 12: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

基本表的性质

列是同质的,来自同一个域

不同的属性具有不同的属性名,但可以来自同一个域

列的顺序无关

行的顺序无关

分量(每个元组中的每个属性)必须取原子值

任意两个元组不能完全相同*

Page 13: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

关系模式

关系模式是采用关系数据模型对数据的描述

是型

关系

是相应关系模式的值(实例)

是相应实体集在某一时刻的快照

Page 14: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

关系模式

R(U,D,dom,F)

R(U)

R(A1,A2,…,An)

关系

是关系模式在某一时刻的状态或内容。

关系模式是静态的,稳定的,而关系是动态的,随时间变化的。

U: 属性名集合 D: U中属性域的集合 Dom: 属性到域的映像集合 F: 属性间数据的依赖关系

Page 15: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系数据结构的定义

关系数据库

基于关系数据模型的数据库RDB

关系数据库管理系统RDBMS

关系数据库模式

关系数据库中所有关系模式的集合

关系数据库的值

关系数据库在某一时刻的快照

Page 16: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

§2.3 关系的完整性

对关系的某种约束条件

关系模型的完整性约束

实体完整性

参照完整性

用户定义的完整性

Page 17: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——实体完整性

规则

主属性(组成主码的属性)不能取空值(Null)

NULL

不知道、未提供、短缺

不能简单地认为没有

student(sno,sname,ssex)

不能取NULL

Page 18: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——参照完整性

是关于联系的约束

关系与关系间的引用

引用

被引用

例:学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

引用

Page 19: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——参照完整性

外码(Foreign Key)

设F是基本关系R中的一个或一组属性(但不是R

的码),如果F与基本关系S的主码KS相对应,则称F是基本关系R的外码。R为参照关系,S为被参照关系

例:学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

引用

外码

参照关系(从表)

被参照关系(主表)

Page 20: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——参照完整性

参照完整性规则

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码相对应,则对于R中每个元组在F上的值必须为:

或者取空值(NULL)

或者等于S中某个元组的主码值

学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

Page 21: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——参照完整性

参照完整性的各种违例情况

从表

插入从表元组,且外键不为Null

修改从表外键,且不为Null

主表

删除主表元组,其已被参照

修改主表主键,其已被参照

删除主表

Page 22: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——参照完整性

参照可能发生在同一个关系中

非主属性引用主码属性

例:学生(学号,姓名,性别,班长)

引用

Page 23: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系的完整性——用户定义的完整性

特殊的约束条件

与特定的应用相关

Page 24: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

§2.4 关系代数

属于关系操作的一种

关系代数是一种抽象的查询语言

通过对关系的运算来表达查询操作

运算对象、结果均为关系

运算

集合运算、关系运算、比较运算、逻辑运算

Page 25: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——运算符

Page 26: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——集合运算

集合(Set)

无重复、顺序无关

包(Bag)

可重复、顺序无关

列表(List)

可重复、顺序相关

集合运算

并、交、差、广义笛卡儿积

二目运算

Page 27: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——并Union (∪)

R和S的并,R∪S,是在R或S或两者中的元素的集合

一个元素在并集中只出现一次

R和S必须同类型(属性集相同、次序相同,但属性名可以不同)

R∪S

Page 28: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——并Union (∪)

Page 29: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——交Intersect (∩)

R和S的交,R∩S,是在R和S中都存在的元素的集合

一个元素在交集中只出现一次

R和S必须同类型(属性集相同、次序相同,但属性名可以不同)

R∩S

Page 30: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——交Intersect (∩)

Page 31: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——差Minus (-)

R和S的差,R-S,是在R中而不在S中的元素的集合 。[ R∩S=R-(R-S) ]

R和S必须同类型(属性集相同、次序相同,但属性名可以不同)

R - S

Page 32: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——差Minus (-)

Page 33: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——笛卡儿积(×)

关系R、S的笛卡儿积是两个关系的元组对的集合所组成的新关系

R×S:

属性是R和S的组合(有重复)

元组是R和S所有元组的可能组合

是R、S的无条件连接,使任意两个关系的信息能组合在一起

Page 34: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

集合运算——笛卡儿积(×)

Page 35: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——专门的关系运算

选择、投影、连接、除法

Page 36: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——选择(σ)

从关系R中选择符合条件的元组构成新的关系

σF(R),表示从R中选择满足条件(使逻辑表达式F为真)的元组

行的运算

(Where)

Page 37: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——选择(σ)

例: σssex = ‘男’ AND sdep = ‘IS’(Student)

Page 38: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——投影(π)

从关系R中选择若干属性组成新的关系

πA1,A2,…,An(R),表示从R中选择属性集

A1,A2,…,An组成新的关系

列的运算

(Select)

投影运算的结果中,也要去除可能的重复元组

Page 39: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——投影(π)

例: πssex,sage(student)

Page 40: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——条件连接(θ)

从R×S的结果集中,选取在指定的属性集上满足θ条件的元组,组成新的关系

θ是一个关于属性集的逻辑表达式

R θS

Page 41: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——条件连接(θ)

Page 42: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——等值连接(θ)

R S

R.B=S.B

Page 43: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——自然连接( )

从R×S的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系

R、S的公共属性

属性集的交集(名称及类型相同)

公共属性在结果中只出现一次

例: student sc

Page 44: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——自然连接( )

R S

Page 45: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——外连接

A B C E

a1 b1 5 3

a1 b2 6 7

a2 b3 8 10

a2 b3 8 2

a2 b4 12 Null

null b5 null 2

R 和 S 的外连接:

左外连接:只保留R关系的悬浮元组

右外连接:只保留S关系的悬浮元组

Page 46: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系运算——除(÷)

A B C

a1 b1 c2

a1 b2 c3

a1 b2 c1

a2 b3 c7

a2 b2 c3

a3 b4 c6

a4 b6 c6

Page 47: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例

Page 48: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例1

查询选修了2号课程的学生的学号

课程号、学号←SC表

Page 49: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例1

2号课程的选课情况

σcno=‘2’(SC)

Page 50: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例1

选修2号课程的学号

πsno(σcno=‘2’(SC))

Page 51: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

列出选修‘数学’课的学生的学号、姓名以及成绩

学号、姓名←Student表

课程名称←Course表

成绩←SC表

Student← SC→Course

sno cno

Page 52: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

‘数学’课

σcname = ‘数学’ (Course)

Page 53: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

Page 54: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

‘选修‘数学’课的记录

SC (σcname = ‘数学’ (Course))

Page 55: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

选修‘数学’的学生记录

Student (SC (σcname = ‘数学’ (Course)))

Page 56: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

选修‘数学’的学生的学号、姓名、成绩

πsno,sname,gradeStudent (SC (σcname = ‘数学’ (Course)))

Page 57: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数——实例2

Page 58: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

关系代数是用对关系的运算来表示查询

关系演算是用谓词来表达查询

分为:

元组关系演算语言: Quel, Aplha

域关系演算语言: QBE

关系演算

Page 59: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

以元组变量作为谓词演算的基本对象.

语句格式:

操作语句 工作空间(表达式): 操作条件

表达式说明要查询的结果,关系名或属性名

操作条件是一个逻辑表达式,表示要满足的条件

元组关系演算语言 ALPHA

Page 60: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

查询信息系中年龄小于20岁的学生的学号和年龄.

GET W (student.sno, student.sage): student.sdept=‘IS’ AND student.sage<20

ALPHA 实例

Page 61: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

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

RANGE course CX

GET W(sc.sno): 存在CX (CX.cno=sc.cno AND CX.peno=‘6’ )

ALPHA 实例: 使用元组变量

元组变量的好处: 简化关系名, 可以使用量词

存在量词,全称量词: 表达能力扩展

Page 62: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

查询选修了所有课程的学生名字

RANGE course cx

sc scx

GET W(student.sname): 任意cx 存在scx(scx.sno=student.sno AND scx.cno=cx.cno)

ALPHA 实例: 使用全称量词

Page 63: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

查询90分以上学生名字和课程名字

RANGE sc scx

GET W (student.sname, course.cname): 存在scx(scx.grade>=90 AND scx.sno=student.sno AND course.cno=SCX.cno)

ALPHA 实例: 多个关系的查询

Page 64: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

查询信息系学生的平均年龄

Get W (AVG(student.sage): student.sdept=‘IS’)

标准函数库供用户选用

聚集函数有:count, sum, max,min,avg

ALPHA 实例: 聚集函数

Page 65: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

以元组变量的分量作为谓词的变元。

求计算机系年龄大于19岁的学生学号。

域演算语言QBE : 与条件

student sno sname ssex sage sdept

P.95001 >19 CS

查询条件 操作命令

示例元素下划线

Page 66: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

求计算机系或者年龄大于19岁的学生学号。

域演算语言QBE:或条件

student sno sname ssex sage sdept

P.95001 CS

student sno sname ssex sage sdept

P.95002 >19

Page 67: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

查询选修1号课程的学生姓名

域演算语言QBE: 多个关系查询

Student sno sname ssex sage sdept

95001 P. XYZ

SC sno cno Grade

95001 1

Page 68: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

查询信息系学生的平均年龄

域演算语言QBE: 聚集函数

student sno sname ssex sage sdept

p.AVG.ALL IS

Page 69: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

课堂作业

用关系代数,alpha, QBE表示下述查询: S(sno,sname,status,city) 供应商

P(pno,pname,color,weight) 零件

J(jno,jname,city) 工程项目

SPJ(sno,pno,jno,qty)

求供应工程j1红色零件的供应商代码(sno)

求没有使用天津供应商生产的红色零件的工程项目代码(jno)

Page 70: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件
Page 71: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

求没有使用天津供应商生产的红色零件的工程项目代码(jno)

第一步:查找使用天津供应商生产的红色零件的工程项目代码

Π jno ( Ϭ city=‘天津’ (S) SPJ Ϭ color=‘red’ (P) )

第二步:没有使用

Π jno (J) - Π jno ( Ϭ city=‘天津’(S) SPJ Ϭ color=‘red’ (P) )

第2题 关系代数

Page 72: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

第2题 Alpha 答案

Page 73: 第二章 关系数据库 - SJTUli-fang/lecture2 for2.pdf · 本章内容 针对关系数据模型的三要素进行论述 1. 数据结构 2. 数据操作 3. 数据的完整性约束条件

第2题 QBE 答案: