🥺 MySQL-01-数据库简介

🥺 MySQL-01-数据库简介

image-20210227163922380

1 开篇介绍

👋 Hello 大家好,我是 NagaseMySQL 从删库到跑路 ,又到了学习 MySQL 的时刻,接下来就让我们感受一下 MySQL 独特的魅力吧。

在该篇博客中,我们主要介绍 数据库 相关的内容。在研究 数据库 之前,我们先来谈论一下 数据 。祝你学的开心 🥳

2 数据(Data)

2.1 什么是数据

数据的定义:描述/记录 事物状态信息的符号,我们称之为 数据

数据 可以有很多种表达形式,比如说:文字图像视频音频 等等。在数据库中,数据表示记录,例如:在 <学生管理系统> 中,记录学生的信息包括有:学号姓名年龄性别专业院系联系方式 等等,这些信息就是 数据

2.2 数据的价值

知道了什么是数据之后,我们一定要谨记这句话:数据无价,谨慎操作!!!

image-20210227164637135

我们先来看一下什么是 信息 ,所谓的 信息 指的是对 数据 进行加工处理之后提取的对人类社会实践和生产活动产生决策影响的数据,信息就是数据中所包含的意义,未经过加工处理的数据只是一种原材料。

针对 <201624430532|LMY|23|TJ|电气信息学院|计算机科学与技术专业|173······> 这样的一条 数据 ,了解其含义的人可以从中提取出来这样的一条 信息电气信息学院计算机科学与技术专业的LMY,他的学号是201624430532,今年23岁,来自于天津市,联系方式是173······ ,而不了解其含义的人就无法提取出来这样的一条信息,因此 数据信息 是密不可分的。

因此,数据的价值就在于 记录了客观世界的事实

2.3 数据管理技术发展简史

我们知道了数据的价值之后,我们知道数据是无价的,它 记录了客观世界的事实 。那么,数据有很多很多,我们一定要有个东西来管理一下数据,它就是 数据管理数据管理 就是对各种杂乱无章的数据进行组织、分类、编码、查询、维护等操作。数据管理主要历经了 3 个发展阶段,即 人工管理阶段文件系统阶段数据库系统阶段 。每个阶段都是以减少冗余、增强数据独立性和方便操作为目标进行发展的。

2.3.1 人工管理阶段

在计算机出现之前,人们主要利用纸张和计算工具(如算盘)来进行数据的记录和计算,依靠大脑来管理和利用数据,这个阶段就是 人工管理阶段

到了 20 世纪 50 年代 中期 ,这时候计算机刚刚开始萌芽,还没有类似于磁盘等专门管理数据的存储设备,只有纸带、卡片、磁带等外存。所以计算机只能局限于科学技术方面。

也就是说,在这个阶段,数据主要存储在纸带、卡片、磁带等介质上,或者直接通过手工来记录。

这个阶段的特点是:

  • 数据不能够长期保存:计算机主要用于科学计算,数据临时用,临时输入,不保存。
  • 应用程序管理数据:数据要由应用程序自己管理,应用程序需要处理 数据的逻辑物理结构 ,开发负担很重。
  • 数据不能共享,数据冗余度大:一组数据只对应一个程序,多个程序之间涉及 相同数据 时,必须 各自定义 ,造成 数据大量冗余
  • 数据不具有独立性:数据的逻辑结构或物理结构发生变化后,必须对应用程序做出相应的修改,开发负担进一步加大。

2.3.2 文件系统阶段

20 世纪 50 年代 后期20 世纪 60 年代 中期 ,计算机中的 磁盘 等存取存储设备开始普及。这时可以将数据存储在计算机的磁盘上。这些数据都以 文件 的形式存储,然后通过 文件系统 来管理这些文件,这个阶段就是 文件系统阶段

如下图所示,Windows 的文件系统:

image-20210227165103324

图中有很多文件以及文件夹,每个文件夹中又有很多文件,这就是文件系统。相对于 人工管理阶段 来说,文件系统使得数据管理更加简单,不需要再为了找一个文件而翻箱倒柜,但是,这些数据并没有进行 结构化 管理,查询起来还是不够方便。

这个阶段的特点是:

  • 数据可以长期保存:计算机大量用于数据处理,因而数据需要长期保存,进行增删改查操作。
  • 数据由文件系统来管理:文件系统这个软件,把数据组织成相对独立的数据文件,按文件名,按记录进行存取,实现了记录内的结构性,但整体上没有结构。并且程序与数据之间由文件系统提供存取方法进行转换,使应用程序与数据之间有了一定的独立性。
  • 数据冗余大,共享性差:一个文件对应一个应用程序,不同应用有相同数据时,也必须建立各自的文件,不能共享相同的数据,造成数据冗余,浪费空间,且相同的数据重复存储,各自管理,容易造成数据不一致性。
  • 数据独立性差:一旦数据的逻辑结构改变,必须修改应用程序,修改文件结构的定义。应用程序的改变,也将引起文件的数据结构的改变,因此数据与程序之间缺乏独立性。
  • 无法应对突发事故(文件误删、磁盘故障等):一旦硬件设备发生了故障,那么数据可能将会有毁灭性的灾难。

2.3.3 数据库系统阶段

20 世纪 60 年代 后期 ,随着网络技术的发展,计算机软/硬件的进步,出现了数据库技术,这个阶段就是 数据库系统阶段

数据库系统阶段使用专门的数据库管理系统来管理数据,用户可以在数据库系统中建立数据库,然后在数据库中建立表,最后将数据存储在这些表中,然后用户就可以直接通过 数据库管理系统 来查询表中的数据。

相对于 文件系统 来说,数据库系统 实现了数据结构化 。在文件系统中,独立文件内部的数据一般是有结构的,但 文件之间不存在联系 ,因此 整体来说是没有结构的 。 数据库系统虽然也常常分成许多单独的数据文件,但是它更注意同一数据库中各数据文件之间的相互联系。

这个阶段的特点是:

  • 数据由数据库管理系统统一管理和控制 :数据的安全性保护、数据的完整性检查、并发控制、数据库恢复
  • 数据共享性高,冗余度低
  • 数据独立性强
  • 数据粒度小

数据粒度:数据的细化程度,细化程度越高,粒度越小;细化程度越低,粒度越大。

3 数据库(DataBase)

3.1 什么是数据库

直白的讲,所谓的数据库从字面上理解,数据库就是一个存储数据的仓库。

小姐姐疑问

3.2 现实世界中的数据库

  • 京东的仓库

我们在京东购买商品的时候,京东需要从他们的商品仓库中找到我们想要的商品,然后通过快递送到我们手中。仓库中的每个商品我们都可以将它们抽象成一个一个的数据。

  • 超市购物

我们在超市购物的时候,收银员给我们结账的时候,收银员使用条形码扫描器扫描商品,扫描器连接着一个访问超市所有商品的数据库,通过扫描就可以知道顾客购买的商品的价格等信息。

  • 图书馆

图书馆中的每一本图书的资料、读者信息等等,都保存在一个数据库中。

  • 高校

我们大学中的每个学生的信息,包括课程信息、奖学金等等,都保存在学校的一个名为 学生管理系统 中。

以上就是我们日常生活中常见的数据库应用,虽然我们平常对这些数据库见惯不怪,但其实数据库系统是一个相当复杂的技术,至今已经有 60 多年的发展历史了。

3.3 数据库管理系统(DataBase Management System, DBMS)

3.3.1 什么是数据库管理系统

在了解现实世界中的数据库之后,提到了一个概念:学生管理系统 ,什么是管理系统呢?

数据库管理系统 是数据库的核心软件之一,它位于用户层与操作系统之间,是一个数据管理软件,用于 建立使用维护 数据库。

我们知道 数据库 就是一个存储数据的 仓库 ,然而这些数据都是杂乱无章的,没有秩序的,想要从中得到我们想要的数据,简直就是大海捞针。因此 数据库管理系统 就诞生了,它存在的价值就是 方便人们组织和管理数据 ,通过 数据库管理系统 ,我们就可以很容易的从一大堆杂乱无章的数据中找出我们想要的数据。

就比如 学生管理系统 ,通过学生管理系统我们可以很容易找出某一个学生的信息。

3.3.2 数据库管理系统的由来

一开始呢,我们在保存数据的时候,随意的将数据存档到一个文件中,除此之外,数据的存储格式也是千差万别的,到底是如何存储完全取决于我们自己,比如说如下这种情况:

"""
- 张三
zhangsan|123|playing

- 李四
lisi-123-dancing

- 王五
wangwu~123~singing
"""

不同的人采用了不同的数据存储格式,那么回顾一下 软件开发目录规范软件开发目录规范 就是在一定层面上限制了数据的存储,比如说:数据文件必须保存在 db 目录

  • bin :存放启动文件
  • conf :存放配置文件
  • lib :存放公共资源库
  • core(view) :存放核心业务逻辑
  • interface :存放功能接口
  • db :存放数据文件
  • README.md :项目说明文件
  • log :存放日志文件

假设如上目录是一个单机游戏 圣安地列斯(GTA SA) ,那么每个人的游戏记录只是保存在了自己的计算机上面,注册登录的账号也只能在自己的计算机上有效。

圣安地列斯logo

但是接下来,

  • 需求:想要实现在 任意 一台计算机上都能获取到自己的那个游戏记录,那么这个该如何解决呢?

    • 解决方案:将所有的数据统一集中起来,存放在一台专用的计算机上,每个客户端需要数据的时候都去那台专用的计算机上拿数据,这样的计算机,我们称之为 数据库服务器
  • 弊端:所有的数据全部存在一台 数据库服务器 上,万一这个 数据库服务器 宕机了怎么办?

    • 解决方案:建立多台 数据库服务器 ,多台 数据库服务器 之间的数据同步更新。这样的架构我们称之为 数据库集群

3.3.3 数据库管理系统的价值

数据库管理系统主要提供了以下几种功能:

  • 数据定义功能

DBMS 提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。

  • 数据操纵功能

DBMS 还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等。

  • 数据库的运行管理

数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。例如:

  • 数据的完整性检查功能保证用户输入的数据应满足相应的约束条件
  • 数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据
  • 数据库的并发控制功能使多个用户可以在同一时刻并发地访问数据库的数据
  • 数据库系统的故障恢复功能使数据库运行出现故障时可以进行数据库恢复,以保证数据库可靠地运行
  • 提供方便、有效地存取数据库信息的接口和工具

编程人员可通过编程语言与数据库之间的接口进行数据库应用程序的开发。数据库管理员(DataBase Administrator,DBA)可通过提供的工具对数据库进行管理。

  • 数据库的建立和维护功能

数据库功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监控、分析功能等。

3.4 数据库的价值

随着互联网技术的高速发展,预计 2020 年底全世界网民的数量将达到 50 亿。网民数量的增加带动了网上购物、微博,网络视频等产业的发展。那么,随之而来的就是庞大的网络数据量。

大量的数据正在不断产生,那么如何安全有效地存储、检索,管理它们呢?于是对数据的有效存储、高效访问、方便共享和安全控制等问题成为了信息时代一个非常重要的问题。

使用数据库可以高效且条理分明地存储数据,它使人们能够更加迅速和方便地管理数据,主要体现在以下几个方面。

  1. 数据库可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。

数据库可以对数据进行分类保存,并且能够提供快速的查询。例如,我们平时使用百度搜索内容时,百度也是基于数据库和数据分类技术来达到快速搜索的目的。

  1. 数据库可以有效地保持数据信息的一致性、完整性、降低数据冗余。

可以很好地保证数据有效、不被破坏,而且数据库自身有避免重复数据的功能,以此来降低数据的冗余。

  1. 数据库可以满足应用的共享和安全方面的要求,把数据放在数据库中在很多情况下也是出于安全的考虑。

如果把所有员工信息和工资数据都放在磁盘文件上,则工资的保密性就无从谈起。如果把员工信息和工资数据放在数据库中,就可以只允许查询和修改员工信息,而工资信息只允许指定人(如财务人员)查看,从而保证数据的安全性。

  1. 数据库技术能够方便智能化地分析,产生新的有用信息。

超市中把商品销售信息保存在数据库中,每个月销售情况的排名决定了下半月的进货数量。数据库查询的结果实际上产生了新的数据信息。

3.5 数据库系统(DataBase System, DBS)

数据库系统由 硬件软件 共同构成。

硬件主要用于存储数据库中的数据,包括计算机、存储设备等。

软件部分主要包括 数据库管理系统 、支持数据库管理系统运行的 操作系统 ,以及支持多种语言进行应用开发的访问技术等。

数据库系统是指在计算机系统中引入数据库后的系统。完整的数据库系统结构关系如图所示:

DBS

由图可知,一个完整的数据库系统一般由 数据库数据库管理系统应用开发工具应用系统数据库管理员用户 组成。

数据库系统 主要有以下 3 个组成部分:

  1. 数据库:用于存储数据的地方

数据库(DataBase,DB)提供了一个存储空间来存储各种数据,可以将数据库视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。

  1. 数据库管理系统:用于管理数据库的软件

数据库管理系统(Database Management System,DBMS)是用户创建、管理和维护数据库时所使用的软件,位于用户和操作系统之间,对数据库进行统一管理。DBMS 能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。

虽然已经有了 DBMS,但是在很多情况下,DBMS 无法满足对数据管理的要求。

  1. 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充

数据库应用程序(DataBase Application)的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与 DBMS 进行通信、访问和管理 DBMS 中存储的数据,允许用户插入、修改、删除数据库中的数据。

3.6 数据库的分类

我们平时听到别人说数据库,其实包括了两个方面:

  • 数据库管理系统
  • 安装有数据库管理系统的计算机

我们这里指的是第一种:数据库管理系统 ,目前较为流行的数据库管理系统有 MySQLSQL ServerOracleDB2 等。

image-20210131134826943

However,这些流行的数据库中,大致上分为了两大类:

  • 非关系型数据库
  • 关系型数据库

3.6.1 非关系型数据库

非关系型数据库又称为 NoSQL(Not Only SQL) ,意思是:不仅仅是 SQL 。通常指的是数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。

  • 优点

    • 非关系型数据库存储数据的格式可以是 key-value 的形式、文档形式、图片形式等,使用灵活,应用场景广泛。
    • 速度快、效率高,可以利用 RAM 或者 HDD 来存储数据,而关系型数据库只能使用 HDD 来存储数据。
    • 海量数据的维护和处理非常轻松
    • 扩展简单、高并发、高稳定性、成本低廉
    • 可以实现数据的分布式处理
  • 缺点

    • 非关系型数据库暂时不提供 SQL 支持,学习和使用成本较高。
    • 非关系型数据库没有 事务 处理,没有保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。
    • 功能没有关系型数据库完善。
mongodb数据存储形式

常见的非关系型数据库:MongoDBRedisMemcached

3.6.2 关系型数据库

关系型数据库是建立在 关系模型 基础上的数据库,借助于集合、代数等数学概念和方法来处理数据库中的数据。简单说,关系型数据库是由多张能互相连接的表组成的数据库。

  • 优点
    • 都是使用表结构,格式一致,易于维护。
    • 使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
    • 数据存储在磁盘中,能够永久存储。
  • 缺点
    • 读写性能比较差,不能满足海量数据的高效率读写。
    • 不节省空间。因为建立在关系模型上,就要遵循某些规则,比如:数据中某字段值即使为空仍要分配空间。
    • 固定的表结构,灵活度较低。
name passcode hobby
张三 123 playing
李四 123 dancing
王五 123 singing

每个字段(也就是表头),拥有一定的存储类型的限制,比如说:姓名(name)只能存储字符串类型的数据。

我们将要学习的 MySQL 就是 关系型数据库Oracle 也是 关系型数据库,并且比 MySQL 性能强悍,但是为什么我们不选择 Oracle 呢?这里有个恐怖的原因,因为它是付费的 😂 而且非常的贵,一般只有大型国企才用得起,维护一次至少需要 100K+

常见的关系型数据库:OracleDB2MySQLSQL ServerAccess

posted @ 2021-03-12 22:20  码动世界  阅读(134)  评论(0编辑  收藏  举报