- Node.js 教程
- Node.js - 首页
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 第一个应用程序
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调函数概念
- Node.js - 上传文件
- Node.js - 发送邮件
- Node.js - 事件
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 进程
- Node.js - 应用程序扩展
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲区
- Node.js - 流
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 入门
- Node.js - MySQL 创建数据库
- Node.js - MySQL 创建表
- Node.js - MySQL 插入数据
- Node.js - MySQL 从表中选择数据
- Node.js - MySQL Where 条件
- Node.js - MySQL Order By 排序
- Node.js - MySQL 删除数据
- Node.js - MySQL 更新数据
- Node.js - MySQL 连接
- Node.js MongoDB
- Node.js - MongoDB 入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB 插入数据
- Node.js - MongoDB 查找数据
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB 删除数据
- Node.js - MongoDB 更新数据
- Node.js - MongoDB 限制结果
- Node.js - MongoDB 连接
- Node.js 模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - 实用程序模块
- Node.js - Web 模块
- Node.js 有用资源
- Node.js - 快速指南
- Node.js - 有用资源
- Node.js - 讨论
Node.js - MySQL 从表中选择数据
在 MySQL 数据库中最常见的操作是从表中检索数据。SELECT 查询对应于 CRUD 首字母缩写词中的检索操作。要使用 Node.js 程序执行检索,应将 SELECT 查询字符串传递给 MySQL 连接对象的 query() 方法。
MySQL 中的 SELECT FROM 语句具有以下语法:
SELECT field1, field2, ... FROM table_name;
要从表中定义的所有字段中选择数据,可以使用星号 (*) 字符。
SELECT * FROM table_name;
可以使用其他子句与主 SELECT 语句一起使用,例如 LIKE、WHERE、ORDER BY 等。
SELECT 语句返回一个结果集,其中包含从表中检索的行列表。
MySQL 命令行客户端类似于 Node.js REPL 环境。SELECT 语句检索的结果集在查询语句之后立即显示。
mysql> use mydb; Database changed mysql> SELECT name, age, salary FROM employee; +-------+------+--------+ | name | age | salary | +-------+------+--------+ | Ravi | 25 | 25000 | | Anil | 26 | 30000 | | Meena | 26 | 27000 | +-------+------+--------+
但是,在 Node.js 中,当将 SELECT 查询传递给 MySQL 连接对象的 query() 方法时,它会返回一个 RowDataPacket 对象数组。要处理检索到的数据,必须将其转换为 JSON 格式。
示例
在以下代码中,我们将 SELECT 查询字符串传递给 con.query() 方法,并在控制台上显示结果集。
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "mypassword", database: "mydb" }); var qry =`SELECT name,salary FROM employee;`; con.connect(function (err) { if (err) throw err; console.log("Connected!"); con.query(qry, function (err, results) { if (err) throw err; console.log(results); }); con.end(); });
输出
[ RowDataPacket { name: 'Ravi', salary: 25000 }, RowDataPacket { name: 'Anil', salary: 30000 }, RowDataPacket { name: 'Meena', salary: 27000 } ]
我们可以使用 JSON.stringify() 方法将 RowDataPacket 对象转换为字符串,而不是原始结果集。
var qry =`SELECT name,salary FROM employee;`; con.connect(function (err) { if (err) throw err; console.log("Connected!"); con.query(qry, function (err, results) { if (err) throw err; console.log(JSON.stringify(results)); }); con.end(); });
输出
[{"name":"Ravi","salary":25000},{"name":"Anil","salary":30000},{"name":"Meena","salary":27000}]
示例
在此示例中,* 通配符用于从 employee 表中的所有字段检索数据。我们还使用 forEach 循环逐行迭代 SELECT 查询返回的结果集。每一行中每个字段的值可以通过在方括号中放入字段名称来获取。例如,行的 ID 由 row[‘id’] 给出。
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "mypassword", database: "mydb" }); var qry =`SELECT * FROM employee;`; con.connect(function (err) { if (err) throw err; console.log("Connected!"); con.query(qry, function (err, results) { if (err) throw err; results.forEach((row) => { console.log(`ID: ${row['id']}, NAME: ${row['name']}, AGE: ${row['age']}, SALARY: ${row['salary']}`); }); }); con.end(); });
输出
ID: 1, NAME: Ravi, AGE: 25, SALARY: 25000 ID: 2, NAME: Anil, AGE: 26, SALARY: 30000 ID: 3, NAME: Meena, AGE: 26, SALARY: 27000
您可以在 SELECT 语句的字段列表中包含派生或计算列,其中其值取决于涉及结构中定义的字段的表达式。您还可以使用 AS 关键字为字段指定别名。
SELECT expression AS COLUMN_name FROM table_name;
在以下示例中,SELECT 语句有一个 TAX 列。它的值计算为 salary 字段的 5%。
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "mypassword", database: "mydb" }); var qry =`SELECT name, salary, salary*0.05 as tax FROM employee;`; con.connect(function (err) { if (err) throw err; console.log("Connected!"); con.query(qry, function (err, results) { if (err) throw err; console.log(JSON.stringify(results)); }); con.end(); });
输出
[{"name":"Ravi","salary":25000,"tax":1250},{"name":"Anil","salary":30000,"tax":1500},{"name":"Meena","salary":27000,"tax":1350}]