数据库-理论基础
目录
1.什么是数据库?
2.数据库与文件系统的区别?
3.常见的数据库由那些?
4.关系型数据库(MySQL)的特征及组成结构介绍
1.什么是数据库?
数据:描述事物的符号记录,可以是数字,文字,图形,声音,语言等多种形式,他们都可以经过数字化后存入计算机
数据库:存储数据的仓库,是长期存放在计算机内,有组织,可共享的大量 数据集合。数据库中的数据按照一定数据模型组织,描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享。总结为一下几点
- 数据结构化
- 数据的共享性,冗余度低,易扩充
- 数据独立性高
- 数据由DBMS统一管理和控制(安全性,完整性,并发控制,故障恢复)解释:DBMS数据库管理系统 (能够操作和管理数据库的大型软件)
2.数据库与文件系统的区别?
文件系统:文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称为文件系统
数据库系统:数据库管理系统(DMS) 是一种操纵和管理数据库的大型软件,用于建立,使用和维护数据库,简称DBMS.他对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
对比和区别:
1.管理对象不同:文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用不同的文件类进行保存(例如:txt文件和doc 文件不能通过修改文件名称完成转换)而数据库直接对数据进行存储和管理
2.存储方式不同:文件系统使用不同的文件将数据分类(.doc/.mp4/.jpg)保存在外部存储上;数据库系统使用标准统一的数据类型进行数据保存(字母 数字 符号 时间)
3.调试数据的方式不同:文件系统使用不同软件打开不同类型的文件;数据库系统由DBMS统一调用和管理。如下图
优缺点总结:
- 由于DBMS 的存在,用户不在需要了解数据存储和其他实现的细节,直接通过DBMS就能获取数据,为数据的使用带来极大的便利
- 具有以数据为单位的共享性,具有数据的并发访问能力。DBMS保证了在访问时数据的一致性。
- 低延时访问,典型例子就是线下支付系统的应用,支付规模局的的时候,数据库系统的表现远远优于文件系统
- 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖DBMS来对数据进行操作且对性能的消耗相比文件系统比较小
- 对事物的支持。DBMS支持事务,即一系列对数据的操作集合要么都完成,要么不完成。在DBMS上对数据的各种操作都是原子级的
3.常见的数据库由那些?
关系型数据库
关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。简单的来说关系型数据库由多张能互相联系的二维行列表组成的数据库。
关系模型 就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系数据库有Oracle,DB2,Microsoft SQL Server,Microsoft Acess,MySQL,浪潮 K-DB 等
实体关系模型 简称 E-R 模型,是一套数据库设计的工具,它运用真实世界种事物与关系的观念,来解释税局库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论
非关系型数据库
非关系型数据库:又称为NoSQL (Not Only SQL ),意为不仅仅是SQL 是一种轻量,开源,不兼容 SQL 功能的数据库,对NoSQL 最普遍的定义为“非官联型的” 强调Key-Value 存储和文档数据库的优点,而不是单纯的地反对RDBMS (关系型数据库管理系统)
4.关系型数据库(MySQL)的特征及组成结构介绍
关系型数据库的发展历程
1.层次模型
2.网状模型
关系模型
关系模型以二维标结构来表示实体与实体之间的联系,关系模型的数据结构是一个“二维表框架” 组成的集合。每一个二维表又可称为关系。在关系模型中,操作的对象和结果都是二维表。
关系模型是目前最流行的数据库模型。支持关系模型的数据库管理系统称为关系数据库管理系统,Access就是一种关系数据管理系统。图所示为一个简单的关系模型,其中图(a)所示为关系模式,图(b)所示为这两个关系模式型的关系,关系名称分为教师关系和课程关系,每个关系均含3个元组,其主码均为“教师编号”。
在关系模型中基本数据结构是二维表,不想层次或网状那样的连接指针。记录之间的联系是通过不同关系哦中同名属性来体现的。关系模型中的各个关系模式不是应当孤立的,也不是随意拼凑的一堆二维表,它必须满足相应的要求。
关系式数据库的组成结构和名词解释
数据以表格的形式出现,每行为单独的一条记录,每列为一个单独的字段,许多的记录和字段组成一张表(table) 若干的表单组成库(database)
- 记录(一条数据) 在数据库当中,表当中的行称为记录
- 字段 (id name .......) 在数据库当中,表当中的称之为字段。
- MySQL 数据类型
数据类型用于指定特殊字段所包含数据的规则,它决定了数据保存在字段里的方式,包括分配给字段的宽度,以及值是否可以是字母,数字,日期,和时间等。任何数据或数据的组合都对于的数据类型,用于存储字母,数字,日期和时间,图像,二进制数据等。数据类型是数据本身的特征,其特性被设置到表里面的字段。
MySQL 常见基础数据类型
1.字符串类型 (CHAR (0-255 固定长度)VARCHAR(0-255可变长度))
2.数值类型(INT(整数型)FLOATI(浮点型))
3.日期和时间类型(DATE(年月日),TIME(时分秒))
- MySQL 约束类型
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性,唯一性。
1.主键约束 primary key 主键约束相当于唯一约束+飞空约束的组合,主键约束不允许重复,也不预序出现空值。每个表最多只允许一个主键,建立主键约束可以在列表级别创建,也可以在表示级别创建。当创建主键的约束时,系统默认会在所有的列列组合上建立对应的唯一索引。
2.外键约束 foregin key 外键约束时保证一个或两个表之间的参照完整性,外键时构建于一个表的两个字段或是两个表的两个字段之间的参照关系
3.唯一约束 unique 唯一约束是指table 表的列或列表不能重复,保证数据的唯一性。唯一性约束不允许出现重复的值,但是可以为多个null.同一个表可以又多个唯一约束,多个列表组合的约束。在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。
4.非空约束 not null 与默认值 default : 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。Null 类型特征:所有的类型的值都可以时null 包括 int float 等数据类型。
- MySQL 索引
索引是一个单独的,物理的数据库结构,它是某一个字段或若干字段的集合。表的存储由两部分组成,一部分用来存放数据,另一部分存放索引页面。通常,索引页面相对于数据页面来说小的多。数据检索花费的大部分开销是磁盘读写,没有索引就需要从磁盘上读表的每一个数据页,如果有索引,则只需查找索引页面就可以了。所以建立合理的索引,就能加速数据的检索过程。
- MySQL 锁
数据库是一个多用户的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事物同时存取同一数据地情况。若对并发操作不加控制就可能会读取和存储不正确地数据,破环数据库地一致性。
加锁是实现数据库并发控制地一个非常重要的技术。当事物在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事物就对该数据对象有了一定的控制,在该事务释锁之前,其他事物不能对此数据对象进行更新操作。
- MySQL 的存储引擎
存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎页可以被称为表类型。Oracle,SqlServer 等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL 存在多种存储引擎。可以根据需要使用相应引擎,或者编写存储引擎。
MYISAM:默认引擎,插入和查询速度较快,支持全文索引,不支持事务,行级锁和外键约束等功能。
INNODB: 支持事物,行级锁和外键约束等功能
MEMORY: 工作在内存中,通过散列字段保存数据,速度快,不能永久保存数据
- 事务 (Transaction) 是并发控制的基本单位
可以把一系列要执行的操作称为事务,而事务管理就是管理这些操操作要么完全执行,要么完全不执行
经典案例:银行转账工作,从一个账号扣款 并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保存数据的一致性。
注意:mysql 中并不是所有的数据引擎都支持事务管理的,只有 innodb 支持事务管理。
相关文章:

数据库-理论基础
目录 1.什么是数据库? 2.数据库与文件系统的区别? 3.常见的数据库由那些? 4.关系型数据库(MySQL)的特征及组成结构介绍 1.什么是数据库? 数据:描述事物的符号记录,可以是数字,文…...

【已解决】src/spt_python.h:14:20: 致命错误:Python.h:没有那个文件或目录
src/spt_python.h:14:20: 致命错误:Python.h:没有那个文件或目录 问题 其中重点的报错信息 src/spt_python.h:14:20: fatal error: Python.h: No such file or directory 思路 sudo yum install python-devel然后重新安装需要的依赖。 解决 成功。…...

基于Face++网络爬虫+人脸融合算法智能发型推荐程序——深度学习算法应用(含Python及打包exe工程源码)+爬虫数据集
目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境 模块实现1. Face.APl调用1)Face.APl介绍2)调用API 2. 数据爬取1)网络数据爬取步骤2)爬虫实现 3. 模型构建4. 用户界面设计1)需要调用的库文…...

Jetson nano嵌入式平台配置ip记录
背景 Jetson nano平台使用千兆网和PC连接时没有ip地址,在ubuntu的终端输入ifconfig显示eh0未设置ip,需要先在nano平台上配置ip地址,然后PC通过千兆网远程控制该平台。 配置ip 使用终端进入到network文件夹中, cd /etc/network…...

前端中的跨域请求及其解决方案
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 跨域(Cross-Origin)⭐CORS(跨域资源共享)⭐JSONP(JSON with Padding)⭐代理服务器⭐ WebSocket⭐服务器设置响应头⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:…...

SpringBoot2.0(mybatis-plus初始使用)
目录 一,介绍二,SpringBoot2.x整合MybatisPlus Lombok2.1,添加依赖 pom2.2,配置数据库信息 application.properties2.3,工程结构初始化 三,创建接口返回统一对象四,创建bean五,创建…...

游戏视频录制软件对比,哪款最适合你的需求?
随着电子竞技和游戏直播行业的迅速崛起,越来越多的玩家渴望记录并分享自己在游戏中的精彩瞬间。游戏视频录制软件正是满足这一需求的关键工具。本文将针对三款优秀的游戏视频录制软件进行对比分析,以便为读者提供选购建议。 游戏视频录制软件1࿱…...

耐蚀合金连续油管最新版 学习记录
声明 本文是学习GB-T 42858-2023 耐蚀合金连续油管. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了耐蚀合金连续油管的订货、材料、制造、检验试验、标记等。 本文件适用于油气井用耐蚀合金连续油管(以下简称"油管")…...

LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测
论文地址:https://arxiv.org/abs/2303.03595 论文代码:https://github.com/sankin97/LoGoNet 论文背景 激光雷达传感器点云通常是稀疏的,无法提供足够的上下文来区分远处的区域,从而造成性能次优。 激光雷达-摄像机融合方法在三…...
Python 多线程、线程池、进程池
线程间的通讯机制 消息队列 event 事件对象 当线程创建完成之后,并不会马上执行线程,而是等待某一事件发生,线程才会启动 import threading# # 创建 event 对象 # event threading.Event() # # 重置代码中的 event 对象,使得所…...

深入浅出了解华为端到端交付流程的概念和5个关键点
如果您或您所在的组织在学习和研究华为,那么对“端到端”这个词语就一点都不陌生。 今天华研荟带着您了解华为端到端的交付流程的思想和一些做法,如果了解了这个,那么对于华为在其他领域提出的端到端要求或做法就一通百通了。 一、什么是端…...

[Linux]进程信号
[Linux]进程信号 文章目录 [Linux]进程信号进程信号的定义信号的特点信号的生命过程发送信号的原理进程处理信号的方式分类使用指令查看Linux系统定义的信号信号产生使用终端按键产生信号使用指令向进程发送信号调用系统调用向进程发送信号由软件条件产生信号硬件异常产生信号 …...

PostgreSQL 数据类型
文章目录 PostgreSQL数据类型说明PostgreSQL数据类型使用单引号和双引号数据类型转换布尔类型数值类型整型浮点型序列数值的常见操作 字符串类型日期类型枚举类型IP类型JSON&JSONB类型复合类型数组类型 PostgreSQL数据类型说明 PGSQL支持的类型特别丰富,大多数…...

智慧港口4G+UWB+GPS/北斗RTK人员定位系统解决方案
港口人员定位系统能够帮助企业实现对港口作业人员的全面监控和管理,不仅可以保障人员的人身安全,还可以提高人员的作业效率,为港口的可持续发展提供有力保障。接下来为大家分享智慧港口人员定位系统解决方案。 方案背景 1、港口作业人员多&a…...

实时时钟和日历电路芯片MS85163/MS85163M
MS85163/MS85163M 是一款 CMOS 实时时钟 (RTC) 和 日历电路,针对低功耗进行了优化,内置了可编程的时钟输出、中断输出和低电压检测器。所有寄存器地址和数据都通过两线双向I 2 C 总线进行串行传输,最大总线传输速度为 400kbit/s 。采用SOP8…...

【Java从入门到精通】这也许就是Java火热的原因吧!
前言:Java是一种高级的、面向对象的、可跨平台的程序设计语言。Java根据技术类别可划分为以下几类:JavaSE(Standard Edition,标准版):支持面向桌面、嵌入式和移动设备的应用程序开发;JavaEE&…...

zTasker—简洁易用强大的定时热键一体自动化工具,效率倍增器
软件名称 zTasker 应用平台 PC Windows7及以上 一句简介 市面上定时类软件很多,但无一例外功能都很单一,要完成不同的任务,需要不同的软件 市面上的热键软件,要么功能少,要么像是AutoHotKey这样对于一般用户太专业…...

惊艳时装界!AIGC风暴来袭,从设计到生产的全新体验
时尚是一个不断演进的领域,充满创新和独创性,但现在,创新迈入了一个崭新的境界——人工智能生成内容(AIGC)。这个革命性的技术,改变了时装设计的游戏规则。在过去的几年里,人工智能已经深刻地改…...

element -ui table表格内容无限滚动 使用插件vue-seamless-scroll
使用插件 一、安装组件依赖 npm install vue-seamless-scroll 二、引入组件 import vueSeamlessScroll from "vue-seamless-scroll"; components: { vueSeamlessScroll }, <div class"table-list "><vue-seamless-scroll :class-option"…...

如何在windows环境下编译T
一, 安装MYSYS2 1. 去https://www.msys2.org下载 msys2-x86_64-xxxxx.exe; 2. 按照msys2.org主页提示的步骤安装; 3.安装完默认起来的是 UCRT的, 可以根据环境的需要选择, 我选择的 MSYS2 MINGW64 4. 搭建编译环境, 安装对应的软…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...