数据库原理及应用(三)

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

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


相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
目录
相关文章
|
29天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
152 64
|
10天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
17天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
31 3
|
1月前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
50 5
Mysql(3)—数据库相关概念及工作原理
|
17天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
34 2
|
27天前
|
XML 存储 数据库
XML在数据库中有哪些应用?
【10月更文挑战第17天】XML在数据库中有哪些应用?
26 2
|
28天前
|
供应链 数据库
数据库事务安全性控制有什么应用场景吗
【10月更文挑战第15天】数据库事务安全性控制有什么应用场景吗
|
1月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
111 5
|
1月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
53 3