Node.js - MySQL Insert Into



MySQL数据库中的表存储一行或多行或记录。每条记录都由表结构定义的列或属性组成。在本章中,您将学习如何使用 INSERT INTO 语句在 MySQL 表中添加新行、使用 MySQL 客户端以及通过 Node.js 程序。

假设已经在MySQL服务器上创建了mydb数据库,并且其中有EMPLOYEE表,其结构如下 -


mysql> desc employee;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type 	   | Null | Key | Default | Extra 	 	   |
+--------+-------------+------+-----+---------+----------------+
| id 	 | int 	       | NO   | PRI | NULL 	  | auto_increment |
| name 	 | varchar(20) | NO   | 	| NULL 	  | 	 	 	   |
| age 	 | int 	       | YES  | 	| NULL 	  | 	 	 	   |
| salary | float 	   | YES  | 	| NULL 	  | 	 	 	   |
+--------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

INSERT INTO语句的语法如下:


INSERT INTO table_name (field1, field2, ......) VALUES (value1,value2, ......);

table_name后面的括号是字段列表。这些字段中要填充的值将放在 VALUES 子句后面的第二个括号中,顺序与字段相同。如果值列表的字段数量和顺序与表结构中的字段数量和顺序相同,则可以省略字段列表。如果表结构有任何auto_increment字段,它们将自动填充。

打开 MySQL 客户端并发出以下 INSERT INTO 语句以在 EMPLOYEE 表中插入新记录。使用 SELECT 查询检查是否已添加新记录。


mysql> INSERT INTO employee VALUES(1, "Ravi", 25, 25000);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM employee;
+----+------+------+--------+
| id | name | age 	| salary |
+----+------+------+--------+
| 	1| Ravi | 	 25 | 25000  |
+----+------+------+--------+
1 row in set (0.00 sec)

插入Node.js

现在,我们必须借助Node.js应用程序以编程方式在MySQL表中插入一条新记录。要在表中插入数据,必须首先加载其数据库。SQL命令USE数据库在MySQL客户端中执行此操作。您可以通过在createConnection()方法中添加数据库参数来使用数据库 -


var mysql = require('mysql');
var con = mysql.createConnection({
	 	host: "localhost",
	 	user: "root",
	 	password: "mypassword",
	 	database: "mydb"
});

插入新记录Node.js代码涉及以下步骤 -

  • 包含 mysql 模块
  • 调用 createConnection() 函数获取连接对象。
  • 使用连接对象的 query() 方法,并将 INSERT INTO 查询字符串作为第一个参数传递给它。


var mysql = require('mysql');
var con = mysql.createConnection({
	 	host: "localhost",
	 	user: "root",
	 	password: "mypassword",
	 	database: "mydb"
});
var qry =`INSERT INTO employee (name, age, salary) VALUES("Ravi", 25, 25000);`;
con.connect(function (err) {
	 	if (err) throw err;
	 	console.log("Connected!");
	 	con.query(qry, function (err, result) {
	 	 	 if (err) throw err;
	 	 	 console.log("New Record inserted successfully");
	 	});

	 	con.end();
});

输出

Connected!
New Record inserted successfully

在MySQL客户端中运行SELECT查询,检查是否已添加新记录。

带有预准备语句的 INSERT

MySQL支持准备好的语句语法,其中变量数据被动态添加到查询字符串中。带有预准备语句的 INSERT 查询的语法为 −


 qry = "INSERT INTO table_name VALUES (?,?,?)", [var1, var2, var3];

在下面的代码中,新记录的数据存储在数组中。它用作 con.query() 方法的参数。数组中的值替换了?准备好的查询中的占位符。


var mysql = require('mysql');
var con = mysql.createConnection({
	 	host: "localhost",
	 	user: "root",
	 	password: "mypassword",
	 	database: "mydb"
});
var data = ["Ravi", 25, 25000];
var qry =`INSERT INTO employee (name, age, salary) VALUES(?,?,?);`;
con.connect(function (err) {
	 	if (err) throw err;
	 	console.log("Connected!");
	 	con.query(qry,data, function (err, result) {
	 	 	 if (err) throw err;
	 	 	 console.log("New Record inserted successfully");
	 	});

	 	con.end();
});

当执行上述程序时,将存储一条新记录,其值与数据数组中给定的值相同。您可以使用二维数组作为值源插入多条记录。


var mysql = require('mysql');
var con = mysql.createConnection({
	 	host: "localhost",
user: "root",
	 	password: "mypassword",
	 	database: "mydb"
});
var data = [
	 	["Ravi", 25, 25000],
	 	["Anil", 26, 30000],
	 	["Meena", 26, 27000]
];
var qry =`INSERT INTO employee (name, age, salary) VALUES(?,?,?);`;
con.connect(function (err) {
	 	if (err) throw err;
	 	console.log("Connected!");
	 	for (var i=0;i<data.length; i++){
	 	 	 con.query(qry,data[i], function (err, result) {
	 	 	 	 	if (err) throw err;
	 	 	 	 	console.log("New Record inserted successfully");
	 	 	 })
		 	};
	 	con.end();
});

通过运行 SELECT 查询 n MySQL 命令行客户端来检查 employee 表中的数据,如下所示:


mysql> SELECT * FROM employee;
+----+-------+------+--------+
| id | name  | age 	| salary |
+----+-------+------+--------+
| 	1 | Ravi | 	 25 | 25000  |
| 	2 | Anil | 	 26 | 30000  |
| 	3 | Meena| 	 26 | 27000  |
+----+-------+------+--------+
3 rows in set (0.00 sec)