MySQL使用手册

MySQL 使用手册

目录 📚

  1. MySQL 简介
  2. 安装与配置
  3. 基本操作
  4. 数据库操作
  5. 表操作
  6. 数据操作
  7. 查询语句
  8. 高级查询
  9. 索引
  10. 用户权限管理
  11. 备份与恢复

MySQL 简介 📖

MySQL 是世界上最流行的开源关系型数据库管理系统之一。它被广泛用于Web应用开发中,是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)技术栈的重要组成部分。

特点 ✨

  • 开源免费 💰
  • 高性能 ⚡
  • 跨平台支持 🌍
  • 支持多种存储引擎 🛠️
  • 社区支持强大 🤝

安装与配置 🔧

Windows 安装 🪟

1
2
3
4
# 1. 下载 MySQL 安装包
# 2. 运行安装程序
# 3. 配置环境变量(可选)
# 4. 启动 MySQL 服务net start mysql

Linux 安装 (Ubuntu/Debian) 🐧

1
2
3
4
5
6
7
8
# 更新包列表
sudo apt update
# 安装 MySQL 服务器
sudo apt install mysql-server
# 启动 MySQL 服务
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql

登录 MySQL 🔐

1
2
3
4
# 登录 MySQL(需要输入密码)
mysql -u root -p
# 或者指定主机
mysql -h localhost -u root -p

基本操作 🎯

查看状态信息 📊

1
2
3
4
5
6
-- 查看 MySQL 版本
SELECT VERSION();
-- 查看当前用户
SELECT USER();
-- 查看当前数据库
SELECT DATABASE();

退出 MySQL 🚪

1
2
3
4
-- 退出 MySQL
EXIT;
-- 或者
QUIT;

数据库操作 🗃️

创建数据库 🆕

1
2
3
4
5
6
-- 创建数据库
CREATE DATABASE company_db;
-- 创建数据库并指定字符集
CREATE DATABASE school_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

查看数据库 👀

1
2
3
4
-- 查看所有数据库
SHOW DATABASES;
-- 查看创建数据库的语句
SHOW CREATE DATABASE company_db;

使用数据库 📁

1
2
-- 使用指定数据库
USE company_db;

修改数据库 🛠️

1
2
3
-- 修改数据库字符集
ALTER DATABASE school_db
CHARACTER SET utf8mb4;

删除数据库 🗑️

1
2
3
4
-- 删除数据库
DROP DATABASE company_db;
-- 安全删除(如果存在)
DROP DATABASE IF EXISTS company_db;

表操作 📋

创建表 🆕

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 创建员工表
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT CHECK (age >= 18),
department VARCHAR(50),
salary DECIMAL(10,2),
hire_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建部门表
CREATE TABLE departments (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
location VARCHAR(100)
);

查看表结构 👀

1
2
3
4
5
6
7
8
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESCRIBE employees;
-- 或者
DESC employees;
-- 查看创建表的语句
SHOW CREATE TABLE employees;

修改表结构 🛠️

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 添加列
ALTER TABLE employees
ADD COLUMN phone VARCHAR(20);
-- 修改列类型
ALTER TABLE employees
MODIFY COLUMN phone VARCHAR(15);
-- 重命名列
ALTER TABLE employees
CHANGE COLUMN phone mobile VARCHAR(15);
-- 删除列
ALTER TABLE employees
DROP COLUMN mobile;
-- 重命名表
ALTER TABLE employees
RENAME TO staff;

删除表 🗑️

1
2
3
4
-- 删除表
DROP TABLE employees;
-- 安全删除(如果存在)
DROP TABLE IF EXISTS employees;

数据操作 📝

插入数据 ➕

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 插入单行数据
INSERT INTO departments (name, location)
VALUES ('IT部门', '北京');
-- 插入多行数据
INSERT INTO departments (name, location)
VALUES
('人事部', '上海'),
('财务部', '广州'),
('市场部', '深圳');
-- 插入员工数据
INSERT INTO employees (name, email, age, department, salary, hire_date)
VALUES
('张三', 'zhangsan@company.com', 28, 'IT部门', 8000.00, '2023-01-15'),
('李四', 'lisi@company.com', 32, '人事部', 7500.00, '2022-05-20'),
('王五', 'wangwu@company.com', 29, '财务部', 7800.00, '2023-03-10');

查询数据 🔍

1
2
3
4
5
6
7
8
9
10
-- 查询所有数据
SELECT * FROM employees;
-- 查询指定列
SELECT name, email, salary FROM employees;
-- 查询满足条件的数据
SELECT * FROM employees
WHERE department = 'IT部门';
-- 查询工资大于8000的员工
SELECT * FROM employees
WHERE salary > 8000;

更新数据 🔄

1
2
3
4
5
6
7
8
9
10
11
12
-- 更新单个记录
UPDATE employees
SET salary = 8500.00
WHERE id = 1;
-- 更新多个字段
UPDATE employees
SET salary = 9000.00, department = '市场部'
WHERE name = '张三';
-- 批量更新
UPDATE employees
SET salary = salary * 1.1
WHERE department = 'IT部门';

删除数据 🗑️

1
2
3
4
5
6
7
8
-- 删除指定记录
DELETE FROM employees
WHERE id = 1;
-- 删除满足条件的记录
DELETE FROM employees
WHERE salary < 5000;
-- 清空表(保留表结构)
TRUNCATE TABLE employees;

查询语句 🔎

基本查询 📊

1
2
3
4
5
6
7
8
9
10
11
12
-- 查询所有列
SELECT * FROM employees;
-- 查询指定列
SELECT name, salary FROM employees;
-- 去重查询
SELECT DISTINCT department FROM employees;
-- 限制查询结果数量
SELECT * FROM employees LIMIT 5;
-- 跳过前几条记录
SELECT * FROM employees LIMIT 5 OFFSET 10;
-- 或者
SELECT * FROM employees LIMIT 10, 5;

条件查询 🎯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-- 等于条件
SELECT * FROM employees
WHERE department = 'IT部门';
-- 不等于条件
SELECT * FROM employees
WHERE department != '人事部';
-- 或者
SELECT * FROM employees
WHERE department <> '人事部';
-- 范围查询
SELECT * FROM employees
WHERE salary BETWEEN 7000 AND 9000;
-- 多个值查询
SELECT * FROM employees
WHERE department IN ('IT部门', '财务部');
-- 模糊查询
SELECT * FROM employees
WHERE name LIKE '张%';
-- 空值查询
SELECT * FROM employees
WHERE email IS NULL;

排序查询 📈

1
2
3
4
5
6
7
8
9
-- 升序排序(默认)
SELECT * FROM employees
ORDER BY salary;
-- 降序排序
SELECT * FROM employees
ORDER BY salary DESC;
-- 多列排序
SELECT * FROM employees
ORDER BY department ASC, salary DESC;

高级查询 🚀

聚合函数 📊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 统计记录数
SELECT COUNT(*) FROM employees;
-- 计算平均工资
SELECT AVG(salary) FROM employees;
-- 计算总工资
SELECT SUM(salary) FROM employees;
-- 最高工资
SELECT MAX(salary) FROM employees;
-- 最低工资
SELECT MIN(salary) FROM employees;
-- 按部门统计人数
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;
-- 按部门统计平均工资
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department;

连接查询 🔗

1
2
3
4
5
6
7
8
9
10
11
12
-- 内连接
SELECT e.name, e.salary, d.location
FROM employees e
INNER JOIN departments d ON e.department = d.name;
-- 左连接
SELECT e.name, e.salary, d.location
FROM employees e
LEFT JOIN departments d ON e.department = d.name;
-- 右连接
SELECT e.name, e.salary, d.location
FROM employees e
RIGHT JOIN departments d ON e.department = d.name;

子查询 🔄

1
2
3
4
5
6
-- 查询工资高于平均工资的员工
SELECT * FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
-- 查询IT部门的员工
SELECT * FROM employees
WHERE department IN (SELECT name FROM departments WHERE name = 'IT部门');

联合查询 🤝

1
2
3
4
-- 合并两个查询结果
SELECT name FROM employees WHERE department = 'IT部门'
UNION
SELECT name FROM employees WHERE salary > 8000;

索引 📚

创建索引 🆕

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 创建普通索引
CREATE INDEX idx_employee_name ON employees(name);
-- 创建唯一索引
CREATE UNIQUE INDEX idx_employee_email ON employees(email);
-- 创建复合索引
CREATE INDEX idx_employee_dept_salary ON employees(department, salary);
-- 在创建表时创建索引
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
category VARCHAR(50),
price DECIMAL(10,2),
INDEX idx_name (name),
INDEX idx_category_price (category, price)
);

查看索引 👀

1
2
3
4
-- 查看表的索引
SHOW INDEX FROM employees;
-- 查看索引状态
SHOW INDEX FROM employees FROM company_db;

删除索引 🗑️

1
2
3
4
-- 删除索引
DROP INDEX idx_employee_name ON employees;
-- 或者使用 ALTER TABLE
ALTER TABLE employees DROP INDEX idx_employee_name;

用户权限管理 👤

创建用户 🆕

1
2
3
4
-- 创建用户
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'password123';
-- 创建可以从任何主机连接的用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password123';

授权权限 🔑

1
2
3
4
5
6
7
8
-- 授予数据库所有权限
GRANT ALL PRIVILEGES ON company_db.* TO 'developer'@'localhost';
-- 授予特定权限
GRANT SELECT, INSERT, UPDATE ON company_db.employees TO 'developer'@'localhost';
-- 授予只读权限
GRANT SELECT ON company_db.* TO 'developer'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;

查看权限 👀

1
2
3
4
-- 查看用户权限
SHOW GRANTS FOR 'developer'@'localhost';
-- 查看当前用户权限
SHOW GRANTS;

撤销权限 🚫

1
2
3
4
5
6
-- 撤销特定权限
REVOKE INSERT ON company_db.employees FROM 'developer'@'localhost';
-- 撤销所有权限
REVOKE ALL PRIVILEGES ON company_db.* FROM 'developer'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;

删除用户 🗑️

1
2
-- 删除用户
DROP USER 'developer'@'localhost';

备份与恢复 💾

备份数据库 📦

1
2
3
4
5
6
7
8
# 备份整个数据库
mysqldump -u root -p company_db > company_backup.sql
# 备份多个数据库
mysqldump -u root -p --databases company_db school_db > multiple_backup.sql
# 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql
# 只备份表结构
mysqldump -u root -p --no-data company_db > structure_backup.sql

恢复数据库 🔄

1
2
3
4
# 恢复数据库
mysql -u root -p company_db < company_backup.sql
# 恢复所有数据库
mysql -u root -p < all_backup.sql

导出表数据 📤

1
2
3
4
# 导出表数据为CSV格式
mysql -u root -p -e "SELECT * FROM employees" company_db > employees.csv
# 使用SELECT INTO OUTFILE导出
mysql -u root -p -e "SELECT * FROM employees INTO OUTFILE '/tmp/employees.csv' FIELDS TERMINATED BY ','" company_db

常用技巧和最佳实践 🌟

性能优化建议 ⚡

  1. 合理使用索引

    - 为经常查询的列创建索引

  2. **避免SELECT *** - 只查询需要的列

  3. 使用LIMIT

    - 限制查询结果数量

  4. 优化WHERE条件

    - 将选择性高的条件放在前面

  5. 定期分析表

    - 使用ANALYZE TABLE更新统计信息

安全建议 🔒

  1. 设置强密码

    - 使用复杂密码并定期更换

  2. 最小权限原则

    - 只授予必要的权限

  3. 定期备份

    - 定期备份重要数据

  4. 更新版本

    - 及时更新到最新稳定版本

  5. 网络隔离

    - 限制数据库访问来源

监控和维护 🛠️

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 查看当前连接
SHOW PROCESSLIST;
-- 查看数据库状态
SHOW STATUS;
-- 查看变量设置
SHOW VARIABLES;
-- 分析表
ANALYZE TABLE employees;
-- 优化表
OPTIMIZE TABLE employees;
-- 检查表
CHECK TABLE employees;
-- 修复表
REPAIR TABLE employees;

希望这份 MySQL 使用手册能帮助你更好地理解和使用 MySQL 数据库!如果还有其他问题,随时可以查阅官方文档或寻求社区帮助。😊

图片

如果你觉得这篇文章有帮助,别忘了关注👇🏻、****点赞、分享收藏!👍✨

#前端开发 #MySQL数据库 #数据库使用 #前端面试

https://mp.weixin.qq.com/s/FV3pPIEgw1S8sUx-h114KA?scene=1