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比较多,再底层就是对应的文件系统硬件了,还有磁盘信息等等

相关推荐
gergul几秒前
lettuce引起的Redis command timeout异常
数据库·redis·缓存·jedis·lettuce·redis timeout
争不过朝夕,又念着往昔1 分钟前
Redis中Hash(哈希)类型的基本操作
数据库·redis·缓存·哈希算法
星眺北海1 分钟前
【redis】常用数据类型及命令
数据库·redis·缓存
尘浮生38 分钟前
Java项目实战II基于Java+Spring Boot+MySQL的洗衣店订单管理系统(开发文档+源码+数据库)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
只会copy的搬运工1 小时前
Mycat中间件
数据库·中间件
茶馆大橘1 小时前
(黑马点评)八、实现签到统计和uv统计
数据库·redis·学习·阿里云·黑马点评
可爱推推2 小时前
头歌数据库系统原理数据模型测试
数据库·头歌
@听风吟3 小时前
力扣之182.查找重复的电子邮箱
大数据·javascript·数据库·sql·leetcode
不惑_3 小时前
实战Redis与MySQL双写一致性的缓存模式
redis·mysql·缓存
小纯洁w4 小时前
MySQL 中优化 SQL 语句以提高查询性能
数据库·sql·mysql