数据库原理及应用(三)

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

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 的数据定义功能包括模式定义、表定义、视图和索引的定义


目录
相关文章
|
4天前
|
缓存 关系型数据库 Java
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
16 0
|
4天前
|
存储 人工智能 NoSQL
现代数据库技术演进与应用前景分析
本文探讨了现代数据库技术的演进历程及其在各领域的应用前景。首先介绍了传统数据库的局限性,随后分析了NoSQL、NewSQL以及分布式数据库等新兴技术的特点和优势。接着探讨了人工智能、物联网、大数据等领域对数据库技术提出的新要求,并展望了未来数据库技术的发展趋势与应用前景。
|
4天前
|
存储 NoSQL 搜索推荐
探索新一代数据库技术:基于图数据库的应用与优势
传统关系型数据库在处理复杂的关系数据时存在着诸多限制,而基于图数据库的新一代数据库技术则提供了更为灵活和高效的解决方案。本文将深入探讨图数据库的核心概念、应用场景以及与传统数据库相比的优势,带领读者一窥未来数据库技术的发展趋势。
|
4天前
|
存储 运维 Kubernetes
多态关联在数据库设计中的应用和解决方案
多态关联在数据库设计中的应用和解决方案
18 0
|
4天前
|
存储 算法 数据库
矢量数据库在图像识别与检索中的应用实践
【4月更文挑战第30天】本文探讨了矢量数据库在图像识别与检索中的应用,通过特征提取(如SIFT、SURF)、编码和相似度度量实现快速识别。在图像检索流程中,经过预处理、特征提取和编码后,矢量数据库用于查询相似特征,排序后展示给用户。实际案例显示,矢量数据库能提升电商平台的商品图像搜索效率和用户体验。随着技术发展,这一领域应用前景广阔。
|
4天前
|
机器学习/深度学习 搜索推荐 数据库
矢量数据库的未来发展趋势:新技术与应用展望
【4月更文挑战第30天】随着AI和机器学习的发展,矢量数据库在处理非结构化数据方面的重要性日益增强。预测到2028年,全球矢量数据库市场将从2023年的15亿美元增长至43亿美元。未来趋势包括:并行计算与分布式架构提升处理能力,硬件加速技术(如TPU和昇腾芯片)提高性能,自适应索引机制优化查询效率。应用领域将拓展至NLP、图像视频分析和推荐系统,为各行业带来更多创新和价值。
|
4天前
|
机器学习/深度学习 存储 人工智能
矢量数据库在机器学习领域的应用与前景
【4月更文挑战第30天】本文探讨了矢量数据库在机器学习领域的应用,包括特征存储、相似性搜索、模型训练与调优及实时分析。随着AI技术发展,矢量数据库将深度融合,提升扩展性和可伸缩性,增强智能化功能,并加强安全性与隐私保护。未来,矢量数据库将在机器学习领域扮演关键角色。
|
4天前
|
存储 数据可视化 关系型数据库
矢量数据库在地理空间数据处理中的应用
【4月更文挑战第30天】矢量数据库在地理空间数据处理中展现优势,高效存储管理高维向量数据,支持快速查询、空间分析与可视化。分布式处理能力适应大数据量需求,提供高效、灵活、可扩展及可视化支持,是处理地理空间数据的理想选择。随着技术进步,其应用将更加广泛。
|
4天前
|
存储 算法 搜索推荐
矢量数据库基础:概念、原理与应用场景
【4月更文挑战第30天】矢量数据库,处理高维向量数据的工具,应用于GIS、推荐系统、图像搜索及语义搜索。核心原理是将原始数据嵌入到高维空间,通过索引算法优化搜索性能。现代深度学习模型如Word2Vec提升向量表示准确性,KD-Tree、LSH等算法加速相似性搜索。随着技术发展,矢量数据库在数据科学领域的重要性日益增强。
|
4天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使数据库和阿里云函数计算位于同一个内网中如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
1063 0
Serverless 应用引擎产品使用之在阿里函数计算中,使数据库和阿里云函数计算位于同一个内网中如何解决