Node.js - MySQL.Where

Xin chào các bạn học lập trình! Hôm nay, chúng ta sẽ cùng khám phá thế giới thú vị của Node.js và MySQL, tập trung vào câu lệnh mạnh mẽ 'WHERE'. Là người dạy khoa học máy tính gần gũi của bạn, tôi sẽ hướng dẫn bạn qua hành trình này, từng bước một. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ cơ bản và dần dần nâng cao. Vậy, hãy lấy饮料 yêu thích của bạn, ngồi舒适的, và cùng bắt đầu nhé!

Node.js - MySQL Where

Giới thiệu về câu lệnh WHERE

Trước khi chúng ta đi vào chi tiết, hãy hiểu rõ về câu lệnh WHERE. Hãy tưởng tượng bạn có một thư viện lớn với rất nhiều sách (dữ liệu của chúng ta), và bạn đang tìm kiếm một loại sách cụ thể (dữ liệu của chúng ta). Câu lệnh WHERE giống như thư thư viện cá nhân của bạn, giúp bạn tìm chính xác những gì bạn cần.

Trong MySQL, câu lệnh WHERE được sử dụng để lọc bản ghi và lấy chỉ những dữ liệu cần thiết từ bảng. Nó giống như nói với cơ sở dữ liệu của bạn, "Hey, tôi chỉ muốn thấy thông tin cụ thể này!"

Hãy bắt đầu với một ví dụ đơn giản:

const mysql = require('mysql');

// Tạo kết nối
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});

// Kết nối đến cơ sở dữ liệu
connection.connect((err) => {
  if (err) throw err;
  console.log('Đã kết nối đến cơ sở dữ liệu!');

  // Truy vấn SQL với câu lệnh WHERE
  const sql = "SELECT * FROM customers WHERE country='USA'";

  connection.query(sql, (err, result) => {
    if (err) throw err;
    console.log("Customers from USA:", result);
  });
});

Trong ví dụ này, chúng ta đang chọn tất cả các khách hàng từ USA. Câu lệnh WHERE country='USA' lọc kết quả của chúng ta để hiển thị chỉ các khách hàng Mỹ. Điều này giống như yêu cầu thư thư viện chỉ cho sách của các tác giả Mỹ.

Операторы logic

Bây giờ, hãy làm cho mọi thứ thú vị hơn bằng cách giới thiệu các операторы logic. Những điều này giống như các hướng dẫn đặc biệt bạn đưa ra cho bạn thư thư viện để tìm sách cụ thể hơn.

Оператор AND

Оператор AND cho phép chúng ta kết hợp nhiều điều kiện. Nó giống như nói, "Tôi muốn sách của các tác giả Mỹ VÀ được xuất bản sau năm 2000."

const sql = "SELECT * FROM customers WHERE country='USA' AND city='New York'";

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("Customers from USA and New York:", result);
});

Truy vấn này sẽ trả về các khách hàng từ Mỹ và cụ thể là từ New York City.

Оператор OR

Оператор OR cho chúng ta sự linh hoạt hơn. Nó giống như nói, "Tôi muốn sách của các tác giả Mỹ HOẶC được xuất bản sau năm 2000."

const sql = "SELECT * FROM products WHERE price < 20 OR category='Electronics'";

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("Affordable or Electronic products:", result);
});

Truy vấn này lấy các sản phẩm hoặc rẻ (dưới $20) hoặc thuộc danh mục Điện tử.

Оператор NOT

Оператор NOT được sử dụng để loại trừ. Nó giống như nói, "Tôi muốn tất cả các sách Ngoại trừ những cuốn của một tác giả cụ thể."

const sql = "SELECT * FROM employees WHERE NOT department='HR'";

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("Employees not in HR:", result);
});

Truy vấn này lấy tất cả các nhân viên không thuộc phòng nhân sự.

Оператор BETWEEN

Оператор BETWEEN非常适合 cho các truy vấn trong khoảng. Hãy tưởng tượng bạn yêu cầu sách được xuất bản giữa năm 1990 và 2000.

const sql = "SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31'";

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("Orders from 2023:", result);
});

Truy vấn này lấy tất cả các đơn hàng được đặt trong năm 2023.

Оператор LIKE

Оператор LIKE là siêu anh hùng của việc khớp mẫu. Nó非常适合 khi bạn không chắc chắn về giá trị chính xác nhưng biết một phần của nó. Nó giống như yêu cầu sách có tiêu đề chứa từ cụ thể.

const sql = "SELECT * FROM products WHERE product_name LIKE '%phone%'";

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("Products related to phones:", result);
});

Truy vấn này tìm tất cả các sản phẩm có chữ 'phone' trong tên. Dấu '%' là một ký tự đại diện đại diện cho bất kỳ số lượng ký tự nào.

Оператор IN

Оператор IN rất hữu ích khi bạn có một danh sách các giá trị để kiểm tra. Nó giống như yêu cầu sách của một danh sách cụ thể các tác giả.

const sql = "SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'Mexico')";

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("North American customers:", result);
});

Truy vấn này lấy các khách hàng từ Mỹ, Canada hoặc Mexico.

Kết hợp nhiều операторы

Bây giờ, hãy kết hợp tất cả lại! Chúng ta có thể kết hợp các операторы này để tạo ra các truy vấn phức tạp. Nó giống như đưa ra một hướng dẫn rất cụ thể cho bạn thư thư viện.

const sql = `
  SELECT * FROM products 
  WHERE (category = 'Electronics' OR category = 'Computers')
  AND price BETWEEN 100 AND 1000
  AND product_name LIKE '%Pro%'
  AND brand IN ('Apple', 'Samsung', 'Dell')
`;

connection.query(sql, (err, result) => {
  if (err) throw err;
  console.log("Specific high-end products:", result);
});

Truy vấn phức tạp này tìm các sản phẩm:

  1. Thuộc danh mục Điện tử hoặc Máy tính
  2. Được bán với giá từ $100 đến $1000
  3. Có chữ 'Pro' trong tên
  4. Được sản xuất bởi Apple, Samsung hoặc Dell

Tóm tắt các phương pháp WHERE

Dưới đây là bảng tóm tắt các phương pháp chúng ta đã học:

Phương pháp Mô tả Ví dụ
WHERE cơ bản Điều kiện đơn giản WHERE country='USA'
AND Kết hợp điều kiện WHERE country='USA' AND city='New York'
OR Hoặc điều kiện WHERE price < 20 OR category='Electronics'
NOT Loại trừ điều kiện WHERE NOT department='HR'
BETWEEN Khoảng giá trị WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31'
LIKE Khớp mẫu WHERE product_name LIKE '%phone%'
IN Danh sách giá trị WHERE country IN ('USA', 'Canada', 'Mexico')

Nhớ rằng, thực hành là cách tốt nhất để thành thạo! Hãy thử kết hợp các phương pháp này theo nhiều cách khác nhau để tạo ra các truy vấn phức tạp của riêng bạn. Nó giống như trở thành một thư thư viện master có thể tìm bất kỳ sách nào trong thư viện dữ liệu khổng lồ!

Tôi hy vọng hướng dẫn này đã giúp ích và thú vị. Hãy tiếp tục lập trình, tiếp tục học tập, và đừng quên tận hưởng quá trình. Trước khi bạn biết, bạn sẽ trở thành một chuyên gia trong việc truy vấn cơ sở dữ liệu!

Credits: Image by storyset