Appearance
MySQL
什么是 MySQL
MySQL 是一个开源的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据管理。MySQL 是最流行的关系型数据库之一,广泛应用于 Web 应用、企业级应用和数据仓库等场景。
MySQL 的特点
1. 可靠性
- 稳定的性能
- 数据一致性
- 事务支持
2. 可扩展性
- 支持大型数据库
- 高并发处理能力
- 分布式架构支持
3. 安全性
- 访问控制
- 数据加密
- 审计日志
4. 灵活性
- 支持多种存储引擎
- 可定制性强
- 跨平台支持
5. 易用性
- 简单的安装和配置
- 丰富的文档
- 活跃的社区
安装 MySQL
Windows
- 访问 MySQL 官网
- 下载 MySQL Installer
- 运行安装程序
- 按照向导完成安装
macOS
- 使用 Homebrew 安装:
brew install mysql - 或下载 MySQL 安装包
Linux
bash
# Ubuntu/Debian
sudo apt update
sudo apt install mysql-server
# CentOS/RHEL
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqldMySQL 基本操作
连接数据库
bash
mysql -u root -p创建数据库
sql
CREATE DATABASE database_name;使用数据库
sql
USE database_name;创建表
sql
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);插入数据
sql
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');查询数据
sql
SELECT * FROM users;
SELECT name, email FROM users WHERE id = 1;更新数据
sql
UPDATE users SET name = 'Jane Doe' WHERE id = 1;删除数据
sql
DELETE FROM users WHERE id = 1;MySQL 与 Node.js 集成
安装 MySQL 驱动
bash
npm install mysql
# 或使用 mysql2
npm install mysql2基本连接
javascript
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database_name'
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL');
});
// 执行查询
connection.query('SELECT * FROM users', (err, results) => {
if (err) throw err;
console.log(results);
});
// 关闭连接
connection.end();使用连接池
javascript
const mysql = require('mysql');
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database_name',
connectionLimit: 10
});
// 执行查询
pool.query('SELECT * FROM users', (err, results) => {
if (err) throw err;
console.log(results);
});
// 关闭连接池
pool.end();使用 mysql2/promise
javascript
const mysql = require('mysql2/promise');
async function main() {
const connection = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database_name'
});
try {
const [results] = await connection.execute('SELECT * FROM users');
console.log(results);
} finally {
await connection.end();
}
}
main();MySQL 最佳实践
1. 数据库设计
- 合理设计表结构
- 使用适当的数据类型
- 建立索引
- 规范化数据
2. 性能优化
- 使用索引
- 优化查询
- 避免全表扫描
- 使用连接池
3. 安全性
- 使用参数化查询防止 SQL 注入
- 限制数据库用户权限
- 定期备份数据
- 使用 SSL 连接
4. 备份和恢复
- 定期备份数据库
- 测试备份恢复
- 制定灾难恢复计划
5. 监控和维护
- 监控数据库性能
- 定期优化表
- 清理日志
- 更新 MySQL 版本
MySQL 常见问题
1. 连接问题
- 检查网络连接
- 确认用户名和密码
- 检查防火墙设置
2. 性能问题
- 优化查询
- 增加索引
- 调整配置参数
3. 数据一致性问题
- 使用事务
- 正确处理错误
- 定期备份
4. 安全问题
- 防止 SQL 注入
- 限制用户权限
- 使用 SSL
学习资源
实践练习
- 安装和配置 MySQL
- 创建数据库和表
- 插入、查询、更新和删除数据
- 与 Node.js 集成
- 优化数据库性能