数据库关系代数表达式学习

2023-05-16

一、关系代数的9种操作:
 
    关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
 
五个基本操作:
    并(∪)、差(-)、笛卡尔积(×)、投影(π)、选择(σ)
 
四个组合操作:
    交(∩)、联接(等值联接)、自然联接(RcrossS)、除法(÷) 
注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
 
 
二、关系代数表达式:
 
    由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
 
 
三、举例说明:
 
    设教学数据库中有3个关系:

    学生关系S(SNO,SNAME,AGE,SEX)
    学习关系SC(SNO,CNO,GRADE)
    课程关系C(CNO,CNAME,TEACHER)
 
 
(1) 检索学习课程号为C2的学生学号与成绩
------------------------------------
SELECT SNO,GRADE
  FROM SC
WHERE CNO='C2'
------------------------------------
π SNO,GRADE(σCNO='C2'(SC))
************************************
 
 
(2) 检索学习课程号为C2的学生学号与姓名
------------------------------------
SELECT SC.SNO,S.SNAME
  FROM SC,S
WHERE SC.SNO=S.SNO
   AND SC.CNO='C2'
------------------------------------
π SNO,SNAME(σCNO='C2'(ScrossSC))
此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。
----
π SNO,SNAME(S)crossπSNO(σCNO='C2'(SC)))
自然连接的右分量为"学了C2课的学生学号的集合"。
此表达式比前一个表达式优化,执行起来要省时间、省空间。
************************************
 
 
(3) 检索选修课程名为MATHS的学生学号与姓名 
------------------------------------
SELECT SC.SNO,S.SNAME
  FROM SC,S,C
WHERE SC.SNO=S.SNO
   AND SC.CNO=C.CNO
   AND C.CNAME='MATHS'
------------------------------------
π SNO,SANME(σCNAME='MATHS'(ScrossSCcrossC))
************************************
 
 
(4) 检索选修课程号为C2或C4的学生学号
------------------------------------
SELECT SNO
  FROM SC
WHERE CNO='C2'
    OR CNO='C4'
------------------------------------
π SNO(σ CNO='C2'∨CNO='C4'(SC))
************************************
 
 
(5) 检索至少选修课程号为C2或C4的学生学号
------------------------------------
SELECT SA.SNO
  FROM SC AS SA,SC AS SB
WHERE SA.SNO=SB.SNO
   AND SA.CNO='C2'
   AND SB.CNO='C4'
------------------------------------
π 1(σ1=4∧2='C2'∧5='C4'(SC×SC))
************************************
 
 
(6) 检索不学C2课的学生姓名与年龄
------------------------------------
SELECT SNAME,AGE
  FROM S
MINUS
SELECT S.SNAME,S.AGE
  FROM SC,S
WHERE SC.SNO=S.SNO
   AND SC.CNO='C2'
(Oracle)
------------------------------------
π SNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(ScrossSC))
************************************
 
 
(7) 检索学习全部课程的学生姓名
------------------------------------
这个定义用SQL表示比较麻烦,略过
------------------------------------
π SNO,CNO(SC)÷πCNO(C)
先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter)
π SNAME(S cross (πSNO,CNO(SC)÷πCNO(C)))
再关联S表取出SNAME
************************************
 
 
(8) 检索所学课程包含S3所学课程的学生学号
------------------------------------
这个定义用SQL表示比较麻烦,略过
------------------------------------
π SNO,CNO(SC)÷ πCNO(σSNO='S3'(SC))
同样运用了除法的特性
************************************
 
 
(9) 将新课程元组('C10','PHYSICS','YU')插入到关系C中
------------------------------------
INSERT INTO C VALUES('C10','PHYSICS','YU')
------------------------------------
(C('C10','PHYSICS','YU'))
记住该符号的用法
************************************
 
 
(10) 将学号S4选修课程号为C4的成绩改为85分
------------------------------------
UPDATE SC SET GRADE=85
WHERE SNO='S4'
   AND CNO='C4'
------------------------------------
(SC('S4','C4',?)('S4','C4',85))
先用''实现DELETE功能,再用'∪'实现INSERT功能
注意使用?来表示检索时忽略该字段值
************************************
 
 
四、关系代数表达式的优化:
 
    目的:为了系统在执行时既省时间又能提高效率。
    基本策略:先做选择,运用投影去除多余属性等等。
    优化算法:语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值)
 
    例如:
 
    π SNO,SNAME(σGRADE>60(ScrossSC)) 进行优化后转换为:
    π SNO,SNAME(πSNO,SNAME(S)crossπSNO(σGRADE>60(SC)))
    --即提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值
 
 
    又如:
 
    S(S#,SNAME,AGE,SEX)
    SC(S#,C#,GRADE)
    C(C#,CNAME,TEACHER)
 
    π CNAME,TEACHER(σSEX='女'(ScrossSCcrossC)) 进行优化后转换为:
    πCNAME,TEACHER(CcrossπC#(πS#,C#(SC)crossπS#(σSEX='女'(S))))
 
    优化前和优化后的语法树如下所示:
 
    syntax_tree
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库关系代数表达式学习 的相关文章

  • 【Mysql第七期 函数】

    文章目录 1 函数的理解1 1 什么是函数1 2 不同DBMS函数的差异 2 数值函数2 3 三角函数2 5 进制间的转换 3 字符串函数常用函数 4 日期和时间函数4 1 获取日期 时间4 2 日期与时间戳的转换4 3 获取月份 xff0
  • 【Mysql第八期 子查询】

    文章目录 前言1 需求分析与问题解决1 2 子查询的基本使用1 3 子查询的分类 2 单行子查询2 1 单行比较操作符2 2 代码示例2 5 子查询中的空值问题 3 多行子查询3 1 多行比较操作符3 2 代码示例3 3 空值问题 4 相关
  • 【Mysql第九期 建表语句和管理表】

    文章目录 1 基础知识1 1 一条数据存储的过程1 2 标识符命名规则1 3 MySQL中的数据类型 2 创建和管理数据库2 2 使用数据库2 3 修改数据库2 4 删除数据库 3 创建表3 2 创建方式23 3 查看数据表结构 4 修改表
  • 【Mysql第十期 数据类型】

    文章目录 1 MySQL中的数据类型2 类型介绍2 2 可选属性2 2 2 UNSIGNED2 2 3 ZEROFILL2 3 适用场景2 4 如何选择 xff1f 3 浮点类型3 2 数据精度说明3 3 精度误差说明 4 定点数类型4 1
  • 【Mysql第十一期 约束】

    文章目录 1 约束 constraint 概述1 1 为什么需要约束1 2 什么是约束1 3 约束的分类 2 非空约束2 1 作用2 2 关键字2 3 特点2 4 添加非空约束2 5 删除非空约束 3 唯一性约束3 1 作用3 2 关键字3
  • 【Mysql第十二期 视图】

    文章目录 1 常见的数据库对象2 视图概述2 1 为什么使用视图 xff1f 2 2 视图的理解 3 大白话理解3 1 创建单表视图3 2 创建多表联合视图 4 查看视图5 更新视图的数据5 1 一般情况 6 修改 删除视图6 1 修改视图
  • 【presto sql】presto sql 如何通过 计算当前日期(年月日,时分秒) 来计算当前是星期几?

    文章目录 原因解析常见的日期处理方式拓展 原因 presto没有直接的日期转星期几的方式 xff0c 但是可以通过函数mod xff0c date diff多种函数进行求模转换成我们想要的星期几 span class token keywo
  • 【presto】presto如何对字段换行处理?chr(10)

    文章目录 问题描述问题分析什么是ASCII码presto sql逻辑 问题描述 需要对当前日期格式如 xff1a 2023 02 23 当遇到 的时候进行换行处理 其他的文本描述字段同理 问题分析 通过查找presto的函数 xff0c 换
  • Qt扫盲-QMenu理论总结

    QMenu理论总结 一 概述二 常用操作1 添加Action2 信号槽3 可撕下菜单4 展示菜单 一 概述 QMenu其实就是菜单控件 xff0c 菜单控件本质上就是一个选择项目 它可以是菜单栏中的下拉菜单 xff0c 也可以是独立的上下文
  • c++: internal compiler error: Segmentation fault (program cc1plus) 解决

    在ubuntu中编译很多库 xff0c 尤其是很大的一些中间件 xff0c 常常会c 43 43 internal compiler error Segmentation fault program cc1plus 这个错误 xff0c 看
  • Windows 远程桌面连接 Jetson Nx (Linux)Ubuntu 18.04

    一 Windows打开远程桌面工具 采取Windows自带远程桌面工具 xff0c 使用win 43 r输入打开mstsc 输入目标ip xff0c 以及用户名 xff08 在显示选项中打开输入用户名 xff09 二 Linux配置 安装x
  • Android studio更换阿里源

    对特定项目生效 xff0c 在项目中的build gradle修改内容 buildscript span class token punctuation span repositories span class token punctuat
  • docker 服务与调用

    docker file ROM tensorflow1 span class token punctuation span 14 python3 span class token punctuation span 5 20210111 sp
  • CTC loss原理详解大全

    ctc本质是损失函数 xff0c 在我的学习过程中浏览了一些博客 xff0c 下面整理了一些写的较好 较详细的 xff1a 1 过程详细 xff0c 全英文 2 博主参照原文讲解的 3 有伪代码 xff0c 帮助理解 4 中文解释 xff0
  • Python 对象、类、实例的联系与区别

    Python 中的对象 类 实例 本文讲述Python 中对象 类 实例的联系与区别 来源 xff1a 笨办法学 Python xff08 Learn Python The Hard Way xff09 作者 xff1a Zed Shaw
  • linux安装tailf 命令

    1 复制如下代码到一个新建的tailf c文件里 span class token comment tailf c tail a log file and then follow it Created Tue Jan 9 15 49 21
  • DBNet学习笔记

    1 网络结构 xff1a 1 网络流程 输入一张图片 xff0c 经过卷积操作 gt 1 2 gt 1 4 gt 1 8 gt 1 16 gt 1 32进行特征的提取 xff0c 然后进行上采样操作 xff0c 上采样的过程是把1 32的特
  • ubuntu18.04 安装PCL1.8.1

    ubuntu18 04 安装PCL1 8 1 注意版本匹配 xff1a PCL1 8 1 43 VTK7 1 1 43 QT5 14 2 1 PCL github 地址 xff1a https github com PointCloudLi
  • ubuntu 18.04 docker 安装

    docker 官网 xff1a https docs docker com engine install ubuntu xff08 1 xff09 按照官网安装教程 xff1a 我选择的是Install from a package安装方法

随机推荐

  • C++函数返回多个值:结构体、tuple

    C 43 43 函数一般可以返回一个值 xff0c 但是在使用中常常需要一个函数返回多个值 xff0c 因此可以使用结构体或tuple来进行实现 注意看代码里的注释 xff01 xff01 xff01 1 使用结构体返回多个值 实现步骤 x
  • 【GStreamer 】1-扫盲介绍

    从历史的角度来看 xff0c Linux 在多媒体方面已经远远落后于其它的操作系统 微软的Windows和苹果的MacOS它们对多媒体设备 多媒体创作 播放和实时处理等方面已经有了很好的支持 另一方面 xff0c Linux对多媒体应用的综
  • C++判断文件是否存在

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • PCL编译完成后找不到库

    使用执行命令L g 43 43 std 61 c 43 43 14 I usr local include pcl 1 8 I usr local include eigen3 main cpp o test111 其中 std 61 c
  • docker安装及使用,常用命令总结

    1 安装 参考官方教程 xff1a https docs docker com engine install ubuntu 有三种安装方法 xff1a Install using the repository Install from a
  • CMakeLists.txt中相关指令和含义

    语法格式 xff1a 指令 xff08 参数1 参数2 xff09 参数使用括号括起来 参数之间使用空格或分号分开 指令大小写无关 xff0c 参数和变量大小写有影响 重要指令 1 cmake minimum required xff1a
  • ubuntu 18.04安装nvidia驱动后,电脑开机失败

    安装驱动后电脑开机失败 xff0c 恢复到安装驱动之前的状态 xff1a 在nvidia 官网 https www nvidia com Download index aspx 下载显卡驱动 xff0c 并安装成功后重启电脑发现电脑重启失败
  • c++ CUDA nvcc编译问题

    安装了cuda10 1 xff0c 使用cuda编译代码时 xff0c 显示 xff1a Cannot get compiler information span class token operator span Compiler exi
  • PCL库点云小知识

    1 计算极值点 include lt pcl io pcd io h gt include lt pcl point types h gt include lt pcl common common h gt pcl PointCloud l
  • PCL Windows 安装

    参考文章 xff1a https blog csdn net weixin 44244190 article details 124324121 我的环境为 xff1a python3 6 xff0c visual studio 2019
  • 使用mmdetection3d预测自己采集的数据遇到的问题

    预测结果是这样的 xff1a 点云数据原图是这样的 xff1a 红色框出的为真实的car类别 xff1a 已解决 xff0c 请查看mmdetection3d issue
  • ubuntu18.04 cuda卸载及安装

    1 若电脑上已经安装了其他版本的cuda及显卡驱动 xff0c 需要完全卸载并删除相关文件 xff0c 否则会导致安装不成功 xff0c 执行如下 xff1a 1 1卸载cuda 步骤如下 cd usr local cuda xx x bi
  • 【GStreamer 】2-ubuntu v4l2-ctl 查看USB 相机基本参数

    v4l2是Video4linux2的简称 xff0c 是linux中关于视频设备的内核驱动 xff0c 在Linux中 xff0c 视频设备是设备文件 xff0c 可以像访问普通文件一样对其进行读写 xff0c 摄像头设备文件位置是 dev
  • 使用conda安装Paddle3D时出现的报错及解决方式

    1 cmake时 usr bin ld cannot find lxxx问题 如 xff1a usr bin ld cannot find lleveldb usr bin ld cannot find lsnappy 解决方法 xff1a
  • git安装及使用常用命令

    1 安装 Ubuntu xff1a apt get install git Windows xff1a 官网下载地址 xff1a https gitforwindows org xff0c 也可以用国内镜像 xff1a https npm
  • 如何设置才能提升VMware虚拟机的显卡性能

    将本机的intel和NVIDIA显卡驱动更新为最新版本 使用最新的VMware Workstation pro 12 5 处理器中 xff0c 选择8个核心 xff0c 勾选下面两个虚拟化
  • 程序设计思维与实践 CSP-M3 补题 (3/4/数据班)

    程序设计思维与实践 CSP M3 A csp m3 t1题目分析代码 B csp m3 t2题意分析代码 T4 咕咕东学英语题意 分析代码 A csp m3 t1 题目 瑞神的数学一向是最好的 xff0c 连强大的咕咕东都要拜倒在瑞神的数学
  • Centos7搭建Samba文件共享服务

    编辑本地yum源 root 64 localhost vim etc yum repos d local repo Centos7 name 61 CentOS Local baseurl 61 file mnt gpgcheck 61 0
  • IS-IS协议原理与配置

    IS IS 中间系统到中间系统协议 xff1a 基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议 基于802 3封装 IS IS最初是国际化标准组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议 为了提供对IP的路由
  • 数据库关系代数表达式学习

    一 关系代数的9种操作 xff1a 关系代数中包括了 xff1a 并 交 差 乘 选择 投影 联接 除 自然联接等操作 五个基本操作 xff1a 并 差 笛卡尔积 投影 选择 四个组合操作 xff1a 交 联接 等值联接 自然联接 RS 除