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.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視圖所在窗口是…