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

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.dtcms.com/a/312326.html

相关文章:

  • [每周一更]-(第154期):Docker 底层深度剖析:掌控 CPU 与内存资源的艺术
  • Mysql深入学习:慢sql执行
  • 【嵌入式硬件实例】-555定时器IC的负电压发生器
  • 如新能源汽车渗透率模拟展开完整报告
  • GB 44496-2024《汽车软件升级通用技术要求》对行业从业者的变革性影响
  • MySQL存储过程和触发器
  • 关于车位引导及汽车乘梯解决方案的专业性、系统性、可落地性强的综合设计方案与技术实现说明,旨在为现代智慧停车楼提供高效、安全、智能的停车体验。
  • 6.1、Redis多级缓存原理和优化、Redis部分参数优化调整
  • 在 macOS 上通过 Docker 部署DM8 (ARM 架构)
  • 译|用户增长策略如何使用因果机器学习的案例
  • Javaweb————Apache Tomcat目录文件结构讲解
  • java学习 73矩阵置零 54螺旋矩阵 148排序链表
  • pydantic - 更方便地编写 entity 类
  • [LeetCode优选算法专题一双指针——有效三角形的个数]
  • Vue+SpringBoot+langchain4j实战案例:实现AI消息问答 及 Markdown打字机渲染效果
  • CVE-2025-5947 漏洞场景剖析
  • ⭐CVPR2025 FreeUV:无真值 3D 人脸纹理重建框架
  • winntsetup安装驱动和光驱安装F6功能一样----NT5.2.3790源代码分析
  • 嵌入式硬件篇---Openmv
  • 若没有安全可靠性保障,对于工程应用而言,AI或许就是大玩具吗?
  • 13.Redis 的级联复制
  • 计算机网络:如何在实际网络中进行子网划分
  • nestjs @Get 从入门到精通
  • 选择排序原理与C语言实现详解
  • Python 小数据池(Small Object Pool)详解
  • golang的包和闭包
  • 【Linux】linux基础开发工具(三) 版本控制器Git、调试器 - gdb/cgdb使用、一些实用的调试技巧
  • Libevent(5)之使用教程(4)工具
  • 二叉树的锯齿形层次遍历
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N1阶段(2):018年7月-JLPT-N1