MySQL 数据库安装
使用Docker安装MySQL
终端运行命令
# docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull mysql
docker pull hub.c.163.com/library/mysql:latest

D盘创建目录docker/mysql/conf,docker/mysql/data
这是mysql的配置文件和存储数据用的目录
切换到终端,输入命令,第一次启动MySQL容器
docker run --name mysql -p 3306:3306 ^
-e MYSQL_ROOT_PASSWORD=123456 ^
-d mysql

命令解释:
docker run --name mysql
–name 为容器指定名称为mysql
-p 3306:3306 指定端口映射,将主机端口3306映射到容器端口3306
-e MYSQL_ROOT_PASSWORD=123456
-e 设置环境变量 ,设置root用户,密码123456
-d mysql:latest --default-authentication-plugin=mysql_native_password
-d 后台运行,并返回容器ID ,mysql:latest 镜像名
准备复制MySQL镜像中的配置文件到刚刚创建的本地持久化目录
D:/docker/mysql/conf/
打开docker桌面,点击Images镜像-> 选择mysql镜像-> 点击In use进入容器->
点击name:mysql-> 点击Files-> 打开目录etc/my.cnf点击下载到目录 D:/docker/mysql/conf/
关闭容器
终端执行命令
关闭容器
docker stop mysql
删除容器
docker rm mysql

重新启动容器,执行命令
docker run --name mysql -p 3306:3306 ^
-v //d/HBBTJ/Docker/mysql/data:/var/lib/mysql ^
-v //d/HBBTJ/Docker/mysql/conf/my.cnf:/etc/mysql/my.cnf ^
-e MYSQL_ROOT_PASSWORD=123456 ^
-d mysql
-v //d/HBBTJ/Docker/mysql/data:/var/lib/mysql
映射主机目录d盘的/docker/mysql/data 到容器的/var/lib/mysql/目录

测试是否持久化
进入 MySQL 容器:
docker exec -it mysql mysql -uroot -p
新建数据库:
CREATE DATABASE testdb;
查看 D:\docker\mysql\data,应该能看到 testdb 文件夹。

数据会存到 Docker 管理的 volume 里,用 docker volume ls 可以查看。
MySQL 使用基本操作
登录、退出
# Linux / Docker 容器内
mysql -u root -p
# 指定主机和端口
mysql -h 127.0.0.1 -P 3306 -u root -p
#退出
exit;
1. 基础命令
| 命令 | 功能 | 示例 |
|---|---|---|
show databases; | 查看所有数据库 | - |
use 库名; | 切换数据库 | use school; |
show tables; | 查看表 | - |
desc 表名; | 查看表结构 | desc student; |
create database 库名; | 创建数据库 | create database testdb; |
2. 数据库与表
数据库管理
创建:
CREATE DATABASE [IF NOT EXISTS] 库名;删除:
DROP DATABASE [IF EXISTS] 库名;查看:
SHOW DATABASES;
表结构设计
- 列类型:数值(int、bigint)、字符串(varchar、text)、时间(datetime)
- 字段属性:UnSigned(非负)、Auto_InCrement(自增)、DEFAULT(默认值)
- 创建示例
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
表修改与删除
- 重命名:
ALTER TABLE 旧名 RENAME AS 新名; - 增字段:
ALTER TABLE 表名 ADD 字段 类型; - 删表:
DROP TABLE IF EXISTS 表名;
3. 数据操作(DML)
插入(INSERT)
-- 单条
INSERT INTO student(`name`) VALUES('张三');
-- 多条
INSERT INTO student(`name`,`pwd`) VALUES('张三','123'),('李四','456');
修改(UPDATE)
UPDATE student SET `name`='张三2024' WHERE id=1; -- 加条件避免全表修改
删除(DELETE)
DELETE FROM student WHERE id=1; -- 必加WHERE
-- 重置自增用TRUNCATE(不可回滚)
TRUNCATE TABLE student;
4. 数据查询(DQL)
基础查询
SELECT `id`,`name` FROM student; -- 指定字段
SELECT DISTINCT `id` FROM result; -- 去重
条件查询(WHERE)
-- 区间
SELECT * FROM result WHERE score BETWEEN 90 AND 100;
-- 模糊查询
SELECT * FROM student WHERE `name` LIKE '%张%';
分组与聚合
-- 按科目查平均分(>90)
SELECT subject,AVG(score)
FROM result
GROUP BY subject
HAVING AVG(score)>90;
连接查询
-- 学生-年级关联
SELECT s.`name`,g.`gradeName`
FROM student s
INNER JOIN grade g ON s.gradeId=g.id;
排序与分页
-- 排序
SELECT * FROM student ORDER BY id DESC;
-- 分页(第1页,5条)
SELECT * FROM student LIMIT 0,5;
5. 高级特性
MD5 加密
-- 插入加密
INSERT INTO testMD5 VALUES(1,'张三',MD5('123'));
-- 校验
SELECT * FROM testMD5 WHERE `name`='张三' AND pwd=MD5('123');
事务管理
- ACID:原子性、一致性、隔离性、持久性
SET autocommit=0; -- 关自动提交
START TRANSACTION; -- 启事务
-- SQL操作
COMMIT; -- 成功提交
-- ROLLBACK; -- 失败回滚
SET autocommit=1; -- 恢复
索引
- 分类:主键索引、普通索引、唯一索引
- 创建:
CREATE INDEX idx_name ON student(name); - 原则:查询字段加索引,小表 / 频繁更新字段不加
用户与权限
CREATE USER 'tom'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON testdb.* TO 'tom'@'%';
FLUSH PRIVILEGES; -- 刷新权限
数据库备份与恢复
备份
mysqldump -u root -p testdb > testdb.sql
恢复
mysql -u root -p testdb < testdb.sql
总结
安装方式:Linux apt/yum、Windows Installer、Docker(推荐)。
核心命令:CREATE DATABASE、CREATE TABLE、INSERT、SELECT、UPDATE、DELETE。
管理工具:命令行 (mysql),图形化工具(MySQL Workbench、Navicat、DBeaver)。
