当前位置: 首页 > news >正文

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):服务器给客户端返回的数据

服务器的特点:

  1. 被动接受请求 并 返回响应
  2. 服务器往往是要给多个客户端提供服务,而不是只给一个
    少数情况下,存在服务器只给一个客户端提供服务。(分布式系统中,就会存在 服务器之间 相互调用的情况,比如 服务器A请求 服务器B 的过程中,A就相当于 B 的客户端了,此时 B 就是 A 的专属服务器
  3. 服务器不知道客户端啥时候发来请求,因此只能随时准备

    手机上的各种软件 大部分都是“客户端”,“服务器”一般接触的比较少。

    安装好MySQL后,就会有MySQL的服务器和客户端。服务器不像客户端,一般是没有“界面”的。

MySQL服务器


MySQL客户端

    虽然MySQL客户端和服务器在同一个主机上,但仍然是通过网络来进行交互的。MySQL的客户端和服务器可以在不同主机上(工作中常见的情况 --> 客户端在一个主机,客户端只是一个和用户交互的界面;服务器在另一个主机,往往这个主机对于配置的要求就得更高一些)

 * 客户端 和 服务器 谁是本体?——服务器是本体,负责组织、管理、存储数据。

    上述的客户端是 命令行客户端,其实还有一些 图形化界面 的客户端,也是可以使用的。但本质上都是要给服务器发起请求,服务器返回响应。使用图形化界面门槛是更低的,但实际工作过程中,很多时候无法使用图形化界面客户端,但是 命令行 客户端肯定能够使用。 


 * 服务器是使用自己的哪个部位来存储数据的呢?

一台电脑,大概分成几个部分:

  1. CPU(中央处理器,进行各种各样的算术运算和逻辑判断)
  2. 内存(存储空间小,访问速度快,成本更高,数据易失)
  3. 硬盘(存储空间大,访问速度慢,成本更低,数据持久存储 非易失)
  4. 电源
  5. 主板
  6. 散热器
  7. 显卡(GPU,只能进行一些特定的运算和逻辑,AI时代,显卡非常关键)
  8. 机箱

    其中计算机主要依靠内存和硬盘。对于数据库来说,肯定希望持久存储,且对于存储空间需求更大,希望成本更低,因此数据库选择使用硬盘来存储数据(同时意味着 访问操作比较慢)

    软盘,U盘,光盘,硬盘都统称为外存。


学习 数据库 的使用 --> 基于 SQL 编程语言来对数据库进行操作。

SQL的画风 和 C及java 的差异很大:

  • SQL重点表述的是 “需求”,即希望得到的结果,至于 结果 是如何得到的,SQL中并不关键,都是 数据库服务器 在背后做好了。
  • Java等语言重点表述的是“逻辑”,即做一件事情怎么做

    硬盘上存储的数据,先划分成多个“数据库” ,每个数据库里面又包含很多“表”,每个“表”中又包含若干行,每个行里又有若干列。

(这里的 “数据库” 指的是 “数据集合”,可以把一些有关联的数据表,放到同一个“数据库”中)

例:某个公司开发的程序

  • 教务系统网站里需要一些 学生数据,作业数据....(放到数据库1)
  • 学习论坛网站里需要同学们之间讨论的内容,帖子数据....(放到数据库2)
  • 招聘网站里需要公司数据,招聘信息数据....(放到数据库3)

这些不同逻辑的“数据集合”,物理上是存储在同一个MySQL服务器的硬盘上的。


http://www.mrgr.cn/news/50852.html

相关文章:

  • 道路车辆功能安全 ISO 26262标准(4-3)—系统级产品开发
  • PHP 函数 func_num_args() 的作用
  • 编程练习7 5G网络建设
  • 初识Linux
  • DB-GPT 安装
  • 基于Leaflet的高德AOI数据在天地图底图可视化纠偏实践
  • 视觉的边界填充、数值计算和腐蚀操作
  • jeston nano配置虚拟环境记录
  • 每日OJ题_WY3小易的升级之路_数学模拟_C++_Java
  • 离宝安羊台山登山口最近的停车场探寻
  • 港大和字节提出长视频生成模型Loong,可生成具有一致外观、大运动动态和自然场景过渡的分钟级长视频。
  • 百度地图怎么上传店铺定位?
  • RK3568平台开发系列讲解(调试篇)嵌入式必备技能:万用表使用指南
  • 99. UE5 GAS RPG 被动技能实现
  • 警惕勒索病毒的最新变种bixi,您需要知道的预防和恢复方法。
  • Java_EE(反射技术)
  • 标准IO:fread/fwrite
  • java真的正在越来越失去竞争力了吗
  • 前端入门学习之css盒子原则
  • 基于Verilog的汉明码编码器/解码器设计