数据库原理及应用(三)

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

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


目录
相关文章
|
18天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
23 2
|
1月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
63 0
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
54 0
|
1月前
|
供应链 数据库 开发者
深入了解数据库锁:类型、应用和最佳实践
深入了解数据库锁:类型、应用和最佳实践
|
7天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
23 0
|
8天前
|
C#
【自考】之数据库系统原理
【自考】之数据库系统原理
15 0
|
13天前
|
存储 数据库连接 数据处理
NumPy与数据库的结合应用探索
【4月更文挑战第17天】本文探讨了NumPy与数据库结合在数据处理和分析中的应用,阐述了结合使用的必要性,包括数据提取、转换、处理与分析及结果存储。通过Python数据库连接库提取数据,转化为NumPy数组进行高效计算,适用于金融等领域的数据分析。结合应用的优势在于高效性、灵活性和可扩展性,但也面临数据转换、性能优化和安全性挑战。
|
20天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
12 1
|
27天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
1月前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。