1. MySQL 概述
MySQL 是一个流行的开源关系型数据库管理系统(RDBMS),使用 SQL 语言进行操作。它以其性能、可靠性和易用性而闻名。MySQL 支持多种操作系统,包括多种 Unix 和 Linux 变体、Windows 和 macOS。
2. MySQL 版本
- MySQL Community Edition: 免费且开源。
- MySQL Enterprise Edition: 付费,提供额外的企业级特性,如备份、安全性和监控工具。
3. 安装 MySQL
3.1 Windows
- 下载 MySQL Community Server 的 MSI 安装包。
- 运行安装程序并遵循安装向导。
- 在安装过程中设置 root 用户密码。
3.2 Linux (Ubuntu/Debian)
sudo apt update
sudo apt install mysql-server
3.3 macOS
使用 Homebrew 安装:
brew install mysql
4. 配置 MySQL
- 编辑
my.cnf
或my.ini
文件(取决于操作系统)来配置 MySQL。 - 重要的配置包括
innodb_buffer_pool_size
,max_connections
,query_cache_size
等。
5. MySQL 基本操作
5.1 登录 MySQL
mysql -u root -p
5.2 创建数据库
CREATE DATABASE mydatabase;
5.3 选择数据库
USE mydatabase;
5.4 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(100)
);
5.5 插入数据
INSERT INTO users (username, password, email) VALUES ('user1', 'pass1', 'user1@example.com');
5.6 查询数据
SELECT * FROM users;
5.7 更新数据
UPDATE users SET email = 'newemail@example.com' WHERE username = 'user1';
5.8 删除数据
DELETE FROM users WHERE username = 'user1';
5.9 删除表
DROP TABLE users;
5.10 删除数据库
DROP DATABASE mydatabase;
6. 数据库备份和恢复
6.1 备份
mysqldump -u root -p mydatabase > mydatabase_backup.sql
6.2 恢复
mysql -u root -p mydatabase < mydatabase_backup.sql
7. 数据库安全
- 用户权限: 使用
GRANT
和REVOKE
语句管理用户权限。 - 加密连接: 配置 SSL 以加密客户端和服务器之间的连接。
- 防火墙: 配置防火墙规则以限制对 MySQL 端口的访问。
8. 性能优化
- 索引: 为经常用于查询条件的列创建索引。
- 查询优化: 使用
EXPLAIN
关键字分析查询性能。 - 分区: 对大表进行分区以提高查询效率。
9. 常用 SQL 函数
- 字符串函数:
CONCAT()
,SUBSTRING()
,TRIM()
,UPPER()
,LOWER()
。 - 数值函数:
ABS()
,CEILING()
,FLOOR()
,ROUND()
,RAND()
。 - 日期和时间函数:
NOW()
,CURDATE()
,DATE_ADD()
,TIMEDIFF()
。
10. 存储引擎
- InnoDB: 支持事务、行级锁定和外键。
- MyISAM: 性能高,不支持事务和行级锁定。
- MEMORY: 存储数据于内存中,访问速度快,但不适合大量数据。
11. 事务处理
- ACID属性: 原子性、一致性、隔离性、持久性。
- 事务控制:
-
START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT;
12. 视图
- 创建视图:
CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;
13. 存储过程和函数
- 存储过程: 一组为了执行特定任务而预编译的 SQL 语句。
- 自定义函数: 返回一个值的 SQL 代码块。
14. 触发器
- 创建触发器:
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW BEGIN -- SQL statements END;
15. 复制
- 主从复制: MySQL 数据库复制,用于负载均衡和数据备份。
16. 监控和日志
- 慢查询日志: 记录执行时间超过阈值的查询。
- 二进制日志: 记录所有更改数据的操作,用于复制和恢复。