MySQL 数据库基础

1. 数据库基础

1.1 什么是数据库

数据库(Database,简称 DB),简单来说就是长期存储在计算机内、有组织、可共享的数据集合。它就像一个电子化的文件柜,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

与普通的 Excel 表格或文本文件相比,数据库具有以下核心优势:

  • 数据结构化:数据按照特定的模型组织,便于高效查询和管理
  • 数据共享性高:多个用户可以同时访问和操作数据
  • 数据独立性高:数据的存储结构与应用程序相互解耦
  • 数据冗余度低:避免重复存储,节省存储空间
  • 数据安全性高:提供完善的权限控制和数据保护机制

1.2 主流数据库

数据库 开发商 特点 适用场景
MySQL Oracle(原 MySQL AB) 开源免费、性能优异、生态完善、跨平台 Web 应用、互联网项目、中小企业系统
Oracle Oracle 公司 功能强大、稳定性高、企业级特性丰富 大型企业、金融、电信等核心业务系统
SQL Server 微软 与.NET 生态深度集成、易用性好 Windows 平台、企业级管理系统
PostgreSQL 加州大学伯克利分校计算机系 功能全面、扩展性强、支持复杂查询 学术研究、复杂业务系统、数据仓库
SQLite D. Richard Hipp 轻量级嵌入式、零配置、单文件存储 移动端、嵌入式设备、小型桌面应用

MySQL 的地位

MySQL 是世界上最受欢迎的开源数据库,在 DB-Engines 排行榜中长期位居第二,在开源数据库中排名第一。Facebook、Uber、Airbnb、淘宝等众多知名互联网公司都在大规模使用 MySQL。

1.3 基本使用

1.3.1 MySQL安装

网上有很多的关于MySQL的下载安装教程,大家可以自行去网上搜索安装教程,这里就不做介绍了。

1.3.2 连接 MySQL 服务器

打开命令提示符,输入以下命令:

bash 复制代码
mysql -u root -p

回车后输入密码即可登录。

常用连接参数:

  • -u:指定用户名
  • -p:使用密码登录
  • -h:指定主机地址(默认localhost)
  • -P:指定端口号(默认 3306)
  • -D:指定默认数据库

完整示例:

bash 复制代码
mysql -h 127.0.0.1 -P 3306 -u root -p

1.3.3 Windows 下 MySQL 服务器管理

通过服务管理器

  1. 按下 Win + R,输入 services.msc 打开服务管理器
  2. 找到 MySQL 服务(名称如 MySQL80)
  3. 右键可进行启动、停止、重启等操作
  4. 在属性中可设置启动类型(自动 / 手动 / 禁用)

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

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 数据库是数据库服务器下的逻辑数据容器,作用是按业务类型对数据进行分类隔离。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 表是数据库中数据存储的基本单元,以二维表格的形式组织数据

1.3.5 使用案例

  • 创建数据库
sql 复制代码
create database helloworld;
  • 使用数据库
sql 复制代码
use helloworld;
  • 创建数据库表
sql 复制代码
create table student(
	id int,
	name varchar(32),
	gender varchar(2)
);
  • 表中插入数据
sql 复制代码
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
  • 查询表中的数据
sql 复制代码
select * from student;

1.4 MySQL架构

MySQL 采用了经典的分层架构设计,整体可以分为三大层:连接层、服务层和存储引擎层。

各层详细说明

第一层:连接层

连接层负责处理客户端的连接请求,主要工作包括:

  • 连接处理:接收 TCP 连接,为每个连接分配线程
  • 身份认证:验证用户名、密码、主机地址
  • 权限校验:检查用户是否具备操作权限
  • 连接池管理:复用连接,减少创建销毁开销

第二层:服务层(核心层)

这是 MySQL 的核心功能层,所有核心逻辑都在这里实现:

  1. SQL 接口(SQL Interface)
    • 接收客户端发送的 SQL 语句
    • 支持 DML、DDL、存储过程、视图、触发器等
  2. 解析器(Parser)
    • 对 SQL 语句进行词法分析和语法分析
    • 生成语法解析树
    • 检查 SQL 语法是否正确
  3. 优化器(Optimizer)
    • 根据解析树生成多种执行计划
    • 基于成本估算选择最优执行计划
    • 决定使用哪些索引、表的连接顺序等
  4. 执行器(Executor)
    • 按照执行计划调用存储引擎接口
    • 完成数据的增删改查操作
  5. 系统管理与工具组件
    • 包括备份恢复、安全管理、复制、集群等功能

第三层:存储引擎层

存储引擎是 MySQL 最具特色的设计,采用插件式架构,不同的存储引擎负责数据的实际存储和读取。

  • 服务层通过统一的 API 与存储引擎交互
  • 各种存储引擎实现了相同的接口规范
  • 用户可以根据业务需求选择合适的存储引擎
  • 不同的表可以使用不同的存储引擎

第四层:文件系统层

MySQL 的数据最终以文件形式存储在磁盘上,主要包括:

  • 数据文件:存放表数据和索引
  • 日志文件:binlog、redo log、undo log、error log 等
  • 配置文件:my.ini(Windows)或 my.cnf(Linux)
  • 套接字文件:本地连接使用

1.5 SQL分类

  • DDL(数据定义语言) Data Definition Language ,用于定义数据库对象(数据库、表、索引等)的结构。

    常用语句: create:创建数据库、表、索引等; alter:修改数据库对象结构;drop:删除数据库、表等

  • DML(数据操纵语言) Data Manipulation Language ,用于对数据表中的数据进行增删改操作。

    常用语句: insert:插入数据;update:更新数据;delete:删除数据

  • DQL(数据查询语言) Data Query Language ,用于查询数据。

    核心语句: select:查询数据

  • DCL(数据控制语言) Data Control Language ,用于管理用户权限和事务控制。

    常用语句: grant:授予用户权限;revoke:撤销用户权限

1.6 存储引擎

存储引擎是 MySQL 中负责数据的存储和提取的底层软件组件。不同的存储引擎有不同的存储机制、索引技巧和功能特性。

MySQL 的插件式存储引擎架构是其一大特色,允许用户根据业务场景选择最适合的数据存储方式。可以这样理解:

服务层负责 SQL 解析和优化,存储引擎负责真正的数据存取。同样的 SQL,交给不同的存储引擎,底层的实现方式和性能表现可能截然不同。

查看 MySQL 支持的存储引擎:

sql 复制代码
show engines;

存储引擎对比:

总结:

  • MySQL是一套给我们提供数据存取的服务的网络程序
  • 数据库一般指的是在磁盘或者内存中存储的特定结构组织的数据------将来在磁盘上存储的一套数据库方案
  • 数据库服务------mysqld
  • mysql它是数据库服务的客户端
  • mysqld它是数据库服务的服务器端
  • mysql本质是基于C(mysql) S(mysqld)模式的一种网络服务
相关推荐
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(09)
java·数据库·mysql·面试·八股·大厂实习
瀚高PG实验室1 小时前
瀚高数据库运行日志(错误日志)查看与分析方法
数据库·postgresql·瀚高数据库
snow@li1 小时前
PostgreSQL:PostgreSQL(PG)全景深度梳理
数据库·postgresql
java_nnnn2 小时前
Spring IoC & DI 从入门到理解:控制反转、依赖注入与 Bean 管理详解
数据库·sql·spring
瀚高PG实验室2 小时前
HGHAC集群版本升级
数据库·postgresql·瀚高数据库
品牌常新3 小时前
室外巡检机器人推荐:园区与厂区怎么选
数据库·人工智能·机器人
snow@li3 小时前
redis:RedisDesktopManager(RDM/RESP.app)Redis 数据可视化全景深度梳理
数据库·redis·缓存
lqbzlll3 小时前
MySQL 慢查询日志开了但看不懂?从 slow_query_log 到 EXPLAIN ANALYZE 一步步定位
数据库·mysql·adb
code_slave(码畜)3 小时前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构