Node.js - MySQL Insert Into

Một bảng trong cơ sở dữ liệu MySQL lưu trữ một hoặc nhiều hàng hoặc bản ghi. Mỗi bản ghi bao gồm các cột hoặc thuộc tính được xác định bởi cấu trúc bảng. Trong chương này, bạn sẽ học cách sử dụng câu lệnh INSERT INTO để thêm một hàng mới vào bảng MySQL, sử dụng MySQL client, cũng như thông qua một chương trình Node.js.

Giả sử rằng cơ sở dữ liệu mydb đã được tạo trên máy chủ MySQL, và nó có bảng EMPLOYEE với cấu trúc như sau −

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)

Câu lệnh INSERT INTO có cú pháp như sau −

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

Dấu ngoặc đơn sau table_name là danh sách trường. Các giá trị được điền vào các trường này được đặt trong dấu ngoặc đơn thứ hai sau mệnh đề VALUES, theo cùng thứ tự như các trường. Nếu danh sách giá trị có số lượng và thứ tự giống như trong cấu trúc bảng, bạn có thể bỏ qua danh sách trường. Nếu cấu trúc bảng có bất kỳ trường nào có thuộc tính auto_increment, chúng sẽ được điền tự động.

Mở client MySQL và thực hiện câu lệnh INSERT INTO sau để chèn một bản ghi mới vào bảng EMPLOYEE. Sử dụng truy vấn SELECT để kiểm tra xem bản ghi mới đã được thêm hay chưa.

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)

Insert with Node.js

Bây giờ, chúng ta phải chèn một bản ghi mới vào bảng MySQL một cách lập trình thông qua ứng dụng Node.js. Để chèn dữ liệu vào một bảng, trước tiên phải tải cơ sở dữ liệu. Lệnh SQL USE database thực hiện điều này trong terminal của MySQL client. Bạn có thể sử dụng một cơ sở dữ liệu bằng cách thêm tham số database vào phương thức createConnection().

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

Mã Node.js để chèn một bản ghi mới bao gồm các bước sau −

  • Bao gồm mô-đun mysql

  • Gọi hàm createConnection() để lấy đối tượng kết nối.

  • Sử dụng phương thức query() của đối tượng kết nối, và truyền chuỗi truy vấn INSERT INTO vào đó như là đối số đầu tiên.

Example

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();
});

Output

Connected!
New Record inserted successfully

Chạy truy vấn SELECT trong terminal MySQL client để kiểm tra xem một bản ghi mới đã được thêm vào hay chưa.

INSERT with prepared statement

MySQL hỗ trợ cú pháp câu lệnh đã chuẩn bị, trong đó dữ liệu biến được thêm động vào chuỗi truy vấn. Cú pháp cho câu truy vấn INSERT với câu lệnh đã chuẩn bị là −

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

Trong đoạn mã sau, dữ liệu cho một bản ghi mới được lưu trữ trong một mảng. Nó được sử dụng làm tham số cho phương thức con.query(). Các giá trị từ mảng thay thế cho các dấu ? trong truy vấn đã chuẩn bị.

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();
});

Khi chương trình trên được thực thi, một bản ghi mới với các giá trị như được chỉ định trong mảng dữ liệu sẽ được lưu trữ. Bạn có thể chèn nhiều bản ghi với một mảng hai chiều được sử dụng làm nguồn giá trị.

Example

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();
});

Kiểm tra dữ liệu trong bảng nhân viên bằng cách chạy truy vấn SELECT trong client dòng lệnh MySQL như sau:

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)