当前位置: 首页 > web >正文

Node.js 操作 MySQL

目录

一、什么是 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

http://www.xdnf.cn/news/17067.html

相关文章:

  • SpringAI的使用
  • Mysql的MVCC是什么
  • 基于开源AI智能客服、AI智能名片与S2B2C商城小程序的餐饮行业私域流量运营策略研究
  • 数据结构-双链表
  • 【数据分享】各省粮食外贸依存度、粮食波动率等粮食相关数据合集(2011-2022)(获取方式看文末)
  • MCP革命:AI世界的“USB-C”接口如何重塑智能体与外部工具的连接
  • 信号传播速度与延时
  • 机器学习——下采样(UnderSampling),解决类别不平衡问题,案例:逻辑回归 信用卡欺诈检测
  • 【2025ICCV-目标检测方向】WaveMamba:用于 RGB-红外目标检测的小波驱动曼巴融合
  • 从零开始实现Qwen3(Dense架构)
  • template<typename R = void> 意义
  • 构建企业级Web应用:AWS全栈架构深度解析
  • ⭐CVPR2025 FreeUV:无真值 3D 人脸纹理重建框架
  • IDEA查看源码利器XCodeMap插件
  • DMDRS产品概述和安装部署
  • 服务端⾼并发分布式结构演进之路
  • 每日面试题19:深拷贝和浅拷贝的区别
  • All the Mods 9 - To the Sky - atm9sky 局域网联机报错可能解决方法
  • 玩转 Playwright 有头与无头模式:消除差异,提升爬虫稳定性
  • 人声伴奏分离API:音乐智能处理的强大工具
  • 提升工作效率的利器:Qwen3 大语言模型
  • [LeetCode优选算法专题一双指针——有效三角形的个数]
  • Android 之 图片加载(Fresco/Picasso/Glide)
  • [硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义
  • 多模态大模型综述:BLIP-2详解(第二篇)
  • GraphRAG:基于知识图谱的检索增强生成技术解析
  • 【QT】常⽤控件详解(二)windowOpacitycursorfontsetToolTipfocusPolicystyleSheet
  • 设计模式学习[17]---组合模式
  • 使用 Docker 部署 Golang 程序
  • HoloLens+vuforia打包后遇到的问题