云计算百科
云计算领域专业知识百科平台

【MySQL】数据库基础 {什么是数据库?基本概念及操作;服务器、数据库、表的关系;主流数据库;MySQL架构;SQL语句分类;存储引擎}

一、什么是数据库

1.1 基本概念

什么是数据库?

  • 广义上:数据库是一个组织、存储和管理数据的仓库,它允许用户以结构化的方式存储、访问、修改和检索数据。这些数据通常按照特定的数据模型进行组织,如关系型数据模型、非关系型数据模型等。
  • 狭义上:数据库指的是用于存储结构化数据的磁盘文件
  • 数据库VS普通文件

    • 普通文件确实提供了数据的存储能力,但是文件并没有提供很好的数据管理能力(如增删查改等操作),通常需要编写程序进行读写、检索、分析处理。
    • 文件存储数据有一下缺点:
    • 文件的安全性问题
    • 文件不利于数据的查询和管理,不利于存储海量数据。
    • 文件在程序中控制不方便
    • 数据库是集组织、存储和管理数据的一整套解决方案,用户只需要给出要求和关键字就能够得到对应的结果。

    mysql和mysqld

    • ‌MySQL数据库是基于C(mysql)/S(mysqld)模式的一种网络服务
    • mysqld‌:mysqld是MySQL数据库的核心服务器进程,负责处理数据库的所有请求和操作。它是一个后台服务程序,常驻于后台,监听和处理客户端的连接请求,执行SQL语句,管理数据库和表结构,处理事务和并发控制等。(通常进程名以d结尾的是守护进程,常驻后台)
    • ‌mysql‌:mysql是MySQL数据库的客户端命令行工具,用于与MySQL服务器进行交互并执行数据库管理任务。它允许用户通过命令行界面或脚本进行数据库的创建、表的创建、数据的插入、查询等操作。

    数据库的存储介质

    • 磁盘
    • 内存

    1.2 基本操作

    服务管理

    • systemctl start mysql:启动MySQL数据库服务
    • systemctl stop mysql:停止MySQL数据库服务
    • systemctl restart mysql:重启MySQL数据库服务

    登录客户端

    mysql登录选项

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

    • -h:指明目标主机(部署了mysql服务)
    • -P:指明要访问的端口号
    • -u:指明登录用户
    • -p:指明需要输入密码

    基本操作

    使用mysql建立一个数据库,并建立一张表结构,插入一些数据(对比一下在Linux文件系统中是如何表现的)

    在这里插入图片描述

    创建数据库

    create database helloworld;

    使用数据库

    use helloworld;

    创建表

    create table student(
    id int,
    name varchar(32),
    gender varchar(2)
    );

    表中插入数据

    insert into student (id, name, gender) values (1, '张三', '男');

    查询表中数据

    select * from student;

  • 建立数据库本质就是在datadir路径下创建一个同名的目录文件(datadir是配置文件中指定的用于存储数据的路径)
  • 在数据库内建立表,本质就是在库目录下创建表文件(表文件的后缀是.ibd)
  • 由此可见数据库的本质就是文件!只不过这些文件不由程序员直接操作,而是由数据库服务mysqld帮我们进行操作。
  • 可以看到数据的逻辑结构是表结构。关系型数据模型将数据存储在二维表格中,每个表格由行和列组成。行代表记录,列代表字段,每个字段都有固定的数据类型。
  • 所有的SQL语句都以;封号结尾

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

    • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
    • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
    • 数据库服务器、数据库和表的关系如下:

    在这里插入图片描述


    1.4 主流数据库

    • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
    • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
    • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
    • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
    • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
    • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

    二、MySQL架构

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

    MySQL的架构可以自顶向下分为多个层次,每个层次都有其特定的功能和组件,它们共同协作以实现MySQL数据库的高效、灵活和可扩展性。以下是MySQL架构的详细解释:

    在这里插入图片描述

    客户端

  • MySQL Connectors(连接器)
    • 含义:MySQL为各编程语言提供的访问接口,如JDBC等,通过这些接口,程序可以直接访问MySQL。
    • 功能:充当应用程序与MySQL数据库之间的桥梁,允许应用程序执行数据库操作,如查询、插入、更新和删除数据等。
  • MySQL Shell
    • 含义:一个较为高级的MySQL客户端和代码编辑器,需要单独安装。
    • 特点:除了具有MySQL客户端的功能外,还具有能够被JS、Python等语言调用的接口,通常供数据库开发人员使用。
  • 服务端

  • 连接层
    • 主要功能:处理客户端与MySQL服务器之间的连接,包括接收连接请求、验证用户身份、管理连接线程等。
    • 组件及作用:
      • 网络端口:用于监听来自客户端的连接请求,默认监听端口为3306,但可通过配置文件设置多个监听端口。
      • 连接管理线程:处理端口监听到的连接请求,将请求一对一地转发给执行线程进行处理。执行线程通过线程池进行管理,以提高线程的复用并减少创建线程的开销。
  • 服务层
    • 核心部分:是MySQL架构中的核心,包含了多个关键组件。
    • 组件及作用:
      • SQL接口:用于接收客户端发送的各种SQL命令,并返回查询结果。
      • 解析器:将请求的SQL语句解析生成一个解析树,包括词法分析和语法分析两个步骤。
      • 查询优化器:将解析树转化成执行计划,并根据统计信息和索引选择最优的执行计划来执行SQL语句。
      • 缓存:用于提高查询语句的性能。MySQL 8.0之前的版本包含查询缓存,用于缓存SELECT查询的结果集;但MySQL 8.0及之后的版本已移除查询缓存,因为在实际应用中,缓存更新和维护的开销较大。此外,缓冲池也是缓存的一种,用于缓存InnoDB表的数据页和索引页,以加速数据读取。
  • 存储引擎层
    • 主要功能:实现数据的实际存储和检索,支持多种存储引擎。
    • 组件及作用:MySQL支持多种存储引擎,如InnoDB、MyISAM、Memory等,每种引擎具有不同的特性,适用于不同的应用场景。用户可以根据需求选择合适的存储引擎进行数据存储和检索。
  • 文件系统层
    • 主要功能:管理数据文件、日志文件等物理存储。
    • 组件及作用:包含具体的日志文件和数据文件以及MySQL相关的程序,用于存储MySQL的数据、索引、配置信息、日志文件等。其中,重做日志(Redo Log)记录事务修改的数据,用于崩溃恢复;回滚日志(Undo Log)保存旧版本数据,支持事务回滚和多版本并发控制;二进制日志(Binary Log)记录所有更改数据库结构和数据的操作,用于主从复制和点恢复。

  • 三、SQL语句分类

    • DDL【data definition language】 数据定义语言,用来定义和维护存储数据的结构(包括库和表) 代表指令: create(创建), drop(丢弃), alter(变更)
    • DML【data manipulation language】 数据操纵语言,用来对数据内容进行操作(针对表中的数据内容) 代表指令: insert(插入),delete(删除),update(更新) DML中又单独分了一个DQL,数据查询语言,代表指令: select
    • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务 代表指令: grant,revoke,commit

    四、存储引擎

    4.1 查看存储引擎

    SQL语句:

    show engines;

    在这里插入图片描述


    4.2 存储引擎对比

    数据库的存储引擎比较与选择-天翼云开发者社区 – 天翼云 (ctyun.cn)

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【MySQL】数据库基础 {什么是数据库?基本概念及操作;服务器、数据库、表的关系;主流数据库;MySQL架构;SQL语句分类;存储引擎}
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!