- 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 - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - MySQL Select From
在MySQL数据库上执行的最常见操作是从表中检索数据。SELECT 查询对应于 CRUD 首字母缩略词中的 Retrieve 操作。要使用 Node.js 程序执行检索,应将 SELECT 查询字符串传递给 MySQL 连接对象的 query() 方法。
MySQL中的SELECT FROM语句具有以下语法 -
SELECT field1, field2, ... FROM table_name;
要从表中定义的所有字段中选择数据,可以使用 Asterix (*) 字符。
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();
});
输出
例
在此示例中,* 通配符用于从 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: 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 列。其值计算为工资字段的 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":"Anil","salary":30000,"tax":1500},
{"name":"Meena","salary":27000,"tax":1350}]