数据库原理与应用(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

相关文章

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的