[TOC]
>[success] # Nodejs 操作 Mysql
上一章學習了 **MySQL** 的基礎知識后,本章將了解如何在 **nodejs** 中操作 **Mysql** ,上一章是在 **workbench 客戶端** 來進行 **增刪改查** 的,實際項目中不可能用它來操作,而是用代碼操作,接下來我們講解一下如何在 **nodejs** 中操作 **Mysql**
* **示例:首先我們用 demo 演示,先不考慮使用**
* **封裝:將其封裝為系統可用的工具,也就是封裝成一個工具函數,在 nodejs 中執行該函數,傳入查詢語句或者查詢條件就可以查詢到數據,封裝時還要考慮到【數據庫配置】問題,【線上數據庫配置】與【線下數據庫配置】**
* **使用:讓 API 直接操作數據庫,不再像之前使用假數據**
1. 首先創建一個空白的 **tsts 文件夾**,然后執行 `npm init -y` 進行初始化
2. 安裝 **MySQL** 插件,在 **test 文件夾** 中執行 ` npm i mysql --registry=https://registry.npmmirror.com` 進行 **MySQL 插件** 的安裝

安裝成功后就可以在 **package.json** 中看到了,已經安裝成功了
3. 然后我們在 **test 文件夾** 下創建一個 **index.js** 文件,用來在里面寫操作 **MySQL 的 demo**
**index.js**
~~~
// 引入mysql
const mysql = require('mysql')
// 創建鏈接對象
const con = mysql.createConnection({
host: 'localhost', // 域
user: 'root', // 賬號
password: 'Wjc13842859435.', // 密碼
port: '3306', // 端口號
database: 'myblog' // database: 'myblog' 相當于在 workbench 中執行的 use myblog 指令,意思是使用 myblog 數據庫
})
// 開始連接
con.connect()
// 執行 sql 語句
const sql = `select * from users;`
con.query(sql, (err, result) => {
if(err) { // 失敗
console.error(err)
return
}
console.log(result) // 成功
})
// 關閉連接
con.end()
~~~
首先引入 **mysql** ,然后 **創建鏈接** 來 **連接數據庫** ,再 **開始連接數據庫** ,然后 **執行 sql 語句** 進行查詢,如果 **查詢失敗就打印結果然后 return 不往下走邏輯了,如果成功就返回查詢結果** ,最后 **關閉數據庫連接**
>[success] ## 在 nodejs 中使用 sql 語句
接下來我們示范 **如何在 nodejs 中使用 sql 語句**
>[success] ### 查詢
在控制臺上輸入 `node index.js` 運行文件,就會看到已經成功返回了數據,這是 **查詢的結果 ,星號會查詢所有的屬性字段**

如果我們上面的 **sql 語句不想用星號來查詢,只想查詢部分字段屬性信息,例如想查詢 id 跟 username ,就把 sql 語句換成用 id 和 username** 來查詢
~~~
const sql = `select id, username from users;`
~~~
返回結果就是只有這 **2 個屬性** 的對象

>[success] ### 更新(修改)
在代碼中 **更新數據的話就把 sql 語句替換成更新語句** ,如下代碼,**把 username 等于 lisi 的這條數據的 realname 修改為 李四2**
~~~
const sql = `update users set realname='李四2' where username='lisi'`
~~~
然后在控制臺執行一下,返回結果

這里的 **affectedRows: 1** 意思是更新一行數據成功,**這里返回的 **1** 這個值就是后續接口中返回布爾值時,1就返回 true,0就返回false**
>[success] ### 插入(新增)
把 **sql 語句** 換成下面的 **sql 語句**
~~~
const sql = `insert into blogs(title, content, createtime, author) values('標題C', '內容C', '1646636104797', 'zhangsan');`
~~~
然后在控制臺執行一下,返回結果


插入成功后這里會返回一個 **insertId,這個 id 就是插入的這條數據的 id**
- NodeJS基礎
- 什么是NodeJS
- npm
- Node.js+Express+Koa2+開發Web Server博客
- 下載和安裝node
- nodejs和js的區別
- commonjs-演示
- nodejs如何debugger
- server端與前端的區別
- 項目需求分析
- 開發接口(不使用任何框架)
- http-概述
- 處理get請求
- 處理post請求
- 處理http請求的綜合示例
- 搭建開發環境
- 初始化并且開發路由
- 開發博客項目之數據存儲
- MySql介紹
- 數據庫操作(創建和增、刪、查)
- Nodejs 操作 Mysql
- Nodejs 鏈接 mysql 做成工具
- API 對接 MySQL
- 開發博客項目之登陸
- cookie-介紹
- cookie用于登錄驗證
- cookie做限制