数据库(第一天)

news2024/9/21 4:37:24

文档信息

文档类别正式文档
文档编号数据库基础课 1.2-001
版本1.2-001
文档名称数据库基础课
编写负责人/编写时间梁昭东/2023 年 1 月 30 日
审核负责人/审核时间年 月 日
批准人/批准时间年 月 日

变更记录

日期版本号变更内容修订者
2023.01.30v1.2版根据实际情况增删了部分内容梁昭东

授课时间明细

时间章节
第一天第一部分第一章 数据库-理论基础、第二章 MySQL 安装部署
第二天第一部分第三章 MySQL库表操作
第三天第一部分第四章 MySQL之DML
第四天第一部分第五章 MySQL备份恢复
第五天上午答疑1
第五天下午第一部分第六章 MySQL索引视图、第七章 MySQL事务
第六天第二部分 第一章NoSQL介绍、第二章Redis介绍和部署
第七天第二部分 第三章数据类型、第四章 配置文件
第八天第二部分 第五章 发布和订阅、第六章 事务管理
第九天第二部分 第七章 数据持久化、第八章 主从复制、第九章 集群环境、第十章 高频面试题
第十天上午第三部分 MongoDB所有章节内容
第十天答疑2

第一部分 MySQL

第一章 数据库-理论基础

1.1 什么是数据库

数据: 描述事物的符号记录, 可以是数字、 文字、图形、图像、声音、语言等,数据有多种形式,它们都可以经过数字化后存入计算机。

数据库: 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享,总结为以下几点:

  • 数据结构化

  • 数据的共享性高,冗余度低,易扩充

  • 数据独立性高

  • 数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)

1.2 数据库管理系统(DBMS)

数据库系统成熟的标志就是数据库管理系统的出现。数据库管理系统(DataBase ManagermentSystem,简称DBMS)是管理数据库的一个软件,它充当所有数据的知识库,并对它的存储、安全、一致性、并发操作、恢复和访问负责。是对数据库的一种完整和统一的管理和控制机制。数据库管理系统不仅让我们能够实现对数据的快速检索和维护,还为数据的安全性、完整性、并发控制和数据恢复提供了保证。数据库管理系统的核心是一个用来存储大量数据的数据库。

DBMS是所有数据的知识库,并对数据的存储、安全、一致性、并发操作、恢复和访问负责。

DBMS有一个数据字典(有时被称为系统表),用于贮存它拥有的每个事物的相关信息,例如名字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)。

1.3 数据库与文件系统的区别

文件系统: 文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

数据库系统: 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

对比区别:

  1. 管理对象不同: 文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用不同的文件类型进行保存(举例: txt 文件和 doc 文件不能通过修改文件名完成转换) ;而数据库直接对数据进行存储和管理。

  2. 存储方式不同:文件系统使用不同的文件将数据分类(.doc/.mp4/.jpg) 保存在外部存储上;数据库系统使用标准统一的数据类型进行数据保存(字母、 数字、符号、时间)。

  3. 调用数据的方式不同:文件系统使用不同的软件打开不同类型的文件;数据库系统由 DBMS 统一调用和管理。

优缺点总结:

  • 由于 DBMS 的存在,用户不再需要了解数据存储和其他实现的细节,直接通过 DBMS 就能获取数据,为数据的使用带来极大便利。

  • 具有以数据为单位的共享性,具有数据的并发访问能力。 DBMS 保证了在并发访问时数据的一致性。

  • 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。

  • 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖 DBMS 来对数据进行操作且对性能的消耗相比文件系统比较小。

  • 对事务的支持。 DBMS 支持事务,即一系列对数据的操作集合要么都完成, 要么都不完成。在DBMS上对数据的各种操作都是原子级的。

1.4 数据库的发展史

初始阶段-----人工管理:人力手工整理存储数据

萌芽阶段-----文件系统:使用磁盘文件来存储数据

初级阶段-----第一代数据库:出现了网状模型、层次模型的数据库

中级阶段-----第二代数据库:关系型数据库和结构化查询语言

高级阶段------新一代数据库:NOSQL型数据库

1.5 常见数据库

1.5.1 关系型数据库

关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。

关系模型就是指二维表格模型, 因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、MicrosoftAccess、MySQL、浪潮K-DB 、武汉达梦、南大通用、人大金仓等。

实体关系模型简称 E-R 模型,是一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

1.5.2 非关系型数据库

非关系型数据库: 又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL, 是一种轻量、开源、不兼容 SQL 功能的数据库, 对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的优点,而不是单纯地反对 RDBMS(关系型数据库管理系统)。

1.6 DBMS支持的数据模型

层次模型

若用图来表示,层次模型是一棵倒立的树。在数据库中,满足一下条件的数据模型称为层次模型:

  • 有且仅有一个节点无父节点,这个节点称为根节点

  • 其他节点有且仅有一个父节点。桌面型的关系模型数据库

网状模型

在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示非树型结构是很不直接的,网状模型则可以克服这一弊病。网状模型是一个网络。在数据库中,满足以下两个条件的数据模型称为网状模型。A.允许一个以上的节点无父节点;B.一个节点可以有多于一个的父节点。

从以上定义看出,网状模型构成了比层次结构复杂的网状结构,适宜表示多对多的联系。

关系模型

以二维表的形式表示实体和实体之间联系的数据模型称为关系数据模型。从模型的三要素角度看,关系模型的内容为:

数据结构:一张二维表格。

数据操作:数据表的定义、检索、维护、计算等。

数据约束条件:表中列的取值范围即域值的限制条件。

概念模型:基于客户的想法和观点所形成的认识和抽象。

实体(Entity):客观存在的、可以被描述的事物。例如员工、部门。

属性(Attribute):用于描述实体所具有的特征或特性。如使用编号、姓名、工资等属性来描述员工的特征。

关系(Relationship):实体之间的联系。

一对一: 人 和 身份证

一对多: 班级 和 学生

多对多: 学生 和 课程

数据模型:也叫关系模型,是实体、属性、关系在数据库中的具体体现。

关系数据库:用于存储各种类型数据的”仓库”,是二维表的集合。

表:实体的映射

行和列:行代表一个具体的实体的数据。也叫一条记录。列是属性的映射,用于描述实体的。

主键和外键。

1.7 运维对数据库的要求

程序员对数据库要求

基本的SQL操作、CRUD操作

多表连接查询、分组查询和子查询。

常用数据库的的单行函数。

常用数据库的基本命令。

常用数据库的开发工具。

事务概念。

索引、视图、存储过程和触发器。

运维对数据库要求

部署环境

数据库安装、参数配置、权限分配

备份/还原

监控

故障处理

性能优化

容灾

升级/迁移

系统用户反馈的数据库问题

数据库运维工作总原则

1、能不给数据库做的事情不要给数据库,数据库只做数据容器。

2、对于数据库的变更必须有记录,可以回滚。

1.8 MySQL简介

MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。

目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

1.8.1 MySQL的特性

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

  2. 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、 OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。

  3. 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、 Python、Ruby和Tcl等。

  4. 支持多线程,充分利用CPU资源,支持多用户。

  5. 优化的SQL查询算法,有效地提高查询速度。

  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的 软件中。

  7. 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数 据列名。

  8. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

  9. 提供用于管理、检查、优化数据库操作的管理工具。

  10. 可以处理拥有上千万条记录的大型数据库。

1.9 MySQL获取

版本介绍:

Alpha版:开发版,公司内部使用

Beta版:完成开发后,用户体验版

RC版:生产环境发布之前的一个小版本或称候选版

GA版:正式发布版本

MySQL官网地址:MySQL

从官方网站下载安装包

从官方网站下载源代码包

从官方网站下载二进制包

从发行版本光盘中获取安装包

MySQL 常见版本:

MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。

MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。

MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。

MySQL Cluster CGE 高级集群版,需付费

1.10 MySQL在企业中应用

数据库排名:DB-Engines Ranking - popularity ranking of database management systems

适用场景:

互联网公司web网站系统、数据仓库系统、日志记录系统、嵌入式系统

MySQL典型用户:

google、雅虎、腾讯、北电、思科、YouTube、SecondLife 百度、优酷网、新浪、中国电子科学研究院

数商3.0、一大把、哈票网、短信网关、IP通讯

MySQL在云中获得普遍采用:

1.11 MySQL体系结构

Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。

Connectors指的是不同语言中与SQL的交互。

Management Serveices & Utilities: 系统管理和控制工具。

Connection Pool:连接池。管理缓冲用户连接,线程处理等需要缓存的需求。

SQL Interface:SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调 用SQL Interface。

Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。

Optimizer:查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。

Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数 据。

Engine:存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

-- 查看最大连接数
show variables like '%max_connections%';

# 查询缓存配置情况
show variables like '%query_cache%';

一条SQL语句执行流程:

连接层
 (1)提供连接协议:TCP/IP 、SOCKET
 (2)提供验证:用户、密码,IP,SOCKET
 (3)提供专用连接线程:接收用户SQL,返回结果
 通过以下语句可以查看到连接线程基本情况
 mysql> show processlist;
 
SQL层
  (1)接收上层传送的SQL语句
  (2)语法验证模块:验证语句语法,是否满足SQL_MODE
  (3)语义检查:判断SQL语句的类型
   DDL :数据定义语言
   DCL :数据控制语言
   DML :数据操作语言
   DQL: 数据查询语言
   ...
  (4)权限检查:用户对库表有没有权限
  (5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
  (6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
     代价模型:资源(CPU IO MEM)的耗损评估性能好坏
  (7)执行器:根据最优执行计划,执行SQL语句,产生执行结果
 执行结果:在磁盘的xxxx位置上
  (8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
  (9)提供日志记录(日志管理章节):binlog,默认是没开启的。
​
存储引擎层(类似于Linux中的文件系统)
    负责根据SQL层执行的结果,从磁盘上拿数据。
    将16进制的磁盘数据,交由SQL结构化化成表,连接层的专用线程返回给用户。

第一次作业

使用自己喜欢的画图软件重画MySQL架构图

 

 

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

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

相关文章

LINUX【线程概念】

线程线程概念线程的优点线程的缺点线程异常线程用途linux进程和线程线程控制pthread 库创建线程线程等待线程退出线程分离线程互斥线程互斥相关概念线程互斥互斥量互斥量接口初始化互斥量销毁互斥量互斥量的加锁和解锁互斥量实现原理线程概念 线程是进程中的一个执行流 一个进程…

ShonyDanza:如何利用Shodan实现自定义的安全研究与网络防护

关于ShonyDanza ShonyDanza是一款支持自定义且易于使用的安全工具,该工具基于Shodan实现其功能,并且可以利用Shodan的强大能力帮助研究人员实现安全研究、安全测试和安全防护等任务。 ShonyDanza的功能包括: 1、根据搜索条件获取IP 2、根据…

LabWindows CVI 2017开发笔记--串口调试软件实例

一、新建工程 打开LabWindows CVI软件,在桌面新建SerialDebug文件夹用来保存工程文件,在欢迎页点击New–>Project 或者在软件首页点击File–>New–>Project 将Project创建在新的Workspace中,设置完成后点击OK 新建一个用户GUI界…

内存溢出、内存泄露的概述及常见情形

内存溢出(OutofMemoryError) 简述 java doc 中对 Out Of Memory Error 的解释是,没有空闲内存,并且垃圾收集器也无法提供更多内存。 JVM 提供的内存管理机制和自动垃圾回收极大的解放了用户对于内存的管理,由于 GC&…

functional interface

更优雅 案例 要在TodoTaskRepository写find方法找到对应task列表,传入自定义的如何find 要传入两个参数,返回一个bool,在文档里找这样的functional interface java8官方文档-Package java.util.function BiPredicate是这样的 接口函数是t…

Numpy基础——人工智能基础

文章目录一、Numpy概述1.优势2.numpy历史3.Numpy的核心:多维数组4.numpy基础4.1 ndarray数组4.2 内存中的ndarray对象一、Numpy概述 1.优势 Numpy(Nummerical Python),补充了Python语言所欠缺的数值计算能力;Numpy是其它数据分析及机器学习库的底层库&…

GitLab CI/CD实现代码推送后自动maven打包发布

1、GitLab CI/CD介绍 CI(Continuous Intergration):即持续集成,将代码的合并、部署、自动化测试都在一起,不断地执行这个过程,并对结果反馈。 CD(Continuous Delivery):即持续交付,持续交付是一种软件工程方…

别具一格的婚礼,VR全景+婚礼的优势展现在哪里?

随着90后、95后逐渐步入结婚的主力军中,如何策划一场别具一格的婚礼是许多年轻人所头疼的,那么今年我们就可以玩点新潮的,VR婚礼或许是个不错的选择。 VR全景婚礼就是通过全景摄像机对婚礼进行记录,不但可以帮助新人捕捉婚礼的精彩…

对S参数的理解II

本篇文章特别感谢粉丝朋友“千年的呢喃”,他给我推荐了一本书,写的非常好 Micro Wave and RF Design,有需要的朋友自行下载。 之前关于S参数也写过几篇文章了,但一直以来都有一个历史遗漏问题没有解决,那就是&#xf…

ElasticSearch-学习笔记05【SpringDataElasticSearch】

Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】Ela…

【IVIF的超分重建】

Multimodal super-resolution reconstruction of infrared and visible images via deep learning (基于深度学习的红外和可见光图像多模态超分辨率重建) 提出了一种基于编解码器结构的红外-可见光图像融合方法。图像融合任务被重新表述为保持红外-可见…

2023年3月AMA-CDGA/CDGP数据治理认证考试这些城市可以报名

目前2023年3月5日CDGA&CDGP开放报名的城市有:北京、上海、广州、深圳、杭州、重庆,西安,成都,长沙,济南,更多考场正在增加中… DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业…

Echarts 设置折线图线条样式(虚线+粗细+阴影)

第012个点击查看专栏目录Echarts折线图的lineStyle属性可以设置折线的颜色,粗细,类型,线段末端类型,阴影,透明度,偏移等属性。文章目录示例效果示例源代码(共128行)相关资料参考专栏…

【Java|多线程与高并发】 使用Thread 类创建线程的5种方法如何查看程序中的线程

文章目录前言线程创建1.继承Thread类重写run()方法如何查看程序中的线程?2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runnable5.⭐使用Lambda表达式,创建线程(重要)Thread 的常见构造方法总结前言 在这里主要补充说明一些问题,方便更好地理解下面的…

conda安装nodejs版本过低解决方法

conda命令直接安装nodejs时,可能会由于镜像源中nodejs版本过低导致没法安装高本版的nodejs,导致无法jupyterlab使用一些扩展插件。 解决方法如下:(windows环境下直接按提示下载版本安装就行,此处只介绍linux环境的解决…

2023上半年软考中级系统集成项目管理工程师2月25日开班

系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职…

今天面试招了个28K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在20~30k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试中,不…

2023年上半年软考高项信息系统项目管理师2月25日开班

信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资…

每天一道大厂SQL题【Day09】充值日志SQL实战

每天一道大厂SQL题【Day09】充值日志SQL实战 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&#…

MMDetection(五)

目标检测工具包 MMDetection MMDetection 可以做什么 ➢ MMDetection 提供 400 余个性能优良的预训练模型,开箱即 用,几行 Python API 即可调用强大的检测能力 ➢ MMDetection 涵盖 60 余个目标检测算法,并提供方便易用的 工具,…