MySQL数据库基础

一、什么是数据库

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

1 . 一般的文件 , 具备读写能力 , 确实提供了数据的存储功能 ;但是没有非常好的数据管理能力 。 比如 , 有一亿行的内容 , 需要给出其中以120开头的数据 , 使用文件存储就不是很方便了 。

  1. 文件保存数据具有以下几个缺点:

为了解决上述问题 , 专家们设计出更加利于管理数据的东西 -- 数据库 , 能够有效的管理数据 。数据库的水平是衡量一个程序员水平的重要指标

数据库存储介质:

  • 磁盘
  • 内存

数据库的存储逻辑:

1.1 mysql & mysqld

ps ajx | grep mysql

  • ps ajx:列出系统中几乎所有进程的详细信息,包括父进程 ID、进程组 ID 等,方便查看进程间的关系。
    • a:显示所有用户的进程,而不仅仅是当前用户。
    • j:以作业格式(jobs format)显示,会包含父进程 ID(PPID)、进程组 ID(PGID)等信息,方便查看进程间的关系。
    • x:显示没有控制终端的进程(守护进程通常属于此类)
  • | grep mysql:通过管道将ps的输出传递给grep,筛选出包含 "mysql" 关键词的行,用于查找与 MySQL 相关的进程。
  • 从输出可以看到,/usr/sbin/mysqld 进程正在运行**,这是 MySQL 的服务守护进程**。

which mysql

  • which 命令用于在系统的PATH环境变量指定的目录中,查找指定命令的可执行文件位置。
  • 输出 /usr/bin/mysql 表示:mysql 这个命令的可执行文件位于 /usr/bin 目录下。

which mysqld

  • 输出 /usr/sbin/mysqld 表示:mysqld 这个命令的可执行文件位于 /usr/sbin 目录下。
  • /usr/bin/mysql 是**MySQL 客户端程序(Client)。**它是一个命令行工具,供用户或应用程序连接到 MySQL 服务器,发送 SQL 指令并接收返回结果。
  • /usr/sbin/mysqldMySQL 服务器守护进程(Server Daemon)。它是后台运行的核心服务程序,负责管理数据库文件、处理客户端连接、执行 SQL 操作、维护数据一致性等。
名称 角色 核心作用 典型路径
mysql 客户端(Client) 提供交互界面,让用户 / 应用发送 SQL 命令,与服务器通信 /usr/bin/mysql
mysqld 服务器(Server) 后台守护进程,负责数据存储、查询处理、事务管理等核心服务 /usr/sbin/mysqld

1. MySQL 本质上是一个基于 C/S 模式的网络服务

2. 数据库一般指的是 , 在磁盘 或者 内存 中存储的特定结构组织的数据(将来在磁盘上存储的一套数据库方案)

1.2 主流数据库

市面上的数据库种类繁多,不同数据库的设计初衷、适用场景各有差异,选对数据库能让开发效率事半功倍,以下是几款主流数据库的核心特点和适用场景:

  • SQL Server:微软旗下产品,是.NET 程序员的首选,适配中大型项目开发,与微软生态的兼容性极佳。
  • Oracle:甲骨文的经典产品,适合超大型项目和复杂业务逻辑的场景,缺点是并发处理能力不如 MySQL。
  • MySQL:目前世界上最受欢迎的数据库,现归属甲骨文,并发性能优秀,对简单 SQL 的处理效率高,缺点是不适合复杂业务逻辑,主要应用于电商、SNS、论坛等互联网项目,也是本文的核心学习对象。
  • PostgreSQL:由加州大学伯克利分校开发的关系型数据库,开源免费,支持私用、商用和学术研究,支持自由修改和分发,功能扩展性强。
  • SQLite:轻型嵌入式关系型数据库,遵守 ACID 原则,封装在小型 C 库中,占用资源极低,嵌入式设备中仅需几百 K 内存即可运行,广泛应用于各类嵌入式产品。
  • H2:基于 Java 开发的嵌入式数据库,以类库形式存在,可直接嵌入应用项目中,适配 Java 开发的轻量级应用场景。
  1. 关系型数据库 , 使用起来会比较规范 , 相对而言 , 约束较多 , 适合磁盘级管理代表产品:MySQL、PostgreSQL、Oracle、SQL Server。

  2. 非关系型数据库 : 不依赖固定表结构,支持灵活的数据模型(文档、键值、列族、图等),代表产品:MongoDB(文档型)、Redis(键值型)、HBase(列族型)、Neo4j(图型)。适合内存级管理 。

二、连接数据库

连接 MySQL 服务器的核心命令为客户端指令,通过指定主机、端口、用户名和密码实现连接,基础命令如下:

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

执行命令后,终端会提示Enter password:,输入数据库 root 账户的密码即可完成连接。

  • 省略-h 127.0.0.1时,默认连接本地服务器;
  • 省略-P 3306时,默认连接 3306(MySQL 默认端口号);
  • 连接成功后会进入 MySQL 交互界面,指令以;\g结尾才会执行。
  • 退出数据库使用quit

三、服务器管理

在 Windows 系统中,可通过图形化界面快速管理 MySQL 服务(启动、暂停、停止、重启),操作步骤:

  1. 按下Win+R,输入services.msc,打开系统服务管理器
  2. 在服务列表中找到 MySQL 相关服务(如 MySQL57);
  3. 通过界面左侧的按钮,执行停止、暂停、重启等操作。

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

  • 安装数据库服务器,本质是在机器上安装了一个数据库管理系统程序
  • 一个数据库服务器可以管理多个数据库,开发中一般为每个应用单独创建一个数据库,实现数据隔离;
  • 一个数据库中可以创建多个表,表是实际存储应用实体数据的载体(如用户表、商品表、学生表)。

五、使用案例

步骤 1:创建数据库

创建名为helloworld的数据库,命令:

复制代码
create database helloworld;

步骤 2:使用数据库

操作表之前,需先指定要操作的数据库,命令:

复制代码
use helloworld;

步骤 3:创建数据库表

创建名为student的学生表,包含id(编号)name(姓名)gender(性别) 三个字段,命令:

复制代码
create table student(
id int,
name varchar(32),
gender varchar(2)
);

步骤 4:向表中插入数据

向 student 表中插入 3 条学生数据,支持单条逐行插入,命令:

复制代码
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');

步骤 5:查询表中数据

查询 student 表中的所有数据,*代表查询所有字段,命令:

复制代码
select * from student;
  1. 建立数据库 , 本质就是在 linux相对应的 /var/bin/mysql 目录下创建新目录
  2. 在数据库建表 , 本质是在对应的目录中创建对应的新文件

六、MySQL架构

MySQL 是一款可移植性极强的数据库,几乎能在 Unix/Linux、Windows、Mac、Solaris 等所有主流操作系统上运行,尽管不同系统的底层实现有差异,但 MySQL 能保证各平台物理体系结构的一致性

MySQL 的整体架构从上到下可分为三大核心层,各层各司其职,协同完成数据的存储、查询和管理:

  • 客户端连接层(Client Connectors):提供各类编程语言的连接接口,支持 JDBC、ODBC、.NET、PHP、Python、PERL、C API 等,实现客户端与 MySQL 服务器的通信;
  • MySQL 服务层(MYSQL SERVER) :核心管理层,包含连接池、权限认证、SQL 解析、优化、缓存、存储过程 / 触发器 / 视图等功能,是 MySQL 的 "大脑",负责处理 SQL 指令的逻辑解析和执行规划;
  • 存储引擎层(Pluggable Storage Engines) :MySQL 的核心特色 ------插件式存储引擎,负责数据的实际存储和读取,支持 MyISAM、InnoDB、Memory、Archive 等多种引擎,不同引擎有不同的存储和性能特点,可根据业务场景灵活选择。

七、SQL 核心分类

7.1 DDL:数据定义语言

核心作用维护存储数据的结构,即定义数据库、表、字段等对象的结构,指令执行后会改变数据的存储结构。

  • 代表指令create(创建)、drop(删除)、alter(修改)
  • 示例create database(创建数据库)、create table(创建表)、alter table(修改表结构)。

7.2 DML:数据操纵语言

核心作用对表中的实际数据进行增、删、改操作,不改变数据的存储结构,仅操作数据本身

  • 代表指令insert(插入)、delete(删除)、update(修改)
  • 示例insert into(插入数据)、update ... set(修改数据)、delete from(删除数据)。

7.3 DQL:数据查询语言

DQL 是 DML 的一个独立分支,也是开发中使用频率最高的 SQL 类型

核心作用:查询表中的数据,不会对数据进行任何修改,仅做数据读取。

  • 代表指令:select
  • 示例select * from 表名(查询所有数据)、select 字段 from 表名(查询指定字段)。

7.4 DCL:数据控制语言

核心作用 :主要负责数据库权限管理事务管理,控制数据库的访问权限和数据操作的原子性。

  • 代表指令grant(授予权限)、revoke(回收权限)、commit(提交事务)
  • 示例grant all on 数据库.* to 用户名(授予用户数据库所有权限)、commit;(提交事务)。

八、MySQL 存储引擎

存储引擎是 MySQL 的核心技术,本质是数据库管理系统存储数据、建立索引、更新 / 查询数据的技术实现方法,MySQL 的插件式设计让其支持多种存储引擎,可按需灵活切换,接下来讲解存储引擎的基础操作和核心对比。

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

查看存储引擎;

show engines;

相关推荐
江不清丶1 小时前
Text-to-SQL实战:从自然语言到数据库查询的智能数据分析Agent设计
数据库·sql·ai·数据分析
初次攀爬者2 小时前
Redis与数据库的数据一致性方案解析
数据库·redis·分布式
橘颂TA2 小时前
【MySQL】内置函数
数据库·mysql
八月瓜科技2 小时前
擎策·知海全球专利数据库 凭差异化优势 筑科技创新检索壁垒
大数据·数据库·人工智能·科技·深度学习·机器人
搜佛说2 小时前
sfsEdgeStore轻量级边缘计算数据存储适配平台
数据库·人工智能·物联网·边缘计算·iot
橘颂TA2 小时前
【MySQL】使用C/C++来连接 MySQL
数据库·mysql
happyboy19862112 小时前
2026大专财富管理可以转数据分析吗?
数据库·数据挖掘·数据分析
杰克尼2 小时前
苍穹外卖--day11
java·数据库·spring boot·mybatis·notepad++
LaughingZhu3 小时前
Product Hunt 每日热榜 | 2026-03-12
大数据·数据库·人工智能·经验分享·搜索引擎