当前课程知识点:数据库概论 > 第二章 关系运算 > 2.2 自然关系运算1 > 自然关系运算1
各位同学大家好
我是来自云南大学软件学院的张璇
下面我们介绍一下关系代数里面的
自然关系运算
自然关系运算也包含四项基本的运算
分别是投影
选择
连接和除运算
投影运算使用方括号
选择运算使用where运算符号
连接运算的符号有点类似于无穷的符号
或者用JOIN描述
除法运算符号就是用数值运算的除法符号
也可以用英文DIVIDE BY描述
所有这八项关系代数运算放在一起使用时
是有一个优先级顺序的
优先级由高到低分别是投影
选择
乘积
连接和除法
交
并和差
当然
我们也可以使用括号帮助我们
限定运算优先级
我们同样一一来说明各项自然关系运算
首先看投影
顾名思义
就是把关系表中的部分列投影出来
例如CUSTOMERS[cname]
方括号就是投影运算符号
因此
这个运算是把顾客表CUSTOMERS中
顾客姓名cname投影出来
结果是得到只有这个列构成的数据表
很明显
投影操作是帮助我们选取数据表中
我们需要使用的那些属性列
下面
我们看看选择运算
选择运算使用where运算符
表示从数据表中选择出
满足where指定条件的数据
当然
如果条件不止一个
多个条件之间可以使用AND和OR运算
AND自然表示同时满足两个条件
或多个条件
而OR则表示满足多个条件之一
也可以使用NOT运算
排除一个或多个条件后选择需要的数据
我们来举个例子
在CAP数据库中
假设我们需要找出所有在Kyoto的顾客
这里的条件是顾客所在的城市是Kyoto
那么关系代数这么写
customers where city=‘kyoto’
这里
Kyoto是字符串
所以用单引号括起来
where表示条件
得到的结果就是所有在Kyoto的顾客数据
正如我们刚刚说的
条件可能会多于一个
例如
我们要找仓库在Dallas
成本大于50美分的商品
那么就在Products数据表中
使用where运算
设置条件第一个city 等于Dallas
第二个price大于0.50
它们用AND进行连接
就可以了
好
我们现在介绍了所有的集合运算
和自然关系运算中的投影
选择运算
现在我们就可以完成一些
稍微复杂一点的查询操作了
来看一个例子
假设我们需要找出一些城市
在这些城市
要么我们的顾客享有低于10%的折扣
要么销售代理商的佣金低于6%
大概的目的是要找出那些顾客享受折扣率低
代理商佣金也比较低的城市
我们怎么使用关系代数完成查询操作呢
首先
目标是找出城市
所以
一定会用到投影运算
从CUSTOMERS和AGENTS中
投影出city属性列
投影出city属性列
其次
分别针对顾客和销售代理商
给出了选择的条件
那么
我们就需要使用Where运算
最后
顾客表和销售代理商表
分别按照选取条件
选取数据并投影出单独的city列
之后
我们把这些列合并在一起
这时候
使用集合运算里面的并运算就行了
就按照这样的分析
我们这么来写运算
(CUSTOMERS where discnt<10)
就是找出折扣小于10%的顾客
然后投影city
用方括号括起来
就知道了这些顾客所在的城市
同样的
(AGENTS where percent<6)
找出佣金小于6%的销售代理商数据
并投影city
方括号把city括起来
得到了满足条件的代理商
所在的城市
最后
用并运算将结果合并
运算就完成了
自然关系运算的内容
相对较为丰富一些
上面
我们介绍了其中的投影和选择运算
使用这两项运算
再加上集合运算
我们已经可以完成
关系代数的基本运算了
不过
在实际使用过程中
我们常常需要把数据表
关联起来使用
因此
下面会为大家介绍连接运算
谢谢大家
-数据库概述
--Video
-导论--数据库概述
-1.1 数据库基础
--Video
-第一章 数据库基础--1.1 数据库基础
-2.1 CAP数据库
--CAP数据库
-第二章 关系运算--2.1 CAP数据库
-2.2 自然关系运算1
-- 自然关系运算1
-第二章 关系运算--2.2 自然关系运算1
-2.3 自然关系运算2
--自然关系运算2
-第二章 关系运算--2.3 自然关系运算2
-3.1 SQL概述
-- SQL概述
-3.1 SQL概述--作业
-3.2 数据定义DDL
--数据定义DDL
-3.2 数据定义DDL--作业
-3.3 SQL数据更新DML
-3.3 SQL数据更新DML--作业
-3.4 复杂SQL查询操作1
-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1
-3.5 复杂SQL查询操作2
-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2
-4.1 数据完整性
-4.1 数据完整性--作业
-4.2 完整性约束
--完整性约束
-4.2 完整性约束--作业
-4.3 外键约束
--外键约束
-4.3 外键约束--作业
-4.4 触发器
--触发器
-4.4 触发器--作业
-4.5 视图
--视图
-4.5 视图--作业
-4.6 安全性
--安全性
-4.6 安全性--作业
-5.1 索引
--Video
-5.2 B+树索引
--Video
-6.1 函数依赖
--Video
-6.2 Armstrong公理
--Video
-6.3 无损分解
--Video
-6.4 范式举例
--Video
-6.5 三种范式
--Video
-6.5 三种范式--作业
-7.1-E-R模型概述
--E-R模型概述
-7.2 E-R模型详解
--Video
-7.3 E-R模型的拓展
--Video
-7.4 E-R模型实例分析
--Video
-8.1 事务的ACID性质介绍
--ACID介绍
-8.1 事务的ACID性质介绍--作业
-8.2 事务经历
--事务经历
-8.2 事务经历--作业
-8.3 可串行化调度和前趋图
-8.3 可串行化调度和前趋图--作业
-8.4 两阶段封锁
--两段锁协议
-8.4 两阶段封锁--作业
-8.5 隔离级别
--隔离级别
-8.5 隔离级别--作业
-8.6 事务恢复
--事务恢复
-8.6 事务恢复--作业
-9.1 数据库使用介绍
--数据库使用介绍
-9.2 Java访问数据库
-9.2 Java访问数据库--作业
-10.1 数据库新技术概述
--Video