数据库原理与应用(SQL Server)笔记 关系数据库

本文主要是介绍数据库原理与应用(SQL Server)笔记 关系数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、关系数据库的基本概念
    • (一)关系数据库的定义
    • (二)基本表、视图
    • (三)元组、属性、域
    • (四)候选码、主码、外码
  • 二、关系模型
  • 三、关系的完整性
    • (一)实体完整性
    • (二)参照完整性
    • (三)用户自定义完整性
  • 四、关系操作
    • (一)概念
    • (二)关系代数语言
    • (三)结构化查询语言

一、关系数据库的基本概念

(一)关系数据库的定义

关系数据库是一种建立在关系模型的基础上的数据库,是通过二维表来表示实体之间的联系,二维表由行与列组成。

(二)基本表、视图

在关系数据库中,关系通常表示为一个表,也称为基本表,即一个关系对应一个基本表,每个关系(表)都有其特定的行与列。另外,每个基本表是独立存在的,都有其相应的内容。视图是从一个或多个基本表中导出的表,也可以将这个表称为查询表。视图是基于基本表构建的,当基本表的数据发生变化时,视图中的数据也会相应地发生变化,但当视图变化,基本表不一定变化。

例如,只是对视图的展示方式进行修改时,并不会影响基本表;而对视图通过特定的语句来修改,则会影响到基本表。

对于下面两个表,通过销售员信息表和订单信息表查询所有员工中有订单销售员的信息表:
在这里插入图片描述
所导出来的表即为视图,它是基于表1和表2两个基本表构建的:
在这里插入图片描述

可以根据基本表来查询,也可以根据某一个查询来建立新的查询,即嵌套查询,后面的知识会学到。

(三)元组、属性、域

简单的来说,行是元组,列是属性。元组就是数据表中的一行,即表的每行对应一个元组。数据表中每列为属性,且属性的取值范围称为域,即每一个属性都有一个值域。

同一个关系的任意两个元组不能完全相同,否则会违背完整性约束,但不同的元组可以有相同的属性值。

例如,下图商品种类信息表中,包含了一件商品的种类ID、种类名称以及描述,其中每一行(每一元组)都代表了一件商品的相关信息;商品信息表中库存量为一个属性,它有相应的值域(取值范围)。
在这里插入图片描述

(四)候选码、主码、外码

数据表中用于唯一标识一个元组的标识符称为码,也称为数据库关键码。而候选码是码的子集,具有唯一性、最小性以及不可再分性等特点。

在一个关系中一般有多个候选码,只能选择一个候选码作为主码,主码可由一个或多个属性组成;外码是另一个表的主码,用于建立表与表之间的联系,通过外码可以保证表与表之间的一致性。例如,上面有两个表,商品种类信息表和商品信息表中,一件商品关联着其一个商品种类(CategoryID)。另外,外码不一定与主码同名称。

主键=主码,外键=外码,在数据库中的大多数情况下是可以互换使用的。

二、关系模型

关系模型是数据库系统(DBS)的核心和基础,由数据结构、数据操作以及数据完整性约束三要素组成。数据结构是静态特征,数据操作是动态特征,数据完整性约束是一组规则集合。

常用的数据模型有层次模型(树状)、网状模型(网状)、关系模型(关系)、半结构化数据模型等。数据库系统中最常用的模型是关系模型,其通过记录组或数据表的形式来组织数据。

三、关系的完整性

关系的完整性约束有三种,分别是实体完整性、参照完整性和用户自定义完整性,三个完整性要求共同保证了数据库中的数据准确、一致和有效。其中,实体完整性和参照完整性两者是关系模型必须满足的完整性约束。

(一)实体完整性

表中每一元组(行)的主码(主键)都是唯一的,且不能取空值,否则违反了实体完整性约束。例如,下面学生信息表中,学号是主键,实体完整性约束每个学生的学号必须是唯一的,且不能为空,通过学号即可准确地标识学生。

学号年龄姓名
190115李雅雯
190214陈晓涵
190315赵欣怡
16钱梦琪

由于最后一个元组的主码缺失为空,所以违反了实体完整性约束。

(二)参照完整性

参照完整性规则就是定义主码(主键)和外码(外键)之间的引用规则,指的是两个表之间的数据完整性约束,一个表的外码参考另一个表的主码,外码可以为空值或非空值。

(三)用户自定义完整性

用户自定义完整性是可以允许数据库管理员根据特定的实际要求来为数据库制定额外的数据完整性规则。

四、关系操作

(一)概念

关系操作的特点是集合操作,操作的对象和结果都是集合。关系操作语言是数据库管理员用来操作数据库的工具,可分为关系代数语言、关系演算语言以及结构化查询语言三种,关系代数语言通过对关系运算表达查询,关系演算语言通过使用谓词来表达查询,而结构化查询语言具有前两者的共同特点。

关系操作语言
代数语言
演算语言
结构化查询语言
SQL

(二)关系代数语言

关系代数通过对关系的运算来查询,其运算对象和结果都是关系,传统的集合运算有并、交、差和笛卡尔积运算,这些运算都是从元组(行)的角度来进行运算。专门的关系运算有选择、投影、连接、除运算,这些运算不仅涉及元组(行),也涉及属性(列)。

关系运算符号描述备注
传统的集合运算∪、∩、-、×并、交、差、笛卡尔积
专门的关系运算σ、π、⋈、÷选择、投影、连接、除

1、差
关系R和关系S的差记为R-S,运算结果为属于R,但不属于S的所有元组(行)组成。

例如,下图有三个关系R、S和T,关系T是由关系R和S通过差运算得到的。

在这里插入图片描述
2、笛卡尔积(广义)
关系R和关系S的笛卡尔积记为R×S,若关系R有r个元组(行),关系S有s个元组(行),则R×S有r×s个元组。

例如,下图有三个关系R、S和T,关系T是由关系R和S通过笛卡尔积运算得到的,关系R有3行,关系R有3行,所以关系T有3×3=9行。

在这里插入图片描述
3、选择
在关系R中选出满足一定条件F的元组称为选择,其中F为逻辑表达式,记为σF(R)。

例如,下图σA=0(R)是由关系R中选出满足A属性中值为0的元组。

在这里插入图片描述
4、投影
在关系R中选出若干属性(列)A组成新的关系称为投影,记为πA(R)。

例如,下图在关系R中选出A、C、D属性组成。

在这里插入图片描述
5、连接
1、等值连接:记关系R和关系S的笛卡尔积为R×S,从R×S中选取中选取相等属性值(列)的元组(行)组成。
2、自然连接:记关系R和关系S的笛卡尔积为R×S,从R×S中选取中除去重复属性值(列)的元组(行),剩下的元组留下组成。自然连接也可以解释为通过两者的公共域的相等值进行连接,并把重复的属性和列去掉。

例如,下图中关系R和S通过自然连接得到关系T,是通过相等值B进行连接所得的。

在这里插入图片描述
3、外连接:用于返回匹配连接条件的属性值(行)以及不满足连接条件的属性值(行),外连接包括左外连接和右外连接。另外,还有全外连接,其能获取两个表中的所有记录,包括那些没有匹配项的记录,即没有匹配的填充为NULL(空值)。

(三)结构化查询语言

SQL即为结构化查询语言,是关系数据库的标准语言。SQL语言可分为以下四类:
1、数据定义语言DDL
2、数据操纵语言DML
3、数据查询语言DQL
4、数据控制语言DCL

这篇关于数据库原理与应用(SQL Server)笔记 关系数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856342

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、