Skip to content

MySQL

什么是 MySQL

MySQL 是一个开源的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据管理。MySQL 是最流行的关系型数据库之一,广泛应用于 Web 应用、企业级应用和数据仓库等场景。

MySQL 的特点

1. 可靠性

  • 稳定的性能
  • 数据一致性
  • 事务支持

2. 可扩展性

  • 支持大型数据库
  • 高并发处理能力
  • 分布式架构支持

3. 安全性

  • 访问控制
  • 数据加密
  • 审计日志

4. 灵活性

  • 支持多种存储引擎
  • 可定制性强
  • 跨平台支持

5. 易用性

  • 简单的安装和配置
  • 丰富的文档
  • 活跃的社区

安装 MySQL

Windows

  1. 访问 MySQL 官网
  2. 下载 MySQL Installer
  3. 运行安装程序
  4. 按照向导完成安装

macOS

  1. 使用 Homebrew 安装:brew install mysql
  2. 或下载 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 mysqld

MySQL 基本操作

连接数据库

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

学习资源

实践练习

  1. 安装和配置 MySQL
  2. 创建数据库和表
  3. 插入、查询、更新和删除数据
  4. 与 Node.js 集成
  5. 优化数据库性能

基于 VitePress 的本地知识库