关系数据库概述

news2024/11/23 18:33:22

一、数据模型

        一般地讲,数据模型是严格定义的一组概念的集合,通常由数据结构数据操作完整性约束三部分组成。

1.1 数据结构

        数据结构描述数据库的组成对象以及对象之间的联系。数据结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按数据结构的类型来命名数据模型。例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型网状模型关系模型

1.1.1 层次模型

        层次模型就是以“上下级”的层次关系来组织数据的一种方式,层次模型的数据结构看起来就像一颗树:

 举例:

P21 图1.16和图1.17、图1.18

层次模型的基本特点:任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。

1.1.2 网状模型

        在现实世界中事务之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,网状模型则可以克服这一弊病。

在数据库中,满足以下两个条件的基本层次联系集合称为网状模型:

(1)允许一个以上的结点无双亲

(2)一个结点可以有多于一个的双亲

P26 图1.23 1.24

1.1.3 关系模型

        关系数据库系统采用关系模型作为数据的组织方式,是建立在严格的数学概念基础上。

        关系模型把数据看作是一个二维表格,任何数据都可以通过行号+列号来唯一确定,它的数据模型看起来就是一个Excel表:

  •  关系(Relation):一个关系对应通常说的一张表,如上面的一张表就可以称为一个关系;
  • 元祖(Tuple):表中的一行即为一个元祖;
  • 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。如上面的“学号”、"姓名"、“年龄”都是属性;
  • 码(Key):也称为码键。表中的某个属性组,它可以唯一确定一个元祖。例如上面的“学号”属性就可以唯一确定一个学生,也就成为本关系的码;
  • 域(Domain):属性的取值范围,如人的年龄一般在1~150岁之间,性别的域是“男”或者“女”等;
  • 分量:元组中的一个属性的值;
  • 关系模式:对关系的描述,一般表示为:关系名(属性1、属性2、...、属性n)

        例如,上面的关系可表述为:学生(学号、姓名、年龄、性别、系名、年级)

        值得注意的是,关系必须是规范的,满足一定的约束条件。最基本的约束条件: 关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。下面就是一个不规范的关系:

1.2 数据操作

        数据操作是指对数据库中各种对象的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。比如对数据库的增、删、改、查等。具体可以参见下面的SQL语言的DDL、DML和DQL。

1.3 完整性约束

        完整性约束一共可以包括实体完整性约束参照完整性约束用户自定义完整性约束。具体可以参见下面的微博,讲的很好:

https://blog.csdn.net/qq_42884482/article/details/100150177

二、SQL简介

        什么是SQL?SQL(Structured Query Language)是结构化查询语言的缩写,用来访问和操作数据库系统。SQL语句既可以查询数据库中的数据,也可以添加、更新和删除数据库中的数据,还可以对数据库进行管理和维护操作。不同的数据库,都支持SQL,这样,我们通过学习SQL这一种语言,就可以操作各种不同的数据库。

        虽然SQL已经被ANSI组织定义为标准,不幸地是,各个不同的数据库对标准的SQL支持不太一致。并且,大部分数据库都在标准的SQL上做了扩展。也就是说,如果只使用标准SQL,理论上所有数据库都可以支持,但如果使用某个特定数据库的扩展SQL,换一个数据库就不能执行了。例如,Oracle把自己扩展的SQL称为PL/SQL,Microsoft把自己扩展的SQL称为T-SQL

        现实情况是,如果我们只使用标准SQL的核心功能,那么所有数据库通常都可以执行。不常用的SQL功能,不同的数据库支持的程度都不一样。而各个数据库支持的各自扩展的功能,通常我们把它们称之为“方言”。

总的来说,SQL语言定义了这么几种操作数据库的能力:DDL、DML和DQL。

2.1 DDL:Data Definition Language 数据定义语言

        DDL允许用户定义数据,也就是创建表、删除表、修改表结构这些操作:

  • CREATE - 创建
  • ALTER - 修改
  • DROP - 删除
  • TRUNCATE - 移除
  • COMMENT - 注释
  • RENAME - 重命名

2.2 DML:Data Manipulation Language 数据操作语言

        DML为用户提供添加、删除、更新数据的能力,这些是应用程序对数据库的日常操作:

  • SELECT - 查询
  • INSERT - 添加
  • UPDATE - 更新
  • DELETE - 删除
  • CALL - 调用
  • EXPLAIN - 解释
  • LOCK TABLE - 锁,用于控制并发

2.3 DQL:Data Query Language 数据控制语言

        DQL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等:

  • GRANT - 授权 允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限
  • REVOKE - 收回已经授予的权限
  • COMMIT - 提交
  • SAVEPOINT - 保存点
  • ROLLBACK - 回滚
  • SET TRANSACTION - 设置当前事务的特性,它对后面的事务没有影响.

三、主流关系数据库

目前,主流的关系数据库主要分为以下几类:

  • 商用数据库,例如:Oracle,SQL Server,DB2等;
  • 开源数据库,例如:MySQL,PostgreSQL等;
  • 桌面数据库,以微软Access为代表,适合桌面应用程序使用;
  • 嵌入式数据库,以Sqlite为代表,适合手机应用和桌面程序。

四、参考

1.关系数据库概述 - 廖雪峰的官方网站

2.

数据库的三种模型_彼岸的饭碗的博客-CSDN博客_数据库模型

3.MySQL基础系列之 DDL、DML和DCL的区别与理解_通往架构师的路上的博客-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据的存储【详解】【强烈推荐!!!】

数据的存储1. 数据类型介绍1.1 类型的基本归类2. 整型在内存中的存储2.1 原码、反码、补码2.2 大小端介绍2.3 练习3. 浮点型在内存中的存储3.1 一个例子3.2 浮点数存储规则1. 数据类型介绍 基本的内置类型、大小(字节)(VS编译器)…

bootstrap校验laydate起止日期联动失效

项目场景: 提示:这里简述项目相关背景: 项目中用到bootstrapValidator,以及laydate(by:贤心,插件效果美观)。 项目表单中,有两处需要联动校验:开始日期,结束…

第04讲:HTTP操作之ElasticSearch高级查询

3.1.4、高级查询 Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询 定义数据 : # POST /student/_doc/1001 {"name":"zhangsan", "nickname":"zhangsan", "sex":"男","age":30 } # POST…

MySQL innodb引擎架构分析-Change Buffer

系列文章目录 1. MySQL innodb引擎架构分析-Buffer Pool 2. MySQL innodb引擎架构分析-Redo log 3. MySQL innodb引擎架构分析- Double Write Buffer 4.MySQL innodb引擎架构分析-Change Buffer 文章目录系列文章目录前言一、Change Buffer是什么?二、Change Buffe…

日本市场的Starday开始对智能家居下重手

自从21世纪以来,物联网就开始进入大众视野,因此作为物联网基础应用的智能家居已经成为人们对生活场景的一种涉嫌。因此在国外市场当中,跨境电商卖家们通过物联网的智慧家居的售卖,获得了大量的资金,可知“跨境沃土”大…

LeetCode54.螺旋矩阵 LeetCode59.螺旋矩阵Ⅱ | 螺旋矩阵问题

LeetCode刷题记录 文章目录LeetCode54.螺旋矩阵思路代码LeetCode59 螺旋矩阵Ⅱ思路代码LeetCode54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例一 输入:matrix [[1,2,3],[4,5,6],[7,8,9…

Ubuntu-22 live-server版本安装完成后的配置

软件包管理工具 aptapt 用于取代 apt-get 、apt-cache &#xff0c;apt 将分散在 apt-get 、 apt-cache 的基础操作统一包含在一起apt 与 apt-get 、apt-cache 的对应关系操作aptapt-安装软件包sudo apt install <package>sudo apt-get install <package>卸载软件包…

AcWing 1015. 摘花生(DP)

一、问题描述 二、思路分析 这道题非常类似我们数字三角形那道题&#xff0c;大家如果这道题不会的话&#xff0c;可以先去看作者之前写的数字三角形问题的解法&#xff0c;然后再回来看这道题&#xff0c;或许就能有思路了。 传送门&#xff1a; DP母题——数字三角形 1、状…

Jetpack Compose中的列表

Cloumn 和 Row 如果是普通的不是特别长的列表&#xff0c;可以直接使用 Column 和 Row 组件&#xff0c;默认 Column 和 Row 组件是不支持滚动的&#xff0c;如果需要支持滚动可以在 Column 和 Row 组件上使用 Modifier.verticalScroll() 和Modifier.horizontalScroll() 修饰符…

就在今晚!如何在公益向善的路上坚持前行

&#xff08;本文阅读时间&#xff1a;3分钟&#xff09;如何从支教助学到慈善组织到社会创业&#xff1f;如何从内心深处找回向善的力量&#xff1f;如何在挣扎中坚定前行的方向&#xff1f;本期微软ATP Public 100 公益演讲特邀嘉宾还将为小伙伴们提供干货建议&#xff01;微…

JavaScript刷LeetCode拿offer-树的遍历

什么是树 一种分层数据的抽象模型。前端工作中常见的树包括&#xff1a;DOM树&#xff0c;级联选择&#xff0c;树形控件JS中没有树&#xff0c;可以用Object和Array构建树树的常用操作&#xff1a;深度/广度优先遍历&#xff0c;先中后序遍历 深度优先遍历 访问根节点对根节…

Windows Server【开机启动和任务计划程序】实现服务器重启后项目自启动(Windows Server 任务计划程序无法执行问题处理)

1.问题说明 有些时候我们希望计算机开机后就启动一些服务或应用程序&#xff0c;比如远程工具。这里介绍两种方式。 2.开机启动 使用WinR调出运行&#xff0c;输入&#xff1a; 1️⃣ shell:startup 用户开机自启动&#xff08;程序开机自启动只针对当前登录的用户&#xf…

2分布式微服务技术栈-SpringCloud<Feign>

分布式微服务技术栈Feign HTTP 客户端Feign-基于Feign远程调用Feign-自定义配置Feign HTTP 客户端 Feign-基于Feign远程调用 声明式 事务 spring 声明一个 远程调用 封装 所有 对 userservice 的 远程调用 类似于 controller 的 注解 把接口 注入进来 不仅是 http 客户端 …

Node.js 中的模块化

1、模块化的基本概念 1.1、什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 1.2、编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&a…

探索性数据分析(Exploratory Data Analysis,EDA)

目录参考资料PART 02 探索性数据分析 探索性数据分析(Exploratory Data Analysis&#xff0c;简称EDA)&#xff0c;指对数据分析的过程中尽量不加入先验假设&#xff0c;而是通过作图表和统计等方式来探索数据结构和规律。 EDA最早由John W. Tukey在上世纪70年代被提出&#…

批量下载线上数据文件--业务诉求

诉求接到现场运维诉求&#xff0c;需要获取到指定业务节点的所有附件文件分析某个节点的业务信息&#xff0c;可以通过sql来筛选出全部需要的关联字段信息以及文件磁盘路径和上传路径通过脚本或命令&#xff0c;将sql筛选到的路径文件统一复制到指定目录将复制到的文件下载&…

再学C语言25:分支和跳转——continue、break和switch

一般地&#xff0c;进入循环体后&#xff0c;在下次循环判断之前程序执行循环体中所有语句 一、continue语句 continue&#xff1a;循环中&#xff0c;当运行到该语句时&#xff0c;其将导致剩余的迭代部分被忽略&#xff0c;开始下一次迭代 如果continue处于嵌套结构中&…

【深度学习】李宏毅2021/2022春深度学习课程笔记 - 各式各样神奇的自注意力机制(Self-Attention)变型

文章目录一、Self-Attention 各式各样的变型二、How to make self-attention efficient&#xff1f;三、Notice四、Local Attention / Truncated Attention五、Stride Attention六、Global Attention七、Many Different Choices八、Can we only focus on Critical Parts?8.1 C…

车牌识别应用搭建(含模型和源码)

车牌识别应用搭建 内容说明 本示例旨在展示如何在 DeepStream SDK 版本不低于 5.0.1 的情况下使用分级模型进行检测和分类。 本例中的模型均为TAO3.0模型。 PGIE(car detection) -> SGIE(car license plate detection) -> SGIE(car license plate recognization) 该流…

Linux系统下的rpm/yum管理

文章目录Linux系统下的rpm管理1.介绍2.rpm包的简单查询指令3.rpm包的其它查询指今4.卸载rpm包5.rpm6.yumLinux系统下的rpm管理 1.介绍 rpm用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager…