news 2026/5/31 12:13:43

MySQL 数据库入门与实战教程(一)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 数据库入门与实战教程(一)

1.入门与基础概念

1.1MySQL 的基本概念

  1. mysql 与 mysqld 的区别

    • mysql:是客户端程序,用来连接、操作数据库。
    • mysqld:是服务端程序,后台运行,负责管理磁盘上的数据库文件。
    • 两者的关系:程序员通过 mysql 客户端,向 mysqld 服务端发送指令,服务端再操作磁盘上的数据。
  2. 数据库的本质

    • 数据库服务:是一套提供数据存取的网络程序,基于 C(mysql)/S(mysqld)(客户端 / 服务器)模式。
    • 数据库:本质上就是 Linux 系统里的目录和文件,比如:
      • 建立数据库 → 本质是在系统里创建一个目录
      • 建立表 → 本质是在该目录下创建对应的文件
    • 程序员不直接操作这些文件,而是通过 mysqld 服务来间接操作,以此保证数据的安全与高效。
  3. 为什么要用数据库?

普通文件虽然能存数据,但没有良好的数据管理能力;而数据库服务可以帮我们处理复杂的数据存储、查询、管理需求,直接给我们想要的结果,程序员只需要写 SQL 指令即可。

1.2什么是数据库

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便
数据库存储介质:
  • 磁盘
  • 内存
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标

1.3MySQL 的工作流程

  1. mysqld服务在后台监听 3306 端口(图中LISTEN状态),等待客户端连接。
  2. 程序员通过 mysql 客户端发送 SQL 指令(如登录、查询、修改)。
  3. mysqld 服务接收到指令后,去磁盘上的数据库文件中执行对应的操作。
  4. 结果再通过网络返回给 mysql 客户端,呈现给程序员

1.4主流数据库

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

2.数据库的基本使用

2.1连接服务器

输入:

mysql -h 127.0.0.1 -P 3306 -u root -p
输出:

注意:
如果没有写-h 127.0.0.1默认是连接本地
如果没有写-P 3306默认是连接3306端口号

2.2服务器,数据库,表关系

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

2.3使用案例

创建数据库

create database helloworld;

使用数据库

use helloworld;

创建数据库表

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

表中插入数据

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

查询表中的数据

select * from student;

演示:

数据逻辑存储

3.MySQL架构

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

Client Connectors(客户端连接器)

  • 支持各种语言:JDBC(Java)、ODBC(.NET)、PHP、Python、Perl、C API

  • 作用:让应用程序能连接到 MySQL

核心层:MySQL Server(服务核心)

这是 MySQL 的 “大脑”,干这些事:

  • 连接池:处理连接、验证账号密码
  • SQL 接口:接收你的 SQL 命令(建表、插入、查询)
  • 解析器:检查 SQL 语法对不对
  • 优化器:选最快的方式执行 SQL
  • 缓存:存常用结果,加速查询
  • 工具服务:备份、安全、集群这些辅助功能

Pluggable Storage Engines(可插拔存储引擎)

这是 MySQL 的 “手脚”,负责和磁盘打交道,比如:

  • InnoDB(默认,支持事务)
  • MyISAM(老引擎,速度快但不支持事务) 不同引擎可以存不同表,各有各的用法。

最底层:文件系统与日志

数据最终存在磁盘文件里,同时还有各种日志(操作日志、错误日志、事务日志)保证数据安全、可恢复。

一句话总结:

客户端发请求 → MySQL Server 处理 → 存储引擎读写磁盘 → 返回结果

4.SQL分类

DDLdata definition language数据定义语言,用来维护存储数据的结构
代表指令:create, drop, alter
管结构:建库、建表、删库、改表
DMLdata manipulation language数据操纵语言,用来对数据进行操作
代表指令:insertdeleteupdate
管数据:增、删、改
DML中又单独分了一个DQL,数据查询语言,代表指令:select

管查询:只查不改

DCLData Control Language数据控制语言,主要负责权限管理和事务
代表指令:grantrevokecommit
管权限、事务

超级好记口诀

  • DDL = 盖房子(建表)
  • DML = 搬家具(增删改数据)
  • DQL = 看房子(查数据)
  • DCL = 管钥匙(权限)

5.存储引擎

1.存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎

2.查看存储引擎

show engines;

3.存储引擎对比

MySQL 里最常用、也是默认的存储引擎是InnoDB

6.库的操作

1.创建数据库

语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
说明:
大写的表示关键字
[]是可选项
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的校验规则

2.创建数据库案例

创建名为db1的数据库
create database db1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci
创建一个使用utf8字符集的db2数据库
create database db2 charset=utf8;
创建一个使用utf字符集,并带校对规则的db3数据库。
create database db3 charset=utf8 collate utf8_general_ci;

3.字符集和校验规则

数据库编码集(字符集)

  • 作用:规定数据如何存储,决定数据库里存的字符是什么样的。
  • 比如:utf8/utf8mb4,决定了中文、特殊字符能不能正常存进去。

数据库校验集(排序 / 校对规则)

  • 作用:规定数据如何比较、排序、读取,是基于字符集的一套规则。
  • 比如:utf8_general_ci,决定了字符串比较时是否区分大小写、重音符号等。

总结:

数据库编码集负责存储数据,校验集负责比较数据(如WHERE、排序)。
两者必须匹配,否则操作会出错或乱码。

3.1查看系统默认字符集以及校验规则

show variables like 'character_set_database'; show variables like 'collation_database';

3.2查看数据库支持的字符集

show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文。

3.3查看数据库支持的字符集校验规则

show collation;

3.4校验规则对数据库的影响

  • 不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
create database test1 collate utf8_general_ci; use test1; create table person(name varchar(20)); insert into person values('a'); insert into person values('A'); insert into person values('b'); insert into person values('B');
  • 区分大小写

创建一个数据库,校验规则使用utf8_ bin[区分大小写]

create database test2 collate utf8_bin; use test2 create table person(name varchar(20)); insert into person values('a'); insert into person values('A'); insert into person values('b'); insert into person values('B');
  • 进行查询

不区分大小写的查询以及结果

区分大小写的查询以及结果

  • 结果排序
不区分大小写排序以及结果:

区分大小写排序以及结果:

4.操纵数据库

4.1查看数据库

show databases;

4.2显示创建语句

show create database 数据库名;

说明:
  • MySQL建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default.... */这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
  • /*!80016 ...*/同理,表示版本大于 8.00.16 时执行(加密选项)

4.2修改数据库

语法:
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...] alter_spacification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
说明:
  • 对数据库的修改主要指的是修改数据库的字符集,校验规则
实例: 将db1数据库字符集改成gbk

4.4数据库删除

DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注意:不要随意删除数据库

4.5备份和恢复--放在最后

1.备份
语法:
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
示例:将test1库备份到文件(退出连接)
# mysqldump -P3306 -u root -p -B test1 > D:test1.sql

这时,可以打开看看mytest.db1文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
2还原
3注意事项
  • 如果备份的不是整个数据库,而是其中的一张表,怎么做?
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
  • 同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
4.6查看连接情况
语法:
show processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 14:46:58

AI绘画工具横评:模型能力与实际表现

核心参数对照以下对照表以公开可查的规格参数为基准,呈现不同AI绘画工具在模型能力维度的关键数据。各参数来自品牌公开资料和产品文档,具体表现以实际使用环境和条件为准。工具风格/模型数量最高输出分辨率结构控制费用机制海艺AI80万模型、8大方向、50…

作者头像 李华
网站建设 2026/5/29 14:43:00

第23篇|深浅色适配:颜色资源不是装饰,而是可维护系统

这篇从工程骨架切入,先把入口、配置和状态约定讲清楚,再落到用户能看到的页面效果。本篇主题是「深浅色适配:颜色资源不是装饰,而是可维护系统」,目标是把源码、效果和工程质量放到同一篇文章里讲透。本文是 21 天「智…

作者头像 李华
网站建设 2026/5/29 14:41:38

如何突破B站视频下载的技术壁垒?bilibili-downloader深度技术解析

如何突破B站视频下载的技术壁垒?bilibili-downloader深度技术解析 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 在数字内…

作者头像 李华
网站建设 2026/5/29 14:35:57

【RT-DETR实战】089、RT-DETR的CI/CD流水线搭建:从手动炼丹到自动化部署

一、深夜调试的血泪教训 上周三凌晨两点,我在实验室盯着屏幕上的mAP数值发愣——明明本地测试精度达到78.3%,部署到边缘设备后直接掉到71.2%。 排查了三小时才发现,原来本地训练时用了混合精度,而部署脚本里忘记添加--half参数。 更糟糕的是,团队新成员提交的代码把预处…

作者头像 李华
网站建设 2026/5/29 14:34:12

三步轻松搞定网页视频下载:VideoDownloadHelper终极使用指南

三步轻松搞定网页视频下载:VideoDownloadHelper终极使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾为无法保存网…

作者头像 李华