目录

一、什么是 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.pswp.cn/pingmian/92210.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92210.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92210.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁高效敏捷:2025年Scrum项目管理工具的核心应用解析

一、为什么Scrum团队需要专业项目管理工具?在敏捷开发实践中,Scrum框架虽然提供了基础的工作流程,但缺乏对任务细粒度管理的支持。传统白板或简单看板工具往往无法满足现代敏捷团队的需求,导致:冲刺规划混乱&#xff1…

途游大数据面试题及参考答案

Java 的反射机制是什么?主要应用在哪些场景? Java的反射机制是指程序在运行时,能够获取自身类的信息(如类名、属性、方法、构造器等),并动态操作这些信息的能力。正常情况下,Java代码编译时类型已确定,而反射打破了这种编译期约束,让程序在运行时灵活操作类和对象。 …

贪心+矩阵算法

贪心算法贪心的本质是:选择每一阶段的局部最优,从而达到全局最优做题的时候,只要想清楚 局部最优 是什么,如果推导出全局最优,其实就够了。买卖股票的最佳实际思路:如果第i天卖出股票,则最大利润…

STM32U5 周期性异常复位问题分析

关键字: Option Bytes, IDWG 1. 问题背景 客户反馈使用 NUCLEO_STM32U575 进行评估时,发现板子烧录完程序后,能看到指示程序运行的 LED 灯正常点亮,但是程序跑不起来。仔细观察 LED 指示灯,并不是常亮而是出现周期性…

RedisBloom使用

安装RedisBloom模块,从git获取对应的原码,make生成.so文件,挂载.so文件,启动redis docker run --name test-redis -v /iothub/test-redis/data:/data -v /iothub/test-redis/modules:/modules -p 6378:6379 -d redis:4.0.10 redis…

ADC、Flash、SPI、watchdog

ADCADC(Analog-to-Digital Converter), 即模拟信号 - 数字信号转换器在STM32F103C8T6中, 同样具有ADC功能.以我们的芯片为例, 也存在2个片上外设ADC, 即ADC1和ADC2, 这两个ADC片上外设都挂载在APB2总线上.我们的ADC片上外设, 是一种具有12位逐次逼近型ADC,ADC转换的本质是不断的…

冷库设备远程监控物联网+省电节能解决方案

随着生鲜电商、医药冷链、跨境物流等行业的爆发式增长,我国冷库容量激增,但传统冷库管理模式正面临严峻挑战。据统计,国内冷链运输损耗率高达12%-15%,其中因温度失控导致的货损占比超60%。在某医药企业冷库事故中,因制…

如何开发一个运行在windows系统服务器上的服务

第一步:vs2022创建一个windows服务项目第二步:从工具箱拖拽出一个timer第三步:按下图所示进入,开始编辑业务逻辑下面给个例子using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; …

本地组策略编辑器无法打开(gpedit.msc命令异常)

一、本地组策略编辑器打开方式1、直接搜索打开(1)在搜索栏中直接输入以下内容进行搜索本地组策略编辑器(2)搜索到后直接点击打开即可(但是一部分同志无法搜索到,搜索到的内容基本都是网页信息而非本地系统的…

kafka部署集群模式

Kafka部署(3.7) 生产环境推荐的kafka部署方式为operator方式部署,Strimzi是目前最主流的operator方案。集群数据量较小的话,可以采用NFS共享存储,数据量较大的话可使用local pv存储 部署operator operator部署方式为he…

C语言中级_动态内存分配、指针和常量、各种指针类型、指针和数组、函数指针

0、前言: 动态内存分配是一个重要概念,要和静态数组对比着学习;指针和数组搭配在一起,让指针理解的难度上了一个台阶,尤其是二维数组搭配指针,要获取数组的值,什么时候“取地址”,什…

单变量单步时序预测:CNN-GRU卷积神经网络结合门控循环单元

目录预测效果1. **CNN-GRU的基本原理**2. **应用场景**3. **模型结构与实现**4. **优势与挑战**5. **相关研究与实现**6. **未来发展方向**结论代码设计预测效果 CNN-GRU卷积神经网络结合门控循环单元是一种结合了卷积神经网络(CNN)和门控循环单元&#…

MonoFusion 与 Genie 3

卡内基梅隆大学的研究者发明了一种叫 MonoFusion 的新技术,它能用很少的普通相机(比如4个),就能拍出像电影特效一样细腻流畅的动态3D场景(4D重建),比如弹钢琴、修自行车这种复杂动作&#xff0c…

kubernets命令行创建Token并附加权限给dashboard控制台登录

1、创建登录token kubectl create token default -n graph-node-test dgjeojrgopejgeropjgpsdjgerjglsdjfsjogjeojgeorjgortlfhj4yu493460uwperg3wef;lsj2y3r934tnrhifrlfe9t4h5tlhobdrmlgw485tw4yp653ut9ogogjerolj4w9erjgotj3fgjletyj49yr20o359truyo5u6908430jt5grjsdtgj49…

什么是SpringBoot

题目详细答案Spring Boot 是由 Pivotal 团队提供的一个基于 Spring 框架的项目,它旨在简化 Spring 应用的开发和部署。Spring Boot 通过提供一系列的约定和开箱即用的功能,使得开发者可以更快地构建独立的、生产级的 Spring 应用程序,而无需进…

从零开始设计一个分布式KV存储:基于Raft的协程化实现

从零开始设计一个分布式KV存储:基于Raft的协程化实现 本文将以一个最小可运行的分布式KV系统为例,带你拆解如何用C、Raft算法和协程模型构建高可用的Key-Value存储。 一、为什么需要分布式KV? 单机KV(如Redis)存在单点…

虚拟机或docker的ubuntu无界面安装完成后镜像源设置

ubuntu系统源 在装好虚拟机或者docker镜像后,直接使用apt update && apt upgrade是无法完更新的。 此时系统中也没有vim工具,我们可以在清华源的网站中找到帮助文档。mirrors.tuna.tsinghua.edu.cn/help/ubuntu/为了避免冲突,我们使用…

串口通信02 温度传感DS18B20 01 day49

九:串口通信 通信:无线和有线 ​ 单工 半双工 全双工 并行:多个数据线 串行:一根数据线 同步:通信双方使用同一个时钟,SPI信息帧,有CLK引脚 异步:通信双方使用不同时钟,双…

【FreeRTOS 】任务通知

FreeRTOS 任务通知任务通知简介一 、发送通知1.1 xTaskNotify()1.2 xTaskNotifyFromISR()1.3 xTaskNotifyGive()1.4 xTaskNotifyAndQuery()1.5 xTaskNotifyAndQueryFromISR()二、接收通知2.1 ulTaskNotifyTake()2.2 xTaskNotifyWait()三、清除通知状态和值3.1 xTaskNotifyState…

Android视图状态以及重绘

一、视图状态(View States)1. 五种核心状态状态作用修改方法特点enabled视图是否响应交互setEnabled(boolean)禁用状态下不响应onTouch事件focused视图是否获得焦点requestFocus()需同时满足focusable和focusableInTouchModewindow_focused视图所在窗口是…