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

相关推荐
Olrookie1 分钟前
MySQL运维常用SQL
运维·数据库·sql·mysql·dba
数据库生产实战11 分钟前
ORACLE 19C ADG环境 如何快速删除1.8TB的分区表?有哪些注意事项?
数据库·oracle
blackorbird28 分钟前
使用 Overpass Turbo 查找监控摄像头
运维·服务器·数据库·windows
IT永勇32 分钟前
SQLite数据库基本操作
数据库·sqlite·嵌入式开发·增删改查·关系型数据库
洋不写bug34 分钟前
数据库的创建,查看,修改,删除,字符集编码和校验操作
android·数据库·adb
想ai抽44 分钟前
吃透大数据算法-算法地图(备用)
大数据·数据库·spark
weixin_307779131 小时前
Clickhouse导出库的表、视图、用户和角色定义的SQL语句
开发语言·数据库·算法·clickhouse·自动化
流星白龙1 小时前
【Qt】7.信号和槽_connect函数用法(1)
开发语言·数据库·qt
码界奇点1 小时前
平替MongoDB金仓多模数据库在电子证照国产化中的实践与优势
数据库·mongodb·社交电子·里氏替代原则
optimistic_chen1 小时前
【Java EE进阶 --- SpringBoot】Mybatis操作数据库(基础二)
xml·数据库·spring boot·笔记·java-ee·mybatis