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

 

目录

     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.

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

各种类型无人机性能及优缺点技术详解

无人机系统种类繁多、用途广泛,且特点鲜明,致使其在尺寸、质量、航程、航时、飞行高度、飞行速度以及任务载荷等多方面都有较大差异。以下是对几种常见类型无人机的性能、优缺点技术的详细解析: 一、固定翼无人机 1.性能: 固定翼…

yolo辅助我们健身锻炼

使用软件辅助健身能够大大提升运动效果并帮助你更轻松地达成健身目标。确保每次锻炼都更加高效且针对性强,精确记录你的训练进度,帮助你更清晰地看到自己的进步,避免无效训练。 借助YOLO11的尖端计算机视觉技术,跟踪和分析锻炼变得异常简单。它可以无缝检测和监控多种锻炼…

Linux修改系统及终端命令行中的用户名

0、前言 最近捣鼓了一下一个很久之前的用过的ubuntu系统,但是之前随意设置了一个用户名,突发奇想地去修改了一下这个ubuntu系统的系统用户名,发现修改起来还是有些麻烦,并没有那种一键修改的选项,所以在这篇博客下面记…

基于智能语音交互的智能呼叫中心工作机制

在智能化和信息化不断进步的现代,智能呼叫中心为客户提供高质量、高效率的服务体验,提升众多品牌用户的满意度和忠诚度。作为实现智能呼叫中心的关键技术之一的智能语音交互技术,它通过集成自然语言处理(NLP)、语音识别…

Linux条件变量线程池详解

一、条件变量 【互斥量】解决了线程间同步的问题,避免了多线程对同一块临界资源访问产生的冲突,但同一时刻对临界资源的访问,不论是生产者还是消费者,都需要竞争互斥锁,由此也带来了竞争的问题。即生产者和消费者、消费…

「Mac畅玩鸿蒙与硬件38」UI互动应用篇15 - 猜数字增强版

本篇将带你实现一个升级版的数字猜谜游戏。相比基础版,新增了计分和历史记录功能,用户可以在每次猜测后查看自己的得分和猜测历史。此功能展示了状态管理的进阶用法以及如何保存和显示历史数据。 关键词 UI互动应用数字猜谜状态管理历史记录用户交互 一…

【IMF靶场渗透】

文章目录 一、基础信息 二、信息收集 三、flag1 四、flag2 五、flag3 六、flag4 七、flag5 八、flag6 一、基础信息 Kali IP:192.168.20.146 靶机IP:192.168.20.147 二、信息收集 Nmap -sP 192.168.20.0/24 Arp-scan -l nmap -sS -sV -p- -…

【C#】书籍信息的添加、修改、查询、删除

文章目录 一、简介二、程序功能2.1 Book类属性:方法: 2.2 Program 类 三、方法:四、用户界面流程:五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序,用于管理书籍信息。这个程序将允许用户添加、编辑、查看…

【Code First】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

CLIP模型也能处理点云信息

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

配置宝塔php curl 支持http/2 发送苹果apns消息推送

由于宝塔面板默认的php编译的curl未加入http2的支持,如果服务需要使用apns推送等需要http2.0的访问就会失败,所以重新编译php让其支持http2.0 编译方法: 一、安装nghttp2 git clone https://github.com/tatsuhiro-t/nghttp2.git cd nghttp…

单片机学习笔记 12. 定时/计数器_定时

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

pytest自定义命令行参数

实际使用场景:pytest运行用例的时候,启动mitmdump进程试试抓包,pytest命令行启动的时候,传入mitmdump需要的参数(1)抓包生成的文件地址 (2)mitm的proxy设置 # 在pytest的固定文件中…

【排序用法】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

sscanf与sprintf函数

本期介绍🍖 主要介绍:sscanf()、sprintf()这对输入/输出函数,并详细讲解了这两个函数的应用场景。 概述🍖 在C语言的输出和输入库中,有三对及其相似的库函数:printf()、scanf()、fprintf()、fscanf()、spri…

HCIE IGP双栈综合实验

实验拓扑 实验需求及解法 本实验模拟ISP网络结构,R1/2组成国家骨干网,R3/4组成省级网络,R5/6/7组成数据中 心网络。 配置所有ipv4地址,请自行测试直连。 R1 sysname R1 interface GigabitEthernet0/0/0ip address 12.1.1.1 255.…

关于NXP开源的MCU_boot的项目心得

MCU的启动流程细查 注意MCU上电第一个函数运行的就是Reset_Handler函数,下图是表示了这个函数做了啥事情,注意加强一下对RAM空间的段的印象,从上到下是栈,堆,.bss段,.data段。 bootloader的难点 固件完…

[October 2019]Twice SQL Injection

有一个登录框和一个注册页面,题目也说这个是二次注入,那么就用二次注入的payload就行 1 union select database()# //爆库 1 union select group_concat(table_name) from information_schema.tables where table_schemactftraining# //爆表 1 union …

更多开源创新 挑战OpenAI-o1的模型出现和AI个体模拟突破

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

组合问题变式——选数(dfs)

代码随想录听课笔记1——回溯算法-CSDN博客 这是从1&#xff0c;2&#xff0c;3...,n个数字中选出k个数的组合&#xff0c;输出组合的全部可能的代码 //组合&#xff1a;返回1-n中所有个数为k的组合 1,2,3,4 #include<bits/stdc.h> using namespace std; #define MAX 1…