自学内容网 自学内容网

【MySQL】数据库基础

目录

什么是数据库

见一见数据库

服务器、数据库、表的关系

MySQL架构

SQL语句分类

存储引擎


什么是数据库

存储数据用文件就可以了,为什么还要弄个数据库?

假设现在有这样一个场景,有一个文件,里面有十万行数据,都是IP地址,要求找出里面所有120开头的IP地址。此时只能使用一种语言,读取文件,然后判断(提取、分析过程都需要程序员自己完成,文件没有提供这些功能,指提供了读写,没有提供对文件内容作管理的能力)。对文件内容的增删查改操作都需要程序员自己完成,这是十分不便的。总的来说,就是没有提供提供文件内容的管理能力

使用数据库保存数据时,就可以对文件内容进行管理。

数据库本质:对数据内容存储的一套解决方案,你给我字段或要求,我直接给你结果

首先,我们需要先了解数据库相关的3个概念:mysql、数据库、数据库服务

mysql是一套给我们提供存取服务的网络程序
数据库一般指的是在磁盘或内存中存储的特定结构组织的数据 -- 将来在磁盘上存储的一套数据库方案
数据库服务就算mysqld

mysql是数据库服务的客户端
mysqld是数据库服务的服务端
mysql本质:基于C(mysql) S(mysqld)模式的一种网络服务

MySQL的工作原理就是服务器上部署了一个mysql服务,用户提出要求后,mysql将要求给mysqld,mysqld就会对磁盘中的数据库文件进行操作,然后将结果交给mysqld,mysqld再交给mysql,就显示给客户了 

结论:
(1)局部上。数据库就算一种提供数据存储能力的文件,这个文件有自己的内部格式,可以通过mysql这种服务进程直接进行增删查改。
(2)宏观上。这一整套就算数据库,是数据存储的解决方案。

见一见数据库

首先,我们先连接服务器

-h  指明登录部署了mysql服务的主机,后面跟的是主机IP
-P  指明我们要访问的端口号
-u  指明登录用户
-p  指明登录用户的密码

但实际上可以不需要这么多,因为本身就有配置文件

去掉-h  默认连接本地服务器上搭建的mysql服务
去掉-P  不使用用户指定的端口,而是使用配置文件中的的端口号

退出数据库使用quit

我们现在使用mysql建立一个数据库,再在这个新建数据库中建立一张表结果,并插入一些数据

在命令行上写SQL语句需要在末尾加上;

在linux系统中,/var/lib/mysql目录是 MySQL 数据库的默认数据存储目录,这个文件在MySQL的配置文件my.cnf中,datadi就是mysql服务数据的存放路径。里面包括:数据库文件、InnoDB数据文件、日志文件、配置文件和锁文件。

所以,建立数据库,就是mysql在磁盘指定目录下建立一个新的目录


所以,在数据库内建表,本质就是在linux下创建对应的文件

我们现在往表中插入一些数据

这样,程序员就不用再自己去修改数据库文件了,而是通过mysql让mysqld修改

所以,数据库本质就是文件,只不过这些文件并不是由程序员直接操作的,而是由数据库服务帮我们进行操作的 

注意,表只是数据的逻辑存储,真正在文件中并不是按表的形式存储的

服务器、数据库、表的关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库(这个数据库是指局部上的,一个目录及其里面的文件就是一个数据库),一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据

MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
MySQL架构的核心是mysqld,这个网络服务是如何构成的呢?

最上面是MySQL客户端,现在用的是命令行式的,还可以使用C/C++语言连接mysql,或图形化界面

在MySQL server中主要有三层
第一层是连接池,主要用于管理链接、鉴别权限、保证安全
第二层是对客户端的SQL语句进行语法分析、优化等,按照协议将SQL语句下达给下一层
第三层匹配的是一个一个的存储引擎(类似于驱动)。第二层处理好的SQL语句交给对应的存储引擎,让存储引擎进行解释,然后存储引擎就能对数据库中的数据进行增删查改。第三层是完成具体的存储

第三层为什么会有这么多的存储引擎呢?
数据库是用于提供数据存取服务的,但数据的类型是有很多种的,有文档型、二进制型、大文件型等等,为了提高效率,针对不同类型的数据会采用不同种类的存储方案。像MyISAM适合对大文本进行读取,InnoDB有各自索引支持,方便进行搜索、查找。所以,MySQL提供了各种各样的存储引擎,课根据不用的场景由用户来配置MySQL底层使用的存储引擎以满足上层的存储需求(这些存储引擎想用哪一个,就将哪一个加载到MySQL里面)

最底下的一层是文件系统。将数据以二进制的形式保存成文件,再放到指定目录下。

SQL语句分类

DDL:数据定义语句,用来维护存储数据的结构,如建表、修改表结构等等
DML:数据操作语句,用来对数据进行操作,如对建好的表进行增删查改等等
DCL:数据控制语句,主要负责权限管理和事务

存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

MySQL的核心就是插件式存储引擎,支持多种存储引擎。

可以查看存储引擎


原文地址:https://blog.csdn.net/2301_80277275/article/details/145265431

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!