数据库学习笔记二( 关系数据库)

第二章 关系数据库
一、SQL
关系代数+关系演算


二、关系
1.域:变量有效范围
2.笛卡尔乘积:域0X域1X域2X...X域N-1
3.关系:D1XD2XD3..Dn的子集,R(D1,D2,...,Dn)
4.键:由一个或几个属性组成
a 超键:唯一标示元组的属性集
b 候选键:无多余属性的超键
c 主键:用户选作元组表示的一个候选键
d 外键:非本关系的主键
5.关系性质
a 不同的列可以出自一个同一个域,每一个列为一个属性
b 列的顺序可以任意交换
c 任意两个元组不能完全相同
d 行顺序可以任意交换
e 分量原子性:事务的执行要么成功执行,要么全身而退,什么都不执行。


三、关系模式
模式名、属性名、值域名、模式主键


四、关系代数运算符
并U、广义笛卡尔积X、连接∞、大于等于≥等于=;
差-、选择σ、除÷、小于<不等于≠;
交∩、投影Π、大于﹥、小于等于≤;
非┐、与Λ、或V


五、广义笛卡尔乘积
R:k1元组,S:k2元组;RXS有k1Xk2元组。


六、
选择:σ_F(R)={t|t属于R且F(t)=true}
投影:Π_{i1,i2,...,im}={t|t=<t_{i1,i2,...,im}>且<t_{i1},t_{i2},...,t_N>属于R}
连接:R∞S={t|<t^r,t^s>且t^r属于R,t^s属于S,且t^r[A]与t^s[B]满足规定关系}
自然连接,在连接中把重复属性去掉
除法:(R÷S):R中所有有S属性的元组的剩余属性集。
假设有两个关系,R(a,b,c)和T(b,c),R中有所有T中(b,c)元组对应的a。
  使用投影、笛卡尔积和集合的差,表示R÷T
  R÷T = πa(R) - πa[ πa(R) × T – R ] 
  SQL: 
  select a from R 
  minus( 
  select a from( 
  select * from (select a from R), T 
  minus 
  select * from R 
  ) 
  )


七、举例
数据库三个关系:
学生(学号、姓名、性别、年龄、专业)
课程(课程号、课程名、学分、先行课程号)
成绩(学号、课程号、成绩)
1、所有年龄小于20的学生
σ_{性别='男生'且年龄<20}(学生)
2、查询所有女学生的姓名和年龄
Π_{姓名,年龄}(σ_{性别=女}(学生))
3、选修课为C2或C4的学生学号
Π_{学号}(σ_{课程号=C2或课程号=C4}(成绩))
4、不作为其他课程先行课程的课程号
Π_{课程号}(课程)-Π_{先行课程号}(课程)
5、查询计算机专业和机械专业学生的情况
(σ_{专业=计算机}(学生))U(σ_{专业=机械}(学生))
6、包括学生学号、课程名称、学分和成绩的学生成绩单
Π_{学号、课程名、学分、成绩}(课程∞成绩)
7、查询选修课程为C2的学生学号与姓名
Π_{学号、姓名}(σ_{课程号=C2}(学生∞成绩))
8、查询不选课为C2的学生姓名与年龄
Π_{姓名、年龄}(学生)-Π_{姓名、年龄}(σ_{课程号=C2}(学生∞成绩))

9、查询课程名为数据库的学生及学号

Π_{学号}(Π_{课程号}(σ_{课程=数据库}(课程))∞成绩)∞Π_{学号,姓名}(学生)
10、查询选修全部课程的学生名单
Π_{姓名}(Π_{学号、课程号}(成绩)÷Π_{课程号}(课程))∞Π_{学号,姓名}(学生)
11、查询先行课程包括了操作系统课程先行课程的课程号
Π_{课程号、先行课程号}÷Π_{先行课程号}(σ_{课程名=操作系统}(课程))
12、查询所有学科均包含学生S3所学课程的学生学号及姓名
Π_{学号、姓名}(学生)∞Π_{学号、课程}(成绩)÷Π_{课程号}(σ_{学号=S3}(成绩))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值