【MySQL — 数据库基础】深入理解数据库服务与数据库关系、MySQL连接创建、客户端工具及架构解析

news2025/1/11 20:47:54

 

目录

     1. 数据库服务&数据库&表之间的关系    

    1.1 复习 my.ini    

    1.2 MYSQL服务基于mysqld启动而启动     

    1.3  数据库服务的具体含义     

   1.4 数据库服务&数据库&表之间的关系     

     2. 客户端工具    

    2.1 客户端连接MySQL服务器    

    2.2 客户端与数据库服务器之间的通讯方式     

    2.2.1  C/S架构与B/S架构    

    2.2.2 C/S架构    

    2.2.3 B/S架构    

    2.3 图像化客户端工具    ​​​​​

    3. 创建一个新的连接    

    4. SQL的简介   

    4.1 什么是SQL    

    4.2 SQL分类    

    5. MySQL架构    

    6. 存储引擎    

    6.1 简介    

    6.2 查看存储引擎    

    6.3 存储引擎对比    


    文章介绍    


本文主要介绍了数据库服务、客户端工具、SQL语言、MySQL架构以及存储引擎的基本概念和操作。

以上内容涵盖了数据库服务的基础知识,客户端工具的使用,SQL语言的介绍,MySQL的架构和存储引擎的详细信息,为读者提供了一个全面的数据库知识概览。

     1. 数据库服务&数据库&表之间的关系    


  • 数据库服务器是指在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库;
  • 一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 数据库服务器、数据库和表的关系如下:


我们把数据库安装好之后,在服务列表中,就会有MYSQL的服务项 ,并且处于正在运行的状态;

要确保当前系统有一个可以运行的数据库服务即可,不用的可以通过属性调整启动类型,建议使用的MYSQL修改成自动;

 


    1.1 复习 my.ini    


我们在上次学习MYSQL配置文件时,通过记事本打开my.ini,在服务区域,我们配置了端口号,mysql服务在本地的数据目录,字符集,排序规则,存储引擎,和产生日志对应的目录(在my.ini中配置好产生日志的路径即可);

里面的内容中有一个[mysqld]节点,mysqld.exe 在 my.ini 配置文件中,对应的是[mysqld]节点;


    1.2 MYSQL服务基于mysqld启动而启动     


 数据库安装成功之后,运行起来了一个程序,对外提供了一个网络服务,这个服务我们起的名字是MYSQL8.0,这个服务是怎么启动起来的呢?

mysqld.exe是在计算机上安装的数据库服务,它启动起来,意味着mysql服务也启动了;


我们可以配置mysql服务为自启动,mysql服务会跟随系统启动而启动,就可以对外提供持续(7*24h)的数据库服务;

目前安装在本机的MYSQL,是在一个开发环境中,还没有让数据库保存用户业务产生的大量的数据,就开发机而言,随时可以关闭数据库服务;

但是在公司的生产环境(线上环境),一般是把MYSQL安装在一个专用的服务器中(配置较高的电脑),这个服务器只要启动,如果没有产品迭代,或者大规模更新,这个数据库服务一般是不会关闭的,7*24h持续对外界提供服务,因为业务是不能停的;

mysqld后面的d表示deamon,是一个守护程序,所有的服务一般是以守护进程,常驻在系统中的;


    1.3  数据库服务的具体含义     


数据库服务,可以提供数据库的功能,让用户把数据存入数据库中;对外连接客户端,为客户端提供请求的地址,让客户端找到数据库所在的这台服务器,这个过程就是一个服务;


   1.4 数据库服务&数据库&表之间的关系     


    数据库服务,和相关的记录数据的结构     


安装数据库之后,本地提供了数据库服务,数据库服务中包含了很多个数据库,而不是只有一个数据库;比如说,可以在MYSQL数据库服务中,创建多个数据库

每一个应用程序,只要有数据产生,都有一个与之对应的一个数据库,我们就可以通过学习到的数据库操作,在提高MYSQL服务的机器上,创建属于自己的数据库;

所以一定要把数据库和数据库服务分开,一个数据库服务中,可能包含了很多个数据库

每一个数据库保存着不同的数据,比如教务系统,会保存一些关于课表,作业,师生的一些信息,这些信息会被设计成一个个的表,这些信息会存放在不同的表中,用于区分:

这就是数据库服务与数据库之间的关系,数据库中又包含了各自应用程序所涉及到的一些数据,按照数据不同发分类,将这些数据分成表;如学生表中,记录的就是关于学生的信息,每一条学生信息,都会变成一个记录;


对于学生记录,一个学生信息可以在一个表中生成一个记录:

关于学生信息的信息项,可以继续加,如性别,年龄等待这些信息项,包括表中的学号,姓名,班级这些关于学生信息的描述,把每一个都叫做一列,这个描述叫做字段/列,类似面向对象中类的属性;

在软件设计的时候,先要根据需求内容,把类抽象出来,然后定义好类中的属性;数据库中的表可以类比成这个类,表中的每一列可以类比成类中的每一个属性,一条数据(所有列组成的一条记录),叫做一个数据行,类似面向对象中的使用类实例的对象;


     总结     


  • 一台计算机提供的数据库服务中,可以创建多个数据库,不同的数据库记录不同的数据,每个数据库中有很多张数据表,每张数据表有很多条数据行,每条数据行由很多个数据列组成的;
  • 数据库服务,数据库,表,行,列/字段是一个依次包含的关系;
  • 在我们创建表时,强烈建议每一张表都有编号列/编号字段;

     2. 客户端工具    


    2.1 客户端连接MySQL服务器    


     回顾    


在my.ini文件中: 

  • [client]节点下的配置,是所有关于客户端的一些工具;

  • [mysql]节点下的配置,是关于 mysql.exe ;

注意:mysqld.exe 是服务端的,mysql.exe 是客户端工具;


    通过终端指令运行 mysql.exe     


  • 1. 来到对应目录找到 mysql.exe,点击右键,通过终端打开,并输入mysql运行指令即可; 


  • 2. 如果直接打开终端,我们可以通过cd命令进入到目标路径;

我们要去mysql.exe的工作目录,我们就可以输入cd,并且拷贝PS要去到的目录:

cd 就是改变目标路径的意思;


  • 3. 输入启动 mysql 的指令


  • 4. 输入密码; 


  • 5.  配置好环境变量可直接在cmd执行mysql命令

     补充     


  • 6. 输入密码错误

  • 7. 使用快捷方式打开 mysql.exe 客户端 

  • 下面蓝色的路径,为复制的快捷方式的目标文件路径;
  • 第一个双引号中的路径和我们在 cmd 时指定的目标路径是相同的,”-uroot” " -p"也是需要我们手动输入的;
  • 后面表示指定默认字符集,utf8mb4,意味着在和服务器通信的过程中,使用utf8mb4来进行编码,就不会出现乱码的问题,所以推荐使用 UniCode结尾的快捷方式;

mysql.exe客户端只是在平时查看数据库信息的时候会用到,在编码的时候几乎不会用


    2.2 客户端与数据库服务器之间的通讯方式     


    2.2.1  C/S架构与B/S架构    


  • C/S架构即客户端/服务器架构模式
  • B/S架构即浏览器/服务器架构模式

    2.2.2 C/S架构    


C/S架构全称是客户端/服务器(Client/Server)架构,是常用的两层架构。客户端需要安装客户端软件,服务端程序运行在服务器上,提供Socket或数据库服务。使用客户端与MySQL数据库服务器通讯属于C/S架构

  • 常用于固定用户群体中。常见的C/S架构的应用,比如QQ,CCTALK,各种网络游戏等等,一般需要安装并且与服务器进行网络通信的都属于此类。

    优点    

  • 大部分业务都可以在客户端完成,充分利用本地的计算机资源
  • 响应速度快
  • 个性化定制能力强
  • 面向相对固定的用户群,对信息安全的控制能力强

    缺点    

  • 需要安装客户端才能使用
  • 维护成本高,任何一台电脑上的客户端出现问题都需要进行维护,升能过程繁琐

    2.2.3 B/S架构    


B/S架构全称是浏览器/服务器(Browser/Server)结构,分为Web浏览器、服务器程序、数据库服务三部分,可以理解为是对C/S架构一种改进。由于所有的业务逻辑都由服务器程序处理,所以客户端仅使用浏览器就可以完成所有操作,大大降低了客户端的维护成本。


B/S架构常用于对公开用户提供的网络服务中。比如常见的大型网站都属于此类。


    优点    

  • 客户端零维护,只需要安装一个浏览器即可
  • 所有业务都集中在服务器端,业务扩展非常方便
  • 维护成本低,只需要维护服务器即可

    缺点    

  • 服务器安全与业务处理能力需要花费很大精力与成本
  • 不同浏览器支持不尽人意

我们知道,数据库服务是一个网络服务,客户端是一个应用程序;

当客户端向服务器发送请求的时候,必须要带着访问目标,也就是说,这个客户端要访问哪一个数据库,访问数据库中的哪一个表,访问这个表的哪一行,或者访问哪一行中的哪一列,都是可以明确标注出来的;


服务器就会把处理的结果返回给客户端,客户端接收到这个结果,就完成了一次客户端与服务器完整的通信;

对于客户端与服务器之间的交互模型,我们称之为C/S架构(Client/Server);


客户端与服务器之间是通过网络进行交互的,我们现在使用本机客户端来访问本机服务器,是不是通过网络来连接的呢?是不是C/S架构呢?


  • 虽然我们访问的是本机的服务,但是还是通过网络服务的,只不过客户端与服务器在同一台电脑上而已;
  • MYSQL启动后,是通过网络服务连接的,肯定是对外提供网络服务的,对于本机来说,没有其他的端口可以提供给本机客户端访问的本机服务器;
  • 每台电脑上都有一个环回网卡,本地有一个固定的IP:127.0.0.1,代表本机的IP,不管当前机器也没有上网,只要访问127.0.0.1,访问的就是本机;也就是说,无论本机有没有网络,这个IP始终访问的都是本机地址;

总之,MYSQL是提供网络进行访问的;


如果在工作中连接数据库,可以指定IP地址去连接相应的服务器,这个服务器可能是内网的,也可能是外网的;这时候会出现一个安全性问题:

  • 如果把端口号发布到公网/外网上的时候,其他机器都可以访问该服务器,一旦有人把这个用户名和密码猜对之后,就可能会对我们的数据库进行入侵,对数据库数据进行加密,破坏等等......也就是说,如果把服务公开到公网,可能会给黑客带来可乘之机;

鉴于这样的安全问题,云服务器厂商,或者自建机房,有很多技术手段可以拦截,比如说:可以通过防火墙,或者白名单,来限制可以连接服务器的机器;


     简单介绍一下白名单的作用:    


把指定IP加到白名单中,这个白名单IP上对应的机器才可以连接服务器,MYSQL安装完成之后,默认的安全策略就是白名单策略,本机可以连,但是在同一个网段下的机器无法连接,除非把这个机器的IP加到白名单中;所以,只有白名单中的机器才可以访问目标主机;

在公司里,一般都是把服务器部署到内网中,通过外网是无法连接上数据库服务器的;


当外网无法连接上数据库服务器的时候,可以通过跳板机去连接服务器;

可以先通过连接跳板机A,然后通过A中的命令行工具,来连接数据库服务器,这样的方式也就解决了安全问题,这是公司中常用的方式; 


    2.3 图像化客户端工具    ​​​​​


图像客户端工具主要用于编写SQL断码,SQL是一个操作数据库的工具,也可以算是一种变成语言,也需要编辑器编写SQL语句;如果使用客户端命令行编写SQL语句,效率和体验都不好,所以需要图形化客户端工具; 


如果系统中没有 workbench,可以直接打开之前下载的安装包:


点击add:


添加workbench


也可以去官网下载: 


 类似于workbench这样的图形化客户端工具,还有:


     3. 创建一个新的连接    


 



    所有可视化工具都几乎分为这几个区    


    4. SQL的简介   


    4.1 什么是SQL    


SQL(Structured Query Language)是结构化查询语言的简称,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库。

我们知道MYSQL是关系型数据库,这时候需要通过MYSQL来存储数据,我们对数据库的所有的操作该如何进行呢?我们如何操作数据库呢? 


首先,我们需要明确一点,数据库是用来保存数据的;那么操作数据库,就要使用工具/语言,就是SQL;


SQL是一个标准,也是一门语言,在所有数据库中,都用SQL来操作数据库,只不过不同数据库,会在这个标准上进行一些细微的改动,比如一些关键字会作一些调整,查询的先后顺序会作一些调整;如 Sever SQL,Oracle,MySQL......可能略有不同,包括一些编写处理业务的程序等等,但是大体上是一样的;


在数据库层面,通过SQL这门语言,来编写数据库相应的操作;SQL是一门语言,意味着也可以定义一些变量,处理一些业务;


在一些金融行业,有些业务的代码中业务逻辑非常少,把大量的业务逻辑放在数据库中执行,就相当于我们用Java代码写的一些逻辑实现,全部用SQL语言实现了一遍,让这些逻辑在数据库中执行;但是随着数据库处理的数据量越来越大,那么对数据库的性能要求越来越高,把这些业务逻辑又搬回到代码层层面,让数据库专门发挥对数据的存储功能,本身这个SQL是一门针对数据库操作的语言,和数据库是两个概念,不要弄混了;


对于学习SQL语言,因为数据库现在专门用于存储数据,我们只需要学习对数据的增删查改和稍微复杂一点的查询即可;因为查询有表关联,我们在查询的时候,把关联关系处理清楚即可支撑我们处理业务;


    4.2 SQL分类    


DDL【Data Definition Language】

数据定义语言,用来维护存储数据的结构代表指令:create,drop,alter

DML【Data Manipulation Language】

数据操纵语言,用来对数据(这里的数据可以理解为数据行)进行操作代表指令:insert,delete,update,select

DCL【Data Control Language】数据控制语言,主要负责权限管理和事务代表指令:grant,revoke,commit

    5. MySQL架构    


MySQL8.0服务器是由连接池、服务管理工具和公共组件、NoSQL接口、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。MySQL还为各种编程语言提供了一套用于外部程序访问服务器的连接器。整体架构图如下所示:


     6. 存储引擎     


    6.1 简介    


存储引擎是MySQL数据库处理数据的核心组件,不同的存储引擎对数据如何存储、索引、更新和查询的实现方式各有不同,在不同的业务场景可以选用合适的存储引擎。MySQL服务器采用可插拔的存储引擎架构,在服务器运行时可以动态的加载和卸载。


    6.2 查看存储引擎    


查看当前服务器支持哪些存储引擎可以使用SHOW ENGINES语句,结果如下图所示INNODB默认的存储引擎:


    6.3 存储引擎对比     


    Notes:    

  1. Implemented in the server,rather than in the storage engine.
  2. Compressed MyISAM tables are supported only when using the compressed row format.Tables usingthe compressed row format with MyISAM are read only.
  3. Implemented in the server via encryption functions.
  4. Implemented in the server via encryption functions;In MySQL5.7 and later,data-at-restencryption is supported.
  5. Implemented in the server via encryption functions;encrypted NDB backups as of NDB
  6. 8.0.22;transparent NDB file system encryption supported in NDB8.0.29 and later.
  7. Support for FULLTEXT indexes is available in MySQL5.6 and later.
  8. Support for geospatial indexing is available in MySQL5.7 and later.
  9. InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.

 

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

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

相关文章

记录关于阿里云智能媒体预览pdf文件的问题

pdf仅支持预览,不支持编辑,需要将权限设置成只读。 readonly参数一定要传,不能不传!!!! readonly的设置一定要用示例提供的方法!!!! 用WebofficeP…

FlyHttp 的设计思想:前端 API 自动化构建工具

FlyHttp的相关文章: FlyHttp 的诞生:从认识各种网络请求开始 FlyHttp 的设计思想:前端 API 自动化构建工具 FlyHttp 的使用:如何高效使用 FlyHttp,支持 JS、TS 项目 FlyHttp 的最佳实践:加速项目级 API…

WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路

2024年11月30日下午,由 deepin(深度)社区联合华中科技大学开放原子开源俱乐部、 RustSBI 开源社区和清华大学开源操作系统训练营共同举办的WHLUG(武汉Linux用户组)线下沙龙在华中科技大学成功举办。 本次活动聚集了50余…

K8S离线部署Nacos集群【Oracle作外部数据源】

一、前言 由于公司的要求下要使Nacos集群以Oracle作为外部数据源,前期咱们已经阐述了如何在本地搭建(Nacos集群搭建【Oracle作外部数据源】),本次将带领大家在k8s上部署Nacos集群并以Oracle作为外部数据源。 二、软件包 nacos-f…

MperReduce学习笔记下

自定义InputFormat合并小文件 案例需求 无论hdfs还是mapreduce,对于小文件都有损效率,实践中,又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。 案例分析 小文件的优化无非以下几种方式: …

Junit5 单元测试入门

基础知识 常用注解含义 Test:标记一个方法为测试方法BeforeEach:标记的方法会在每个测试方法执行前执行AfterEach:标记的方法会在每个测试方法执行后执行BeforeAll:标记的方法会在所有测试方法执行前执行一次AfterAll&#xff1…

【CSS in Depth 2 精译_065】第四部分:CSS 视觉增强技术 + 第 11 章 颜色与对比概述 + 11.1 通过对比进行交流

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 ✔️ 11.1.1 模式的建立 ✔️11.1.2 还原设计稿 ✔️ 11.2 颜色的定义 文章目录 第四部分 视觉增强技术 Visual e…

Java项目实战II基于微信小程序的作品集展示(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着移动互联网技术的飞速…

基于rpcapd与wireshark的远程实时抓包的方法

基于rpcapd与wireshark的远程实时抓包的方法 服务端安装wireshark侧设置 嵌入式设备或服务器上没有图形界面,通常使用tcpdump抓包保存为pcap文件后,导出到本地使用wireshark打开分析,rpcapd可与wireshark配合提供一种远程实时抓包的方案&…

记录一个Flutter 3.24单元测试点击事件bug

哈喽,我是老刘 这两天发现一个Flutter 3.24版本的单元测试的一个小bug,提醒大家注意一下。 老刘自己写代码十多年了,写Flutter也6年多了,没想到前两天在一个小小的BottomNavigationBar 组件上翻了车。 给大家分享一下事件的经过。…

JVM 类加载器有哪些?双亲委派机制的作用是什么?如何自定义类加载器?

类加载器分类 大家好,我是码哥,可以叫我靓仔,《Redis 高手心法》畅销书作者。 先回顾下,在 Java 中,类的初始化分为几个阶段: 加载、链接(包括验证、准备和解析)和 初始化。 而 类加载器&#x…

视频监控汇聚平台Liveweb视频安防监控实时视频监控系统操作方案

Liveweb国标GB28181视频平台是一种基于国标GB/T28181协议的安防视频流媒体能力平台。它支持多种视频功能,包括实时监控直播、录像、检索与回看、语音对讲、云存储、告警以及平台级联等功能。该平台部署简单、可扩展性强,支持全终端、全平台分发接入的视频…

Docker-Compose环境变量

Docker-Compose环境变量 背景配置文件修改docker-compose.yml在服务内部使用环境变量重新构建容器补充 背景 现状是通过Docker-Compose配置管理系统的各个容器服务、因为是微服务架构所以配置文件很多、但是例如数据库、redis、kafka等配置都是同一份但是需要在多个配置文件做…

cocotb pytest

打印python中的print , 应该使用 pytest -s pytest --junitxmltest_report.xml --htmlreport.html

openEuler yum 设置国内镜像

查看openEuler系统信息 cat /etc/os-release可以看到详细系统版本如下 NAME"openEuler" VERSION"24.09" ID"openEuler" VERSION_ID"24.09" PRETTY_NAME"openEuler 24.09" ANSI_COLOR"0;31"系统使用的版本是24.0…

电脑鼠标箭头一直闪烁怎么回事?原因及解决方法

电脑鼠标箭头不停闪烁,很多用户都曾遇到过,就是点击也无法点击,只能看到箭头一直闪动。造成这种故障的原因有很多,可能是硬件、软件或系统的问题。本文将介绍电脑鼠标箭头不停闪烁的可能原因和相应的解决方法,帮助大家…

【开源】A064—基于JAVA的民族婚纱预定系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…

Qt6.8 QGraphicsView鼠标坐标点偏差

ui文件拖放QGraphicsView,src文件定义QGraphicsScene赋值给图形视图。 this->scene new QGraphicsScene();ui.graph->setScene(this->scene);对graphicview过滤事件,只能在其viewport之后安装,否则不响应。 ui.graph->viewport…

TxT360: 一个大规模、高质量、多源融合的数据集,专为预训练大型语言模型设计。

2024-10-04, LLM360项目团队创建了TxT360数据集,这个数据集通过整合多种数据源,为预训练大型语言模型提供了丰富的训练材料,具有重要的研究和应用价值。 数据集地址:TxT360|预训练语言模型数据集|预训练数据集 一、研究背景&…

计算机网络-GRE基础实验二

前面我们学习了GRE隧道的建立以及通过静态路由指向的方式使得双方能够网络互联,但是通过静态路由可能比较麻烦,GRE支持组播、单播、广播因此可以在GRE隧道中运行动态路由协议使得网络配置更加灵活。 通过前面的动态路由协议的学习我们知道动态路由协议都…