MySQL:数据库基础

文章目录

本篇开始进行关于MySQL的学习,首先要对于数据库有一个基本的认识

什么是数据库

数据库主要是用来管理文件的,那此时可能会有疑问,文件也能进行管理文件,为什么不用文件管理呢?在这里要明确的概念是,操作系统的文件系统是对于一个一个的文件进行管理,而数据库在此基础上还拥有对于文件当中的内容进行合适的索引等的查询机制,同时,文件进行保存数据会有下面的几个问题

  1. 文件不安全
  2. 文件不方便查询管理
  3. 文件无法存储大量数据
  4. 文件在程序控制不方便

而数据库的存在,正是为了解决这样的问题,数据库的存储一般是存储在内存和磁盘当中的,换句话说,数据库就是为了能够更加有效和高效的对于数据进行管理

数据库的认识

登陆数据库

在我的Linux环境下已经安装了数据库的相关信息:

那么首先是登陆信息:

在这里需要注意的是,MySQL的登陆选项有很多,例如这里带上-h表示的是说明清楚数据库的ip信息,在这里我选择的是在我的本机登陆,因此这里就带上本机的ip地址,而-P表示的是端口号,一般而言MySQL的端口号就是3306,这是约定俗成的事实,而后面的-u表示的是用户信息,由于我这里还没有对于用户信息创建分类,所以统一用root进行管理,最后的-p表示的是密码,在配置文件中我暂时设置了免密登录,后续也会进行管理

理解数据库

那下一个话题是,如何理解MySQL,如何理解数据库呢?这里我从mysql和mysqld来进行解释:

在Linux当前运行的进程中我们可以发现一个mysqld的内容,而在Linux的文件中会存在一个mysql,那么这两个有什么区别和联系呢?

mysql的本质是数据库服务的客户端,而mysqld的本质是数据库服务的服务器端,所以说用户在进行访问的时候是访问的是mysql客户端,而客户端背后会借助服务端的力量来对于文件中的信息进行管理,所以我们说mysql的本质就是基于client和server模式的一种网络服务,其中mysql就是所谓的client,而mysqld就是所谓的server

既然是网络服务,那么就必然会存在网络连接:

事实证明也确实如此,可以看到在3306端口下存在一个mysqld,而同时从名字也能看出来这其实是一个守护进程,这个守护进程会一直存储在一个单独的会话中为用户提供对应的服务

数据库的相关概念

那么说到底,mysql其实就是一套提供给我的数据存取的网络程序,这是由前面的信息得出的基本结论,那么现在要区分一个概念,什么是数据库,什么是数据库服务?这和mysql和mysqld是否有一定的联系呢?

事实上,数据库一般说的都是在磁盘或者内存中存储的特定组织的数据,也就是说是磁盘上存储的一套数据库的方案

而数据库服务,一般说的就是mysqld,它会为用户提供进行索引等信息,执行各种的方法

数据库的工作方式

对于数据库的认知,我们暂时可以理解为,数据库的本质信息就是对于数据内存存储的一套解决方案,给数据库相应的字段或者要求,数据库服务可以直接返回对应的结果,这就是目前来说对于数据库的理解可以到这里

为了便于理解,我们用下面的图来进行表示:

对于上述的图来说,展示了一个数据库的基本原理,程序员在客户端写一些sql语句,然后客户端会传递给服务端,服务端就会识别这些信息,然后从磁盘中的数据库文件中去寻找对应的信息,进而进行合适的解析工作

数据库的基本使用

那么下面就对于数据库的基本使用做一个演示:在Linux下用数据库建立一个表,插入一些数据

首先查看一下当前数据库中存在的一些基本信息

此时在数据库当中创建一个文件

此时再次进行查询

就会发现helloworld已经存在在了mysql目录当中了

所以说,对于mysql的认知其实应该多一项,建立数据库本质上就是Linux下的一个目录,而在数据库当中建立表,本质上就是在Linux创建对应的文件,数据库本身也是一个文件,只是这个文件不是让程序员操作的,而是让对应的mysqld数据库服务进行操作的

服务器/数据库/表

其中,client端其实就是客户端,而MySQL表示的是服务端,后面的DB就是一个一个的目录,对应的表就是目录下的一个一个的文件,上述所示就是这三者之间的关系

MySQL架构

上图所示的是MySQL的基本架构,由于这里只是初步认识,所以只是简单介绍,用户所处的位置就是最上面的client connectors的位置,而下面的connection Pool可以看成是一个管理链接的地方,包括登录认证等等,再往下走是对应的服务,再下面的pluggable storage engines就是所谓的存储引擎,其实存储引擎就可以理解为是搜索的方式,一般来说哦是用InooDB比较多,再底层就是对应的文件系统硬件了,还有磁盘信息等等

相关推荐
Rverdoser18 分钟前
【SQL】多表查询案例
数据库·sql
Galeoto21 分钟前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)1 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231111 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白1 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码1 小时前
【SQL实验】触发器
数据库·笔记·sql
和道一文字yyds1 小时前
MySQL 中的索引数量是否越多越好?为什么?如何使用 MySQL 的 EXPLAIN 语句进行查询分析?MySQL 中如何进行 SQL 调优?
数据库·sql·mysql
落笔画忧愁e2 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
Σίσυφος19002 小时前
halcon 条形码、二维码识别、opencv识别
前端·数据库
小刘|2 小时前
深入理解 SQL 注入漏洞及解决方案
数据库·sql