MySQL基础(一)
目录
一. 什么是数据库
二. 数据库基本概念
2.1 常见数据库类型
1. Oracle
2. MySQL
3. SQL Server
4. SQLite
2.2 数据库的类别
1. 关系型数据库
2. 非关系型数据库
三. MySQL数据库概要
一. 什么是数据库
数据库(Database)是一个按照数据结构来组织、存储和管理数据的仓库。在数据库中,数据可以方便地添加、查询、更新和删除。
与数据结构的区别:
- 数据库是一类软件,这样的软件能够把很多数据组织起来,方便进行后续的增删改查。
- 数据结构是一个学科,这个学科讨论的也是把很多数据组织起来,方便后续进行增删改查。
* 数据库底层的实现过程中,也会用到很多的数据结构。
二. 数据库基本概念
2.1 常见数据库类型
1. Oracle
- Oracle数据库是由 Oracle公司(维护java的公司) 开发和维护的一种关系数据库管理系统,是全球最流行的商业数据库之一。
- 特点:具有高性能,可扩展性,数据完整性,安全性,可靠性等
Oracle数据库 这么好,为什么不学习 Oracle数据库呢?—— 收费 且 需要搭配 “小型机”使用(一般要管理非常重要数据 及 不差钱的公司 会使用 Oracle数据库)
2. MySQL
- MySQL是一个开源的关系数据库管理系统。由MySQL AB公司开发的,后来该公司被 Sun 公司收购,再后来 Sun公司 被 Oracle公司 收购。尽管 MySQL 现在是 Oracle 的一部分,但它仍然保持着开源的特性。 (在MySQL被收购以后,MySQL的开源者把MySQL的代码又搞出了一个分支,继续开源维护——MariaDB)
- 特点:可以跨平台,轻量级,可扩展性,数据安全性等
3. SQL Server
- SQL Server是由 微软公司 开发的一个关系数据库管理系统。虽然 SQL Server 很好,但是在市场上占有的份额非常少,因为微软捆绑销售,不仅要花钱,还要搭配 Windows Server 操作系统使用(由于主流系统是 Linux,很多相关开发工具和程序库都是围绕Linux展开)
- 特点:集成性,高性能,可靠性,安全性等
4. SQLite
- 也是一个非常知名的关系数据库,影响力非常大。
- 特点:小/轻量(一共就是一个1MB大小左右的程序,非常适合给那些性能不高,硬件配置也不高的设备使用,比如 安卓手机就内置了 SQLite)
2.2 数据库的类别
上述的4个数据库,都有一个共同的名字 --> “关系型数据库”
1. 关系型数据库
按照比较严格整齐的结构来组织数据的,比如 按照“表格”的形式。
表格 是关系型数据库中的基本结构,每个表格都有唯一的名称,由行(记录)和列(字段)组成。
- 行:表中的每一行代表一个记录,即一组相关的数据。例如,在顾客信息表中,每一行可能代表一个顾客的详细信息。
- 列:表中的每一列代表一个字段,即记录中的一个属性。例如,顾客信息表可能包含姓名、地址、电话号码等列。
除此之外,还有一类“非关系型数据库”(NoSQL)
2. 非关系型数据库
不太严格,更松散的方式来组织数据,比如 按照 “键值对” / “文档”的形式。像 Redis, MongoDB,HBase......都是非关系数据库
键值存储 是最基本的NoSQL数据库类型,数据以键值对的形式存储(数据结构中的Key-Value)
文档存储数据库用于存储、检索和管理文档,这些文档通常是JSON、XML或其他格式。(每一个“记录”,都是一个“文档”,一个文档有哪些属性都是可以灵活定义的,文档之间的属性不一定必须一样)
关系型数据库 可以针对数据的处理操作,提供更多的功能和更多的校验能力;但是非关系型数据库针对数据的处理操作提供的功能有限,校验能力也有限,但是效率会更高,更适合 “分布式系统” 使用。(由于当前互联网发展程度比之前发达很多,上网设备数量更多,要处理的数据也更多了,一台机器已无法处理过来,因此要使用多台机器。)
分布式系统是由多个独立计算机组成的网络,这些计算机协作执行任务,对外表现为一个统一的系统。在分布式系统中,组件分布在不同的网络节点上,它们通过消息传递进行通信,共同完成任务。
三. MySQL数据库概要
MySQL 是一个 “客户端 - 服务器” 结构的程序(CS结构 即 Client-Server)
安装 MySQL 意味着 要安装好 客户端 和 服务器。
客户端 - 服务器结构 是一种常见的网络计算模型,它将网络中的计算机分为两类:客户端(Client)和服务器(Server)。在这种模型中,客户端负责发送请求(主动发送网络通信),服务器负责接收请求并响应这些请求(被动接受网络通信)。
- 请求(request):客户端给服务器发送的数据
- 响应(response):服务器给客户端返回的数据
服务器的特点:
- 被动接受请求 并 返回响应
- 服务器往往是要给多个客户端提供服务,而不是只给一个
少数情况下,存在服务器只给一个客户端提供服务。(分布式系统中,就会存在 服务器之间 相互调用的情况,比如 服务器A请求 服务器B 的过程中,A就相当于 B 的客户端了,此时 B 就是 A 的专属服务器)- 服务器不知道客户端啥时候发来请求,因此只能随时准备
手机上的各种软件 大部分都是“客户端”,“服务器”一般接触的比较少。
安装好MySQL后,就会有MySQL的服务器和客户端。服务器不像客户端,一般是没有“界面”的。
MySQL服务器
MySQL客户端
虽然MySQL客户端和服务器在同一个主机上,但仍然是通过网络来进行交互的。MySQL的客户端和服务器可以在不同主机上(工作中常见的情况 --> 客户端在一个主机,客户端只是一个和用户交互的界面;服务器在另一个主机,往往这个主机对于配置的要求就得更高一些)
* 客户端 和 服务器 谁是本体?——服务器是本体,负责组织、管理、存储数据。
上述的客户端是 命令行客户端,其实还有一些 图形化界面 的客户端,也是可以使用的。但本质上都是要给服务器发起请求,服务器返回响应。使用图形化界面门槛是更低的,但实际工作过程中,很多时候无法使用图形化界面客户端,但是 命令行 客户端肯定能够使用。
* 服务器是使用自己的哪个部位来存储数据的呢?
一台电脑,大概分成几个部分:
- CPU(中央处理器,进行各种各样的算术运算和逻辑判断)
- 内存(存储空间小,访问速度快,成本更高,数据易失)
- 硬盘(存储空间大,访问速度慢,成本更低,数据持久存储 非易失)
- 电源
- 主板
- 散热器
- 显卡(GPU,只能进行一些特定的运算和逻辑,AI时代,显卡非常关键)
- 机箱
其中计算机主要依靠内存和硬盘。对于数据库来说,肯定希望持久存储,且对于存储空间需求更大,希望成本更低,因此数据库选择使用硬盘来存储数据(同时意味着 访问操作比较慢)
软盘,U盘,光盘,硬盘都统称为外存。
学习 数据库 的使用 --> 基于 SQL 编程语言来对数据库进行操作。
SQL的画风 和 C及java 的差异很大:
- SQL重点表述的是 “需求”,即希望得到的结果,至于 结果 是如何得到的,SQL中并不关键,都是 数据库服务器 在背后做好了。
- Java等语言重点表述的是“逻辑”,即做一件事情怎么做
硬盘上存储的数据,先划分成多个“数据库” ,每个数据库里面又包含很多“表”,每个“表”中又包含若干行,每个行里又有若干列。
(这里的 “数据库” 指的是 “数据集合”,可以把一些有关联的数据表,放到同一个“数据库”中)
例:某个公司开发的程序
- 教务系统网站里需要一些 学生数据,作业数据....(放到数据库1)
- 学习论坛网站里需要同学们之间讨论的内容,帖子数据....(放到数据库2)
- 招聘网站里需要公司数据,招聘信息数据....(放到数据库3)
这些不同逻辑的“数据集合”,物理上是存储在同一个MySQL服务器的硬盘上的。