目錄
一、什么是 MySQL?
二、MySQL 的功能概覽
三、MySQL 的安裝與啟動
安裝 MySQL
啟動服務
四、Node.js 如何連接 MySQL?
使用?mysql2?模塊(推薦)
建立連接
五、創建數據表和插入數據(SQL 初始化)
六、Node.js 操作 MySQL(CRUD)
1? 添加數據(Create)
2? 查詢數據(Read)
3? 更新數據(Update)
4? 刪除數據(Delete)
七、使用可視化工具查看數據庫
八、實戰項目結構示例
index.js 示例
總結
一、什么是 MySQL?
MySQL 是一個開源的關系型數據庫管理系統(RDBMS),使用結構化查詢語言 SQL 進行數據操作。數據以表格(表)形式存儲,適用于對數據一致性要求較高的系統。
特點:
- 關系型數據庫:數據存儲在表中,表之間可建立關系
- 嚴格的數據結構(列名、類型必須定義)
- 支持事務、視圖、索引、存儲過程等
- 高性能、穩定性強、適合企業級應用
- 支持多種存儲引擎(如 InnoDB)
二、MySQL 的功能概覽
功能 | 說明 |
---|---|
表結構化 | 所有數據存儲在“表”中,有固定字段類型 |
SQL 查詢語法 | 支持復雜 SQL 操作:連接、聚合、子查詢等 |
多用戶支持 | 權限控制精細,支持多用戶操作 |
ACID 事務支持 | 保證數據一致性和完整性 |
高可用與主從復制 | 支持主從復制、集群部署等高可用方案 |
三、MySQL 的安裝與啟動
安裝 MySQL
- 官方網站下載安裝:https://dev.mysql.com/downloads/
- 使用 Docker 安裝:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
啟動服務
Windows 啟動方式
-
圖形化界面方式
打開 “服務” 窗口:按下 Win + R,輸入 services.msc 并回車。
在服務列表中找到 MySQL(名稱可能為 MySQL80、MySQL57 等,取決于版本)。
右鍵選擇 “啟動”(停止則選擇 “停止”,重啟選擇 “重啟”)。 -
命令行方式(管理員權限) 按下 Win + X,選擇 “Windows 終端(管理員)” 或 “命令提示符(管理員)”。
啟動服務:
net start MySQL #若服務名不同,需替換為實際名稱,如 net start MySQL80
停止服務:
net stop MySQL
默認連接地址:mysql://127.0.0.1:3306
四、Node.js 如何連接 MySQL?
使用?mysql2
?模塊(推薦)
npm install mysql2
建立連接
// db.js
const mysql = require('mysql2/promise');async function connect() {const connection = await mysql.createConnection({host: 'localhost',user: 'root',password: '123456',database: 'testdb'});console.log("MySQL連接成功");return connection;
}module.exports = connect;
說明:
mysql2/promise
?支持?async/await
?異步操作testdb
?為數據庫名稱,需提前創建
五、創建數據表和插入數據(SQL 初始化)
CREATE DATABASE IF NOT EXISTS testdb;USE testdb;CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50),password VARCHAR(50),age INT
);
六、Node.js 操作 MySQL(CRUD)
以下操作在?async
?函數中執行,確保使用?await
?等待數據庫響應。
1? 添加數據(Create)
await connection.execute('INSERT INTO users (username, password, age) VALUES (?, ?, ?)',['Tom', '123456', 20]
);
2? 查詢數據(Read)
查詢全部:
const [rows] = await connection.execute('SELECT * FROM users');
console.log(rows);
條件查詢:
const [rows] = await connection.execute('SELECT * FROM users WHERE age >= ?',[18]
);
查詢一條:
const [rows] = await connection.execute('SELECT * FROM users WHERE username = ? LIMIT 1',['Tom']
);
3? 更新數據(Update)
await connection.execute('UPDATE users SET age = ? WHERE username = ?',[25, 'Tom']
);
4? 刪除數據(Delete)
await connection.execute('DELETE FROM users WHERE username = ?',['Tom']
);
七、使用可視化工具查看數據庫
工具 | 說明 |
---|---|
MySQL Workbench | 官方 GUI 工具,功能全面 |
DBeaver | 支持多種數據庫,開源好用 |
Navicat | 商業軟件,功能強大,體驗良好 |
HeidiSQL | 免費輕量,適合基本操作 |
使用方式:連接?localhost:3306
,輸入賬號密碼后可管理數據庫、表和數據。
八、實戰項目結構示例
project/
├── db.js # 數據庫連接配置
├── index.js # 入口文件(包含 CRUD 操作)
index.js 示例
const connect = require('./db');async function main() {const connection = await connect();// 添加await connection.execute('INSERT INTO users (username, password, age) VALUES (?, ?, ?)',['Alice', '123', 22]);// 查詢const [users] = await connection.execute('SELECT * FROM users');console.log(users);// 更新await connection.execute('UPDATE users SET age = ? WHERE username = ?',[23, 'Alice']);// 刪除await connection.execute('DELETE FROM users WHERE username = ?',['Alice']);connection.end(); // 關閉連接
}main();
總結
項目 | 內容 |
---|---|
數據庫 | MySQL(關系型數據庫) |
Node連接方式 | mysql2(Promise API) |
操作方式 | execute SQL 語句(Insert、Select、Update、Delete) |
工具推薦 | MySQL Workbench、DBeaver、Navicat |
數據結構 | 表(Table)、字段(Column)、記錄(Row) |
常見端口 | 默認 3306 |