MySQL 使用手册
MySQL 使用手册
ZhangCurryMySQL 使用手册
目录 📚
MySQL 简介
安装与配置
基本操作
数据库操作
表操作
数据操作
查询语句
高级查询
索引
用户权限管理
备份与恢复
MySQL 简介 📖
MySQL 是世界上最流行的开源关系型数据库管理系统之一。它被广泛用于Web应用开发中,是LAMP(Linux, Apache, MySQL, PHP/Python/Perl)技术栈的重要组成部分。
特点 ✨
开源免费 💰
高性能 ⚡
跨平台支持 🌍
支持多种存储引擎 🛠️
社区支持强大 🤝
安装与配置 🔧
Windows 安装 🪟
1. 下载 MySQL 安装包
2. 运行安装程序
3. 配置环境变量(可选)
4. 启动 MySQL 服务
net start mysql
Linux 安装 (Ubuntu/Debian) 🐧
更新包列表
sudo apt update
安装 MySQL 服务器
sudo apt install mysql-server
启动 MySQL 服务
sudo systemctl start mysql
设置开机自启
sudo systemctl enable mysql
登录 MySQL 🔐
登录 MySQL(需要输入密码)
mysql -u root -p
或者指定主机
mysql -h localhost -u root -p
基本操作 🎯
查看状态信息 📊
– 查看 MySQL 版本
SELECT VERSION();
– 查看当前用户
SELECT USER();
– 查看当前数据库
SELECT DATABASE();
退出 MySQL 🚪
– 退出 MySQL
EXIT;
– 或者
QUIT;
数据库操作 🗃️
创建数据库 🆕
– 创建数据库
CREATE DATABASE company_db;
– 创建数据库并指定字符集
CREATE DATABASE school_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
查看数据库 👀
– 查看所有数据库
SHOW DATABASES;
– 查看创建数据库的语句
SHOW CREATE DATABASE company_db;
使用数据库 📁
– 使用指定数据库
USE company_db;
修改数据库 🛠️
– 修改数据库字符集
ALTER DATABASE school_db
CHARACTER SET utf8mb4;
删除数据库 🗑️
– 删除数据库
DROP DATABASE company_db;
– 安全删除(如果存在)
DROP DATABASE IF EXISTS company_db;
表操作 📋
创建表 🆕
– 创建员工表
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)
);
查看表结构 👀
– 查看所有表
SHOW TABLES;
– 查看表结构
DESCRIBE employees;
– 或者
DESC employees;
– 查看创建表的语句
SHOW CREATE TABLE employees;
修改表结构 🛠️
– 添加列
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;
删除表 🗑️
– 删除表
DROP TABLE employees;
– 安全删除(如果存在)
DROP TABLE IF EXISTS employees;
数据操作 📝
插入数据 ➕
– 插入单行数据
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’);
查询数据 🔍
– 查询所有数据
SELECT * FROM employees;
– 查询指定列
SELECT name, email, salary FROM employees;
– 查询满足条件的数据
SELECT * FROM employees
WHERE department = ‘IT部门’;
– 查询工资大于8000的员工
SELECT * FROM employees
WHERE salary > 8000;
更新数据 🔄
– 更新单个记录
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部门’;
删除数据 🗑️
– 删除指定记录
DELETE FROM employees
WHERE id = 1;
– 删除满足条件的记录
DELETE FROM employees
WHERE salary < 5000;
– 清空表(保留表结构)
TRUNCATE TABLE employees;
查询语句 🔎
基本查询 📊
– 查询所有列
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;
条件查询 🎯
– 等于条件
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;
排序查询 📈
– 升序排序(默认)
SELECT * FROM employees
ORDER BY salary;
– 降序排序
SELECT * FROM employees
ORDER BY salary DESC;
– 多列排序
SELECT * FROM employees
ORDER BY department ASC, salary DESC;
高级查询 🚀
聚合函数 📊
– 统计记录数
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;
连接查询 🔗
– 内连接
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;
子查询 🔄
– 查询工资高于平均工资的员工
SELECT * FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
– 查询IT部门的员工
SELECT * FROM employees
WHERE department IN (SELECT name FROM departments WHERE name = ‘IT部门’);
联合查询 🤝
– 合并两个查询结果
SELECT name FROM employees WHERE department = ‘IT部门’
UNION
SELECT name FROM employees WHERE salary > 8000;
索引 📚
创建索引 🆕
– 创建普通索引
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)
);
查看索引 👀
– 查看表的索引
SHOW INDEX FROM employees;
– 查看索引状态
SHOW INDEX FROM employees FROM company_db;
删除索引 🗑️
– 删除索引
DROP INDEX idx_employee_name ON employees;
– 或者使用 ALTER TABLE
ALTER TABLE employees DROP INDEX idx_employee_name;
用户权限管理 👤
创建用户 🆕
– 创建用户
CREATE USER ‘developer‘@’localhost’ IDENTIFIED BY ‘password123’;
– 创建可以从任何主机连接的用户
CREATE USER ‘remote_user‘@’%’ IDENTIFIED BY ‘password123’;
授权权限 🔑
– 授予数据库所有权限
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;
查看权限 👀
– 查看用户权限
SHOW GRANTS FOR ‘developer‘@’localhost’;
– 查看当前用户权限
SHOW GRANTS;
撤销权限 🚫
– 撤销特定权限
REVOKE INSERT ON company_db.employees FROM ‘developer‘@’localhost’;
– 撤销所有权限
REVOKE ALL PRIVILEGES ON company_db.* FROM ‘developer‘@’localhost’;
– 刷新权限
FLUSH PRIVILEGES;
删除用户 🗑️
– 删除用户
DROP USER ‘developer‘@’localhost’;
备份与恢复 💾
备份数据库 📦
备份整个数据库
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
恢复数据库 🔄
恢复数据库
mysql -u root -p company_db < company_backup.sql
恢复所有数据库
mysql -u root -p < all_backup.sql
导出表数据 📤
导出表数据为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
常用技巧和最佳实践 🌟
性能优化建议 ⚡
合理使用索引
- 为经常查询的列创建索引
**避免SELECT *** - 只查询需要的列
使用LIMIT
- 限制查询结果数量
优化WHERE条件
- 将选择性高的条件放在前面
定期分析表
- 使用ANALYZE TABLE更新统计信息
安全建议 🔒
设置强密码
- 使用复杂密码并定期更换
最小权限原则
- 只授予必要的权限
定期备份
- 定期备份重要数据
更新版本
- 及时更新到最新稳定版本
网络隔离
- 限制数据库访问来源
监控和维护 🛠️
– 查看当前连接
SHOW PROCESSLIST;
– 查看数据库状态
SHOW STATUS;
– 查看变量设置
SHOW VARIABLES;
– 分析表
ANALYZE TABLE employees;
– 优化表
OPTIMIZE TABLE employees;
– 检查表
CHECK TABLE employees;
– 修复表
REPAIR TABLE employees;
希望这份 MySQL 使用手册能帮助你更好地理解和使用 MySQL 数据库!如果还有其他问题,随时可以查阅官方文档或寻求社区帮助。😊
图片
如果你觉得这篇文章有帮助,别忘了关注👇🏻、点赞、分享和收藏!👍✨
#前端开发 #MySQL数据库 #数据库使用 #前端面试



