关系数据库——关系

(1)关系的性质

每个属性都必须是不可再分的数据项。
每个属性都具有相同的数据类型。
关系中不允许出现相同的属性名
关系中不允许有完全相同的元组
关系中元组的次序无关紧要
关系中属性的次序无关紧要
在这里插入图片描述

(2)关系运算

传统的关系运算:并、交、差、笛卡尔积
专门的关系运算:选择、投影、连接。

选择:从的角度去选
投影:从的角度去选
连接

交叉连接(CROSS JOIN)

:也叫笛卡尔积
语句1:隐式的交叉连接,没有CROSS JOIN。
SELECT O.ID,C.ID
FROM O,C
WHERE O.ID=1;
语句2:显式的交叉连接,使用CROSS JOlN。
SELECT O.ID,C.ID
FROM O CROSS JOIN C
WHERE O.ID=1;
(显式就是有CROSS JOlN,隐式就没有)

外连接(OUTER JOIN)

左外连接(LEFT OUTER JOIN):左外连接还返回左表中不符合连接条件单符合查询条件的数据行。
右外连接(RIGHT OUTER JOIN):右外连接还返回右表中不符合连接条件单符合查询条件的数据行。
全外连接(FULL OUTER JOIN):全外连接还返回左表中不符合连接条件单符合查询条件的数据行,并且还返回右表中不符合连接条件单符合查询条件的数据行。

内连接

第一种写法:(只使用where
select t.teacher_name, s.student_name
from teacher t,student s
where t.id = s.teacher_id;

第二种写法:(join … on…
select t.teacher_name, s.student_name
from teacher t join student s
on t.id = s.teacher_id;

第三种写法:(inner join … on…
select t.teacher_name, s.student_name
from teacher t inner join student s
on t.id = s.teacher_id;

自连接

自连接,连接的两个表都是同一个表
SELECT a., b. FROM table_1 a,table_1 b WHERE a.[name] = b.[name]

等值连接(相等连接)

关系R、S,取两者笛卡尔积中属性值相等的元组
SELECT XSB.* , CJB.*
FROM XSB , CJB
WHERE XSB.学号 = CJB.学号
使用”=”关系将表连接起来的查询,相等就行,其查询结果中列出被连接表中的所有列,包括其中的重复列

自然连接

SELECT XSB.* , CJB.课程号, CJB.成绩
FROM XSB natural join CJB
WHERE XSB.学号= CJB.学号
条件:
1、两个表有共同属性(列),还会把重复属性去掉
2、等值连接后去掉重复值

等值连接和自然连接的区别:

等值连接不要求相等属性值的属性名相同**(a.id=b.cid)可以有重复值
自然连接要求相等属性值的属性名必须相同
(a.id=b.id)**,不可以有重复值

(3)关系完整性

实体完整性(Entity Integrity)
参照完整性(Referential Integrity)
自定义完整性(User defined Integrity)

实体完整性规则:指关系的主属性不能取空值(NULL),并且不允许两个元组的关键字值相同。(主键不能为空,两个数组的数值不能相同)
参照完整性规则:定义两个关系之间的引用规则。(主键和外键)
用户自定义完整性规则:用户对数据必须满足的语义要求作出规定。(自己定义check约束,年龄必须在多少多少以内)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值