数据库原理及应用(三)

简介: 数据库原理及应用(三)

2.3 关系代数

关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。


关系代数的运算对象是关系,运算结果亦是关系


关系代数用到的运算符包括两类:集合运算符和专门的关系运算符

35047c9fbe5c1bc4c0c700396dda79ce.png

2.3.1 传统的集合运算


传统的集合运算是二目运算,包括并、差、交、笛卡尔积 4 种运算


① 并 Union


关系 R 与关系 S 的并记作:R ∪ S = {t|t∈R ∨ t∈S}


其结果仍为 n 目关系,由属于 R 或属于 S 的元组组成。


6a34429b202b3324c44c465eb40a5a58.png

例图:

ddc611ace96296c93068af3102f682cd.png


② 差 Difference


系R与关系S的差记作:R - S = {t|t∈R ∧ tS}


其结果关系仍为 n 目关系,由属于 R 而不属于 S 的所有元组组成。

5bd0207536aba0fc013098e4bc771541.png


例图:

911e332799d2684ee966e584d9f0604f.png


③ 交 Intersection


关系 R 与关系 S 的交记作:R ∩ S = {t|t∈R ∧ t∈S}


其结果关系仍为 n 目关系,由既属于 R 又属于 S 的元组组成。关系的交可以用差来表示,即 R ∩ S = R-(R-S)

ec81e1f43711788725353cd88635a2e1.png

例图:

3489f199a625c68e84178145360f226d.png

④笛卡尔积 Cartesian Product

381bcc3165a9ce1c8166bd3ca922803f.png

例图:

166a4b348b75c91c3314e9c2c5dcd294.png

2.3.2 专门的关系运算


专门的关系运算包括选择、投影、连接、除运算等


① 选择 selection


选择元组

5cd60edca086a49f82bf5104adac3a2b.png


示例 1:查询学生表 Student 中年龄小于 20 岁的学生的所有信息


σ age<20 (Student)

示例 2:

eb9a8eaef3b3f1282ffb4780aa3d09be.png

示例 3:

56910b54c365d83bd4b721b31a9b1507.png

② 投影 projection

a63f99f38a7849c7ca7d4ad1121f0315.png

投影操作主要是从列的角度进行运算,投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)


选择列


⚠ 注意:投影操作会去除列中的重复行


示例:查询学生表Student中都有哪些系


Ⅱ Sdept (Student)

a17261bbd38435880f72e4e51feb80fc.png

③ 连接 join


连接也称 θ 连接。从两个关系的笛卡尔积中选取属性间满足一定条件的元组

e380b80ab064848bd6e98f0764edf474.png

连接运算中有两种常用连接:


等值连接:θ 为 = 的连接运算称为等值连接。他是从关系 R 与 S 的笛卡尔积中选取 A、B 属性值相等的那些元组

568415d196d9ff5da27cd84b83aecfb0.png

自然连接:自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉

6694932743e37628a0b042b46ab052be.png

示例:

9eec89b24c6b3e03fb359d690a736107.png

在做自然连接的时候,两个关系中的某些元组可能会被抛弃,这些被舍弃的元组就称为悬浮元组。


如果要把悬浮元组也留在结果中,而在其他属性上填NULL,那么这种连接就叫做外连接 outer join


左外连接 left join:只保留左表的悬浮元组


右外连接 right join:只保留右表的悬浮元组

d5d65c6d3cc66744800cc7c5ec3ada97.png

④ 除运算


象集的概念

5fd5c2b7115df039e44c1e00d5c9fa74.png

举例:

802783673737efe1abe36e9ba438f76d.png

给除运算下定义:

0a9f93dbffe8964ac2817b6eedd0ab6e.png

R ÷ S = T 表示 T 包含所有在 R 但不在 S 中的属性及其值,且 T 的元组与 S 的元组的 所有组合 都在 R中


示例:可以理解为在 R 中查找 B、C 属性和 S 中的 B、C 属性相同的,A 属性的值

d9bc9d839485dc9e103eb9f12d33800e.png

T 中包含所有在 R 但不在 S 中的属性及其值


A在R中而不在S中,所以保留A属性,去掉 B、C、D三个属性


且 T 的元组和 S 的元组的所有组合都在 R 中


a1: a1 b1 c2 / a1 b2 c1 / a1 b2 c3 都在 R中


a2 : a2 b1 c2 不在 R 中 PASS!


a3:a3 b1 c2 不在 R 中 PASS!


a4:a4 b1 c2 不在 R 中 PASS!


2.3.3 关系代数习题


① 设有如下四个表:S(供应商表)P(零件表)J(工程项目表)SPJ(供应情况表)

07e903a5ed46afa42207f1f77b366860.png

c1eba58059b2deab9e85e613ad6b3f9e.png

5d8a82e20b1f33e4061803354f2743e8.png

② 设有如图所示的关系S、SC 和 C, 试用关系代数表达式表示下列查询语句: 

37c09ae43d6ea192fd167c20eb322d51.png

检索”程军”老师所授课的课程号(C#)和课程名(CNAME)


ⅡC#,CNAME (σ TEACHER = '程军'(C) )


检索年龄大于21的男学生学号(S#)和姓名(SNAME)


ⅡS#,SNAME (σ AGE > '21' ∧ SEX = '男'(S) )


检索至少选修”程军”老师所授全部课程的学生姓名(SNAME)


关键字:至少 —— 用除法


ⅡSNAME ( ( ⅡS#,C#(SC) ÷ ⅡC#(σ TEACHER = '程军'(C)) ) ⚮ S )


检索”李强”同学不学课程的课程号(C#)


关键字:不 —— 用减法


ⅡC#(C) - ⅡC#( σSNAME = '李强'(S) ⚮ SC )


检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)


ⅡC#,CNAME(ⅡS#,C#(SC) ÷ ⅡS#(S) ⚮ C )


检索选修课程包含”程军”老师所授课程之一的学生学号(S#)


ⅡS#(σTEACHER = '程军'(C) ⚮ SC)


检索选修课程号为k1和k5的学生学号(S#)


ⅡS#,C#(SC) ÷ ⅡC#(σ C#=k1 ∨ C# = k2(C))


检索选修全部课程的学生姓名(SNAME)


关键字:全部 —— 用除法


ⅡSNAME( ( ⅡS#,C#(SC) ÷ ⅡC#(C) ) ⚮ S)


检索选修课程包含学号为2的学生所选修的全部课程的学生学号(S#)


ⅡS#,C#(SC) ÷ ⅡC#(σ S# = 2(SC) )


所有学号, 课程号 ÷ 学号为2的学生选修的课程号


检索选修课程名为'C语言'的学生学号(S#)和姓名(SNAME)


ⅡS#,SNAME(ⅡS#( SC ⚮ (σCNAME = 'C语言'(C)) ) ⚮ S)


检索没有一门课程成绩不及格的学生学号、姓名


ⅡS#,SNAME( (ⅡS#(S) - ⅡS#(σ GRADE < 60(SC) ) ⚮ S )

第三章 关系数据库标准语言 SQL

3.1 SQL 概述

SQL(Structured Query Language):结构化查询语言


大部分 DBMS 产品都支持 SQL,成为操作数据库的标准语言


3.1.1 SQL 数据库的体系结构


SQL 语言支持的关系数据库的三级模式结构

8821bbb885018dcb523a67b4b0e0d5d4.png


说明:


用户可以用 SQL 语言对视图(View)和基本表(Base Table)进行查询等操作,在用户观点里,视图和表一样,都是关系。


视图是从一个或多个基本表中导出的表,本身不存储在数据库中,只有其定义,可以将其理解为一个虚表。


基本表是本身独立存在的表,一个表可以带若干索引,存储文件及索引组成了关系数据库的内模式。


3.1.2 SQL 的功能


(1)数据定义(DDL)


定义、删除模式


定义、删除、修改关系模式(基本表)


定义、删除视图(View)


定义、删除索引(Index)


(2)数据操纵(DML)


数据查询


数据增、删、改


(3)数据控制(DCL)


用户访问权限的授予、收回


3.1.3 SQL 的特点


(1)高度非过程化的语言


用户只需提出“干什么”,至于“怎么干”由 DBMS 解决;用户只需要在查询语句中提出需要什么,DBMS即可按路径存取,并把结果返回给用户。


(2)面向集合的操作方式


每一个 SQL 的操作对象是一个或多个关 系,操作的结果也是一个关系。


(3)同一种语法结构,两种使用方式


即可独立使用,又可嵌入到 宿主语言中使用,具有自主型和宿主型两种特点。


(4)具有查询、操作、定义和控制四种语言一体化的特点


它只向用户提供一种语言,但该语言具有上述多种功能,且每种操作只需一种操作符。


(5)语言简洁、易学易用:核心功能只有 9 个动词,语法简单, 接近英语。


SQL 功能 动词

数据库查询 SELECT

数据定义 CREATE,DROP ,ALTER

数据操纵 INSERT,UPDATE,DELETE

数据控制 GRANT,REVOKE

3.2 SQL 基本语法

3.2.1 数据类型


SQL 语言支持的主要数据类型有:


数据类型 解释

CHAR(n) 固定长度为 n 的字符串型

VARCHAR (n) 最大长度为 n 的变长字符串型

INT 4 字节的整型

NUMERIC(n,s) 数值型,最大精度 n,s 为小数位数

DATE 日期型,包括年( 4 位)、月、日

Money 货币型( 8 字节,精确到货币单位的千分之十)

3.2.2 函数


数字函数:ABS(X), SQRT(X), RAND(X), LOG(X), …


字符函数:LENGTH(X), LOWER(X), UPPER(X), SUBSTRING(expression, start, length)…


分组函数:COUNT(*), MAX(X), MIN(X), AVG(X), SUM(X)


3.2.3 运算符


句法操作符:&


数值操作符:+,-,*,/, …


逻辑操作符:=,>,<,≤,≥,≠,IN,ANY,ALL, …


查询表达式操作符: UNION,…


3.2.4 SQL 语句格式符号


大括号 { }:大括号中的内容为必选参数,其中可有多个选项,各选项之间用竖线分隔,用户必须选择其中的一项。


方括号 [ ]:方括号中的内容为可选项,用户根据需要选用。


竖线 | :表示参数之间‘或’的关系。


省略号 “…”:表示重复前面的语法单元。


3.3 数据定义

DDL,Data Definition Language


关系数据库系统支持三级模式结构,其模式,外模式,内模式中的基本对象有模式、表、视图和索引,所以 SQL 的数据定义功能包括模式定义、表定义、视图和索引的定义


相关实践学习
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。
目录
相关文章
|
6月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
9月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
10月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
517 14
|
7月前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
315 8
|
7月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
9月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
8月前
|
存储 人工智能 数据库
视图是什么?为什么要用视图呢?数据库视图:定义、特点与应用
本文三桥君深入探讨数据库视图的概念与应用,从定义特点到实际价值全面解析。视图作为虚拟表具备动态更新、简化查询、数据安全等优势,能实现多角度数据展示并保持数据库重构的灵活性。产品专家三桥君还分析了视图与基表关系、创建维护要点及性能影响,强调视图是提升数据库管理效率的重要工具。三桥君通过系统讲解,帮助读者掌握这一常被忽视却功能强大的数据库特性。
2066 0
|
10月前
|
SQL 数据库
软考软件评测师——数据库系统应用
本文介绍了关系数据库的基础知识与应用,涵盖候选码定义、自然连接特点、实体间关系(如1:n和m:n)、属性分类(复合、多值与派生属性)以及数据库设计规范。同时详细解析了E-R图转换原则、范式应用(如4NF)及Armstrong公理体系。通过历年真题分析,结合具体场景(如银行信用卡额度、教学管理等),深入探讨了候选键求解、视图操作规范及SQL语句编写技巧。内容旨在帮助读者全面掌握关系数据库理论与实践技能。
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
392 19

热门文章

最新文章