微信登录

SQL 查询 - MySQL 查询 - 执行 SQL 查询语句

SQL 查询 - MySQL 查询 - 执行 SQL 查询语句

在 Node.js 开发中,与数据库交互是非常常见的需求,而 MySQL 作为一款广泛使用的关系型数据库,与 Node.js 的结合十分紧密。本文将详细介绍如何在 Node.js 中执行 MySQL 的 SQL 查询语句,从基础的连接数据库到各种类型的 SQL 查询操作,都将通过具体的示例代码进行演示。

准备工作

在开始之前,需要确保已经安装了 Node.js 和 MySQL 数据库,并且可以正常访问。同时,还需要安装 mysql2 模块,它是一个快速的 MySQL 驱动程序,支持 Promise 和回调两种方式。可以使用以下命令进行安装:

  1. npm install mysql2

连接数据库

首先,我们需要创建一个数据库连接。以下是一个简单的示例代码:

  1. const mysql = require('mysql2');
  2. // 创建连接池
  3. const pool = mysql.createPool({
  4. host: 'localhost',
  5. user: 'your_username',
  6. password: 'your_password',
  7. database: 'your_database',
  8. waitForConnections: true,
  9. connectionLimit: 10,
  10. queueLimit: 0
  11. });
  12. // 获取一个连接
  13. pool.getConnection((err, connection) => {
  14. if (err) {
  15. console.error('数据库连接失败:', err);
  16. return;
  17. }
  18. console.log('数据库连接成功');
  19. // 释放连接
  20. connection.release();
  21. });
  22. // 导出连接池
  23. module.exports = pool.promise();

在上述代码中,我们使用 mysql2 模块创建了一个连接池,并设置了相关的连接参数。通过 getConnection 方法获取一个连接,如果连接成功则打印成功信息,最后释放连接。为了方便后续使用,我们将连接池以 Promise 的形式导出。

执行 SQL 查询语句

查询数据

以下是一个简单的查询示例,用于从 users 表中获取所有用户的信息:

  1. const db = require('./db');
  2. async function selectUsers() {
  3. try {
  4. const [rows, fields] = await db.execute('SELECT * FROM users');
  5. console.log('查询结果:', rows);
  6. } catch (error) {
  7. console.error('查询出错:', error);
  8. }
  9. }
  10. selectUsers();

在上述代码中,我们定义了一个异步函数 selectUsers,使用 db.execute 方法执行 SQL 查询语句。execute 方法返回一个 Promise,通过 await 关键字等待查询结果。查询结果包含两个部分:rows 表示查询到的数据行,fields 表示查询结果的字段信息。

插入数据

以下是一个插入数据的示例,向 users 表中插入一条新的用户记录:

  1. const db = require('./db');
  2. async function insertUser() {
  3. try {
  4. const [result] = await db.execute('INSERT INTO users (name, age) VALUES (?, ?)', ['John Doe', 30]);
  5. console.log('插入成功,插入的记录 ID 为:', result.insertId);
  6. } catch (error) {
  7. console.error('插入出错:', error);
  8. }
  9. }
  10. insertUser();

在上述代码中,我们使用 ? 作为占位符,将实际的参数作为第二个参数传递给 execute 方法。这样可以避免 SQL 注入攻击。插入操作的结果包含一个 insertId 属性,表示插入记录的 ID。

更新数据

以下是一个更新数据的示例,将 users 表中 ID 为 1 的用户的年龄更新为 35:

  1. const db = require('./db');
  2. async function updateUser() {
  3. try {
  4. const [result] = await db.execute('UPDATE users SET age = ? WHERE id = ?', [35, 1]);
  5. console.log('更新成功,受影响的行数为:', result.affectedRows);
  6. } catch (error) {
  7. console.error('更新出错:', error);
  8. }
  9. }
  10. updateUser();

在上述代码中,我们使用 UPDATE 语句更新数据,并使用占位符传递参数。更新操作的结果包含一个 affectedRows 属性,表示受影响的行数。

删除数据

以下是一个删除数据的示例,删除 users 表中 ID 为 1 的用户记录:

  1. const db = require('./db');
  2. async function deleteUser() {
  3. try {
  4. const [result] = await db.execute('DELETE FROM users WHERE id = ?', [1]);
  5. console.log('删除成功,受影响的行数为:', result.affectedRows);
  6. } catch (error) {
  7. console.error('删除出错:', error);
  8. }
  9. }
  10. deleteUser();

在上述代码中,我们使用 DELETE 语句删除数据,并使用占位符传递参数。删除操作的结果同样包含一个 affectedRows 属性,表示受影响的行数。

总结

操作类型 SQL 语句示例 Node.js 代码示例 结果属性
查询数据 SELECT * FROM users const [rows, fields] = await db.execute('SELECT * FROM users'); rows:查询到的数据行,fields:字段信息
插入数据 INSERT INTO users (name, age) VALUES (?, ?) const [result] = await db.execute('INSERT INTO users (name, age) VALUES (?, ?)', ['John Doe', 30]); insertId:插入记录的 ID
更新数据 UPDATE users SET age = ? WHERE id = ? const [result] = await db.execute('UPDATE users SET age = ? WHERE id = ?', [35, 1]); affectedRows:受影响的行数
删除数据 DELETE FROM users WHERE id = ? const [result] = await db.execute('DELETE FROM users WHERE id = ?', [1]); affectedRows:受影响的行数

通过以上示例,我们可以看到在 Node.js 中执行 MySQL 的 SQL 查询语句非常方便。使用 mysql2 模块,我们可以轻松地连接数据库,并执行各种类型的 SQL 操作。同时,使用占位符可以有效地防止 SQL 注入攻击,提高代码的安全性。希望本文对你有所帮助!

SQL 查询 - MySQL 查询 - 执行 SQL 查询语句