【MySQL 探索者日志 】第二弹 —— 数据库基础

MySQL系列学习笔记:

MySQL探索者日志__Zwy@的博客-CSDN博客

各位于晏,亦菲们,请点赞关注!

 我的个人主页:

_Zwy@-CSDN博客


目录

 1、MySQL服务器,数据库,表关系

2、MySQL登录连接服务器

3、MySQL架构

3.1、Connectors(连接器)

3.2、MySQL Server(MySQL 服务器)

3.3、Pluggable Storage Engines(可插拔存储引擎)

3.4、File System(文件系统)

3.5、Files & Logs(文件和日志)

4、SQL分类

1. 数据定义语言(DDL )

2. 数据操作语言(DML)

3. 数据查询语言(DQL)

4. 数据控制语言(DCL)

5. 事务控制语言(TCL)

5、MySQL存储引擎

5.1、什么是存储引擎

5.2、存储引擎的功能

5.2.1、数据存储

5.2.2、数据检索

5.2.3、数据更新

5.1、查看存储引擎:

5.2、常见的存储引擎

5.3、存储引擎对比

6、MySQL知识总结


 1、MySQL服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多

个数据库,一般开发人员会针对每一个应用创建一个数据库。

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

Client(客户端):代表用户或应用程序,是发起数据库操作请求的一方。
MySQL:是一个开源的关系型数据库管理系统,在图中起到接收客户端请求并处理数据库操作的作用。
DB(数据库):图中有两个数据库,数据库是用于存储和组织数据的容器。

表:每个数据库包含多个表,表是数据库中用于存储数据的结构,由行和列组成。

整体架构描述了客户端通过 MySQL 来访问和操作数据库中的表数据的关系。这种架构在实际的软件开发和数据管理中非常常见,MySQL 作为中间层负责处理客户端的请求,对数据库进行增删改查等操作。

2、MySQL登录连接服务器
 

mysql -h 127.0.0.1 -P 3306 -u root -p

 注意:

如果没有写 -h 127.0.0.1 默认是连接本地 , 如果没有写 -P 3306 默认是连接3306端口号。

3、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/LinuxWindows, Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体 系结构的一致性

MySQL 架构可以分为几个主要部分:

3.1、Connectors(连接器)


提供了多种编程语言和平台的接口,包括 Native C API、JDBC、ODBC、.NET、PHP、Python、Perl、Ruby 和 VB。这些连接器允许不同的应用程序与 MySQL 数据库进行交互。


3.2、MySQL Server(MySQL 服务器)


这是 MySQL 的核心部分,包含多个子模块:Enterprise Management Services & Utilities(企业管理服务和工具)Backup & Recovery(备份和恢复):用于数据备份和灾难恢复。

Security(安全):处理用户认证和权限管理。
Replication(复制):用于数据复制和集群管理。
Cluster(集群):支持数据库集群。
Partitioning(分区):数据分区管理。
Instance Manager(实例管理器):管理数据库实例。
INFORMATION_SCHEMA(信息架构):存储数据库元数据。
Administrator Workbench(管理员工作台):提供数据库管理界面。
Query Browser(查询浏览器):用于执行 SQL 查询。
Migration Toolkit(迁移工具包):用于数据库迁移。
Connection Pool(连接池)管理数据库连接,包括认证、线程重用、连接限制、检查内存和缓存。
SQL Interface(SQL 接口)处理 SQL 语句,包括 DDL(数据定义语言)、DML(数据操作语言)、存储过程、视图和触发器等。
Parser(解析器)解析和翻译 SQL 查询。
Optimizer(优化器)确定查询执行的最佳路径,基于统计信息。
Caches & Buffers(缓存和缓冲区)包括全局和引擎特定的缓存和缓冲区。


3.3、Pluggable Storage Engines(可插拔存储引擎)


支持多种存储引擎,包括:MyISAM:适用于读密集型应用。
InnoDB:支持事务处理和行级锁定。
Cluster:用于数据库集群。
Falcon:高性能存储引擎。
Archive:用于存储归档数据。
Federated:支持联邦数据库。
Merge:用于合并表。
Memory:内存存储引擎。
Community:社区开发的存储引擎。
Custom:自定义存储引擎。


3.4、File System(文件系统)


支持多种文件系统,包括 NTFS、NFS、SAN 和 NAS。


3.5、Files & Logs(文件和日志)


处理重做日志(Redo)、撤销日志(Undo)、数据文件、索引文件、二进制文件、错误日志、查询日志和慢查询日志。

 

4、SQL分类

1. 数据定义语言(DDL )

Data Definition Language

功能:用于定义和管理数据库对象,如数据库、表、视图、索引等结构。
常见语句create:用于创建数据库、表、视图等对象。例如:create table students (id int, name varchar(255));
alter:用于修改现有数据库对象的结构。例如:alter table students add column age int;
drop:用于删除数据库、表、视图等对象。例如:drop table students;


2. 数据操作语言(DML)

Data Manipulation Language

功能:用于对数据库中的数据进行操作,如插入、更新、删除数据。
常见语句insert:用于向表中插入新的数据行。例如:insert into students (id, name) values (1, 'John');
update:用于更新表中的数据。例如:update students set age = 20 where id = 1;
delete:用于从表中删除数据行。例如:delete from students where id = 1;


3. 数据查询语言(DQL)

Data Query Language

功能:用于从数据库中查询数据。
常见语句select:用于从一个或多个表中检索数据。例如:select * from students;


4. 数据控制语言(DCL)

Data Control Language

功能:用于控制数据库的访问权限和安全级别。
常见语句grant:用于授予用户对数据库对象的权限。例如:grant select on students to 'user1';
revoke:用于撤销用户对数据库对象的权限。例如:revoke select on students from 'user1';


5. 事务控制语言(TCL)

Transaction Control Language

功能:用于管理数据库事务,确保数据的一致性和完整性。
常见语句begin transaction:开始一个事务。
commit:提交一个事务,使事务中的更改永久生效。
rollback:回滚一个事务,撤销事务中的更改。

这些分类帮助用户更好地理解和组织 SQL 语句的使用,以满足不同的数据库操作需求。

5、MySQL存储引擎

5.1、什么是存储引擎

存储引擎是数据库管理系统中用于处理数据存储、检索和更新操作的底层软件组件。以下是关于存储引擎的详细介绍

5.2、存储引擎的功能

5.2.1、数据存储

存储引擎决定了数据在磁盘或内存中的存储方式。
例如,有的存储引擎将数据以文件形式存储在磁盘上,有的则将数据主要存放在内存中。

不同的存储方式会影响数据的存储效率和安全性。例如,内存存储引擎读写速度快,但数据在断电后可能丢失;磁盘存储引擎则相对更安全,但读写速度可能较慢。


5.2.2、数据检索

它实现了不同的数据检索算法和索引结构。
常见的索引结构有 B - 树索引、哈希索引等。
例如,B - 树索引适合范围查询,哈希索引则更适合等值查询。存储引擎根据自身特点选择合适的索引类型来优化数据检索操作,提高查询效率。


5.2.3、数据更新

负责处理数据的插入、修改和删除操作。在处理这些操作时,存储引擎需要考虑数据的一致性和完整性。
例如,在支持事务的存储引擎中,会通过日志和锁机制来确保数据在更新过程中的原子性、一致性、隔离性和持久性(ACID 特性)。

5.1、查看存储引擎:

show engines;

5.2、常见的存储引擎
 

1. MyISAM

特点:适用于读密集型应用。它的表存储结构简单,数据文件和索引文件是分开存储的。
不支持事务处理,但查询速度较快,特别是对于全表扫描操作。具有表级锁定机制,在并发写入操作较多时可能会出现性能瓶颈。


2. InnoDB

特点:支持事务处理(ACID 特性),能够确保数据的一致性和完整性。
采用行级锁定机制,在高并发环境下性能较好,适合 OLTP(在线事务处理)应用。支持外键约束,能够更好地维护表之间的关系。


3. Cluster

特点:主要用于数据库集群,实现数据的分布式存储和高可用性。通过集群技术,可以在多个节点上存储和处理数据,提高系统的可靠性和扩展性。


4. Falcon

特点:高性能存储引擎,设计目标是提供比 MyISAM 和 InnoDB 更好的性能。虽然它在某些方面有独特优势,但目前已不是 MySQL 的主流存储引擎。


5. Archive

特点:主要用于存储归档数据,适合存储大量历史数据。它只支持插入和查询操作,不支持更新和删除操作,数据压缩比高。


6. Federated

特点:支持联邦数据库,能够访问远程数据库中的数据,如同本地数据库一样。适合分布式数据环境,但在网络不稳定时可能会出现性能问题。


7. Merge

特点:用于合并表,它可以将多个结构相同的 MyISAM 表作为一个表来处理。适合于数据仓库等需要对大量数据进行分区存储的场景。


8. Memory

特点:数据存储在内存中,因此读写速度非常快,适合临时表和缓存数据。但是,由于数据存储在内存中,一旦 MySQL 服务器重启,数据将丢失。

9.NDB

特点:这是一种为高可用性和高性能集群环境设计的存储引擎。它采用了分布式、内存中的存储架构,数据被存储在多个节点的内存中,通过网络进行通信和数据同步。这种架构可以提供极高的可用性,因为即使部分节点出现故障,系统仍然可以通过其他节点继续运行。
 

5.3、存储引擎对比

存储引擎对比表格: 

特性MyISAMBDBMemoryInnoDBArchiveNDB
存储限制无限制无限制64TB 限制无限制
事务(提交、回滚等)
锁粒度表级锁页级锁表级锁行级锁行级锁行级锁
MVCC / 快照读
地理空间支持
B - 树索引
哈希索引
全文搜索索引
聚集索引
数据缓存
索引缓存
数据压缩
通过函数加密数据
存储成本(占用空间)不适用(内存存储)较高高(压缩存储)
内存成本中等(依赖内存大小)高(缓冲池)高(依赖内存)
批量插入速度非常高
集群数据库支持
复制支持
外键支持
备份 / 即时恢复
查询缓存支持
数据字典更新统计信息

6、MySQL知识总结

本文涵盖 MySQL 多方面要点。阐述其服务器、数据库和表的架构关联及登录方式,剖析包含连接器、服务器、存储引擎等在内的架构体系及各部分功能,说明 SQL 分类中 DDL、DML 等各类语句用途,重点讲解存储引擎概念、功能与常见类型特点,为理解 MySQL 原理、开展数据库操作与应用开发提供依据,助使用者依需求用好 MySQL 特性以保障运行

如上关于 MySQL的讲解只是我的一些拙见,如有不足之处,还望各位大佬不吝在评论区予以斧正,感激不尽!

创作不易,还请多多互三支持!你们的支持是我最大的动力!

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

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

相关文章

flink终止提交给yarn的任务

接上文:一文说清flink从编码到部署上线 1.查看正在执行的flink 访问地址(参考):http://10.86.97.191:8099/cluster/apps 2.终止任务 yarn application -kill appID 本文为: yarn application -kill application_17…

CentOS虚拟机开机出现问题

CentOS虚拟机断电或强制关机,再开机出现问题 错误原因: failed to mount /sysroot.(无法挂载/ sysroot。) Dependency failed for Initrd root File System.(Initrd根文件系统的依赖关系失败。) Dependency…

可靠的人形探测,未完待续(I)

HI,there!从紧张的项目中出来冒个泡! 刚好想要验证一下mmWave在有人检测方面的应用,就看到了这个活动 - 瞌睡了有枕头属于是,活动策划好评! 朋友曾关注汽车相关的技术领域,跟我吐槽过&#xff0…

web斗地主游戏实现指北

前后端通信 作为一个即时多人游戏,不论是即时聊天还是更新玩家状态,都需要服务端有主动推送功能,或者客户端轮询。轮询的时间间隔可能导致游玩体验差,因为不即时更新,而且请求数量太多可能会打崩服务器。 建议在cs间…

基于Qt的文字处理软件(二)

这期文章我们进行主窗口的一些函数的定义,同时导入一些文字处理软件的状态栏会用到的图标。下面图片是图标导入到项目后的一个示例,图标可以到阿里矢量图标库里面找到。 一、导入图标资源: 1.首先在项目目录的位置创建一个images的文件,然后将收集好的图…

Halcon_数据类型_ROI_仿射变换_投影变换

文章目录 算子快捷键一、Halcon数据类型Iconic (图标)Control (控制)Tuple (数组) 二、ROI(区域)1.代码创建ROI2.手动创建ROI 三、图形预处理1.图像的变换与矫正平移 -hom_mat2d_translate旋转缩放-HomMat2D:输入的仿射…

C语言(指针基础练习)

删除数组中的元素 数组的元素在内存地址中是连续的&#xff0c;不能单独删除数组中的某个元素&#xff0c;只能覆盖。 #include <stdio.h> #include <stdbool.h>// 函数声明 int deleteElement(int arr[], int size, int element);int main() {int arr[] {1, 2, 3…

甘肃美食之选:食家巷方形饼

甘肃食家巷方形饼&#xff0c;顾名思义&#xff0c;其形状呈规整的方形。这种独特的外形并非偶然&#xff0c;而是源于当地传统的制作工艺。制作方形饼的师傅们&#xff0c;精心挑选优质的面粉&#xff0c;加入适量的水和其他配料&#xff0c;揉成光滑的面团。经过一段时间的发…

共享GitLab中CICD自动生成的软件包

0 Preface/Foreword 1 分享软件包地址 为了方便给接收对象方便下载固件&#xff0c;在下载固件时候&#xff0c;而无需打开网页&#xff0c;直接输入地址&#xff0c;弹出的对话框是将固件另存为。 或者进入CICD页面&#xff0c;找到job&#xff0c;在Download的标签上单击右键…

区块链钱包开发:全面功能设计方案解析

区块链钱包是连接用户与区块链世界的核心工具&#xff0c;为用户提供了存储、管理和交易加密资产的便捷途径。随着区块链应用的广泛普及&#xff0c;钱包的功能需求和技术复杂度也在不断增加。如何设计和开发一款功能全面、安全可靠的区块链钱包&#xff0c;成为区块链项目成功…

计算机网络-IPSec VPN工作原理

一、IPSec VPN工作原理 昨天我们大致了解了IPSec是什么&#xff0c;今天来学习下它的工作原理。 IPsec的基本工作流程如下&#xff1a; 通过IKE协商第一阶段协商出IKE SA。 使用IKE SA加密IKE协商第二阶段的报文&#xff0c;即IPsec SA。 使用IPsec SA加密数据。 IPsec基本工作…

“切片赋值”创建列表批量操作“新”方法(Python)

[start:end]切片赋值&#xff0c;扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建&#xff0c;本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;…

电脑无法识别usb设备怎么办?电脑无法识别usb解决方法

usb设备是我们常解除的外部操作以及存储设备&#xff0c;它可以方便用户数据传输以及操作输入。但在使用过程中&#xff0c;大家基本都碰到过电脑无法识别usb设备这种情况。这种情况下&#xff0c;我们应该怎么办呢&#xff1f;下面将为你介绍几种可能的原因和解决方法&#xf…

【机器学习】分类器

在机器学习(Machine Learning&#xff0c;ML)中&#xff0c;分类器泛指算法或模型&#xff0c;用于将输入数据分为不同的类别或标签。分类器是监督学习的一部分&#xff0c;它依据已知的数据集中的特征和标签进行训练&#xff0c;并根据这些学习到的知识对新的未标记数据进行分…

路径规划之启发式算法之十一:布谷鸟搜索算法(Cuckoo Search,CS)

布谷鸟搜索算法&#xff08;Cuckoo Search&#xff0c;CS&#xff09;是一种新兴的自然启发式算法&#xff0c;由剑桥大学的杨新社教授和S.戴布&#xff08;Xin-She Yang和Suash Deb&#xff09;于2009年提出。该算法基于布谷鸟的寄生性育雏&#xff08;巢寄生&#xff09;行为…

Java-JMX (官方文档解读)

JMX 简介 JMX&#xff08;Java Management Extensions&#xff09;是Java平台的一个标准管理框架&#xff0c;自Java 1.5版本起成为Java 平台标准版 (Java SE 平台) 的标准组成部分。JMX 技术提供了一种简单、标准的方法来管理资源&#xff08;例如应用程序、设备和服务&#x…

沃丰科技智能客服在跨境电商独立站中的核心角色

随着全球化进程的加速和互联网技术的不断发展&#xff0c;跨境电商行业蓬勃兴起&#xff0c;为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中&#xff0c;优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…

java 日期与时间

Java 的时间 API 是一个非常重要的主题&#xff0c;尤其是 Java 8 引入的 java.time 包&#xff0c;它为日期和时间处理提供了强大的功能。 我们可以按照以下几个主题逐步学习 Java 时间处理&#xff1a; import java.time.LocalDate; import java.time.LocalDateTim…

(ICML-2024)DoRA:权重分解低秩自适应

DoRA&#xff1a;权重分解低秩自适应 Paper是英伟达发表在ICML 2024的工作 Paper Title&#xff1a;DoRA: Weight-Decomposed Low-Rank Adaptation Code&#xff1a; 地址 Abstract 在广泛使用的参数高效微调 (PEFT) 方法中&#xff0c;LoRA 及其变体因避免了额外的推理成本而…

想在iPad上远程操作安卓手机的APP,怎样实现iPad远程控制安卓?

学生党或互联网行业的打工人&#xff0c;人手连三台电子设备也很常见&#xff0c;手机、平板还有笔记本电脑一大堆&#xff0c;如果出门要全带上&#xff0c;背包压力也变大。 有没有想过用远程控制功能&#xff0c;让iPad远程控制安卓手机&#xff1f;这样做&#xff0c;出门就…