Node.js - MySQL Where

Trong MySQL, câu lệnh WHERE có thể được sử dụng trong các truy vấn SELECT, DELETE và UPDATE. Câu lệnh WHERE cho phép bạn chỉ định một điều kiện tìm kiếm cho các hàng được trả về bởi một truy vấn. Khi sử dụng mô-đun mysql với ứng dụng Node.js, phương thức query() của đối tượng kết nối thực thi một chuỗi truy vấn. Để áp dụng bộ lọc trên các truy vấn SELECT, UPDATE hoặc DELETE, câu lệnh WHERE được sử dụng. Trong chương này, nhiều ví dụ về việc sử dụng câu lệnh WHERE trong một ứng dụng Node.js sẽ được giải thích.

Dưới đây là cú pháp của mệnh đề WHERE trong câu lệnh SELECT −

SELECT 
   select_list
FROM
   table_name
WHERE
   search_condition;

search_condition là sự kết hợp của một hoặc nhiều biểu thức sử dụng các toán tử logic AND, OR và NOT.

Các toán tử khác nhau được sử dụng trong mệnh đề WHERE bao gồm −

Sr.No Operator & Description
1 = Equal
2 > Greater than
3 < Less than
4 >= Greater than or equal
5 <= Less than or equal
6 != Not equal
7 BETWEEN Between a certain range
8 LIKE Search for a pattern
9 IN To specify multiple possible values for a column

Trong MySQL, một predicate là một biểu thức Boolean mà đánh giá thành TRUE, FALSE hoặc UNKNOWN. Câu lệnh SELECT sẽ bao gồm bất kỳ hàng nào thỏa mãn search_condition trong tập kết quả.

Logical operators

Trong đoạn mã ứng dụng Node.js sau, chuỗi truy vấn SELECT được truyền vào phương thức query() sử dụng mệnh đề WHERE để lấy các bản ghi nhân viên có mức lương vượt quá 25000 Rs.

Example

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

   database: "mydb"
});

var qry =`SELECT name,salary FROM employee WHERE salary>25000;`;
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();
});

Output

[
  RowDataPacket { name: 'Anil', salary: 30000 },
  RowDataPacket { name: 'Meena', salary: 27000 }
]

Điều kiện lọc trong câu lệnh WHERE có thể là một biểu thức logic phức hợp, trong đó các biểu thức logic riêng lẻ sử dụng các toán tử so sánh (>, <, >=, <=, ==, =) được kết hợp với các toán tử AND, OR hoặc NOT.

Hãy thay đổi truy vấn SELECT trong phương thức query() để áp dụng điều kiện trên trường lương sao cho nó lớn hơn 25000 và nhỏ hơn 30000.

Example

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

var qry =`SELECT name,salary FROM employee WHERE salary>25000 and salary>30000;`;
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();
});

Output

[ RowDataPacket { name: 'Meena', salary: 27000 } ]

BETWEEN

TO BETWEEN kiểm tra xem giá trị của một trường nhất định có nằm trong khoảng đã cho hay không. Chuỗi truy vấn sau đã lấy ra những nhân viên có mức lương nằm giữa 27000 và 30000. Trong đoạn mã trên, hãy thay đổi biến qry thành biểu thức sau, giữ nguyên phần còn lại của mã.

Example

var qry =`SELECT name,salary FROM employee WHERE salary BETWEEN 27000 and 30000;`;

Output

[
  RowDataPacket { name: 'Anil', salary: 30000 },
  RowDataPacket { name: 'Meena', salary: 27000 }
]

LIKE

Toán tử LIKE đánh giá là TRUE nếu một giá trị khớp với một mẫu đã chỉ định. Để tạo thành một mẫu, bạn sử dụng các ký tự đại diện % và _. Ký tự đại diện % khớp với bất kỳ chuỗi nào có không hoặc nhiều ký tự, trong khi ký tự đại diện _ khớp với bất kỳ ký tự đơn lẻ nào.

Thay đổi biến chuỗi truy vấn thành cái sau.

var qry =`SELECT name,salary FROM employee WHERE name LIKE '%n%';`;

Kết quả sẽ bao gồm các tên có chứa chữ cái 'n' ở bất kỳ đâu trong tên.

[
  RowDataPacket { name: 'Anil', salary: 30000 },
  RowDataPacket { name: 'Meena', salary: 27000 }
]

IN

MySQL cũng hỗ trợ toán tử IN cùng với câu lệnh WHERE. Toán tử IN trả về TRUE nếu một giá trị khớp với bất kỳ giá trị nào trong danh sách.

value IN (value1, value2,...)

Thay đổi chuỗi truy vấn trong mã thành sau đây.

var qry =`SELECT name,salary FROM employee WHERE name IN ('Anil', 'Tina', 'Ravi');`;

Điều này sẽ trả về tập kết quả trong đó các hàng có tên nằm trong danh sách đã cho.

[
  RowDataPacket { name: 'Ravi', salary: 25000 },
  RowDataPacket { name: 'Anil', salary: 30000 }
]