Node 中使用 MySQL
认识 mysql2
- 前面我们所有的操作都是在
GUI工具中,通过执行SQL语句来获取结果的,那真实开发中肯定是通过代码来完成所有的操作的。 - 那么如何可以在
Node的代码中执行SQL语句来,这里我们可以借助于两个库:mysql:最早的Node连接MySQL的数据库驱动;mysql2:在mysql的基础之上,进行了很多的优化、改进;
- 目前相对来说,我更偏向于使用
mysql2,mysql2兼容mysql的API,并且提供了一些附加功能- 更快/更好的性能;
Prepared Statement(预编译语句):- 提高性能:将创建的语句模块发送给
MySQL,然后MySQL编译(解析、优化、转换)语句模块,并且存储它但是不执行,之后我们在真正执行时会给?提供实际的参数才会执行;就算多次执行,也只会编译一次,所以性能是更高的; - 防止
SQL注入:之后传入的值不会像模块引擎那样就编译,那么一些SQL注入的内容不会被执行;or 1 = 1不会被执行;
- 提高性能:将创建的语句模块发送给
- 支持
Promise,所以我们可以使用async和await语法 - 等等…
- 所以后续的学习中我会选择
mysql2在node中操作数据。
使用 mysql2
- 安装
mysql2npm install mysql2
mysql2的使用过程如下:- 第一步:创建连接(通过
createConnection),并且获取连接对象; - 第二步:执行
SQL语句即可(通过query);
- 第一步:创建连接(通过
项目展示
-
桌面新建文件
learn_mysql_node -
初始化项目:
npm init -y -
在
package.json中配置脚本-
安装热部署:
npm i nodemon{ "name": "learn_mysql_node", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon ./src/app.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "mysql2": "^2.3.3", "nodemon": "^2.0.16" } }
-
-
打开
Navicat,鼠标右击localhost_3306新建mall数据库
-
在数据库
mall下面新建user表use mall; CREATE TABLE `user` ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20), `password` VARCHAR(20), nickName VARCHAR(20), age INT, birthday TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) INSERT INTO `user` SET username = 'admin',password = '123456',nickname = '张三',age = 18; INSERT INTO `user` SET username = 'lisi',password = '123456',nickname = '李四',age = 18; INSERT INTO `user` SET username = 'wangwu',password = '123456',nickname = '王五',age = 18; INSERT INTO `user` SET username = 'zhaoliu',password = '123456',nickname = '赵六',age = 18; SELECT * FROM `user`; -
根目录下新建文件夹
src,在文件夹src下新建app.js文件-
安装
mysql2(npm i mysql2)const mysql = require("mysql2"); // 创建 mysql 数据库连接 const connection = mysql.createConnection({ // 数据库主机地址 host: "localhost", // 端口号 prot: 3306, // 数据库用户名 user: "root", // 数据库密码 字符串 password: "123456", // 指定数据库 database: "mall", }); // 查询sql语句 const querySQL = "select * from user"; // 添加sql语句 const addSQL = "insert into user set ?"; // 添加的数据 const userOBJ = { username: "xiaoliu", nickname: "小刘", password: "123456", age: 36, }; // 删除sql语句 const delSQL = "delete from user where id=?"; // 修改sql语句 const editSQL = "update user set ? where id=?"; // 修改的数据 const editOBJ = { username: "dada", nickname: "大大", password: "123456", age: 11, }; // 添加 // connection.query(addSQL, userOBJ, (err, result, fields) => { // console.log(result); // }); // 删除 // connection.query(delSQL, [1], (err, result, fields) => { // console.log(result); // }); // 修改 connection.query(editSQL, [editOBJ, 7], (err, result, fields) => { console.log(result); }); // 查询 /** * querySQL sql * [] 提交/数据 * callback(err,result,fields)=>{} * err sql执行时产生的错误 * result 结果 * fields 字段 */ connection.query(querySQL, [], (err, result, fields) => { console.log(result); });
-
本文介绍了在Node.js开发中如何使用mysql2库来连接和操作MySQL数据库。相较于原始的mysql库,mysql2提供了更好的性能、PreparedStatement以防止SQL注入,以及对Promise的支持,便于使用async/await。通过示例展示了创建数据库连接、执行SQL查询、插入、删除和更新数据的基本步骤。同时,还给出了项目的初始化和数据库的创建与填充示例。
718





