Node.js - MySQL 的 WHERE 子句

Hello, 有志的程序员們!今天,我們將深入Node.js和MySQL的精彩世界,專注於強大的'WHERE'子句。作為你們友好的鄰居計算機科學老師,我在這裡指引你們這次旅程,一步一步來。如果你是編程新手,別擔心——我們會從基礎開始,然後逐步進階。所以,拿起你喜歡的飲料,放鬆一下,我們開始吧!

Node.js - MySQL Where

WHERE 子句的介紹

在我們進入細節之前,讓我們了解一下WHERE子句是什麼。想像你有一個巨大的書庫(我們的數據庫),你正在尋找一種特定的書(我們的數據)。WHERE子句就像你的個人圖書管理員,幫助你找到你需要的東西。

在MySQL中,WHERE子句用於過濾記錄並從表中提取必要數據。這就像告訴你的數據庫,“嘿,我只想要看到這些特定信息!”

讓我們從一個簡單的例子開始:

const mysql = require('mysql');

// 創建連接
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});

// 連接到數據庫
connection.connect((err) => {
if (err) throw err;
console.log('已連接到數據庫!');

// 帶有WHERE子句的SQL查詢
const sql = "SELECT * FROM customers WHERE country='USA'";

connection.query(sql, (err, result) => {
if (err) throw err;
console.log("美國客戶:", result);
});
});

在這個例子中,我們正在選擇所有美國客戶。WHERE子句 country='USA' 過濾我們的結果,只顯示美國客戶。這就像請求我們的圖書管理員只提供美國作者的書。

邏輯運算符

現在,讓我們通過引入邏輯運算符來使事情更有趣。這些就像我們給我們的圖書管理員朋友的特殊指示,以找到更特定的書籍。

AND 運算符

AND運算符允許我們組合多個條件。這就像說,“我想要美國作者的作品並且在2000年後出版的書。”

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

connection.query(sql, (err, result) => {
if (err) throw err;
console.log("美國紐約客戶:", result);
});

這個查詢將返回既在美國又在紐約市的客戶。

OR 運算符

OR運算符給我們更多的靈活性。這就像說,“我想要美國作者的書或者2000年後出版的書。”

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

connection.query(sql, (err, result) => {
if (err) throw err;
console.log("價格低廉或電子類產品:", result);
});

這個查詢提取價格低於$20或在電子類別中的產品。

NOT 運算符

NOT運算符用於排除。這就像說,“我想要所有的書,除了特定作者的書。”

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

connection.query(sql, (err, result) => {
if (err) throw err;
console.log("非HR部門的員工:", result);
});

這個查詢检索所有非HR部门的员工。

BETWEEN 運算符

BETWEEN運算符非常適合範圍查詢。想像要求1990年至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("2023年的訂單:", result);
});

這個查詢提取2023年下的所有訂單。

LIKE 運算符

LIKE運算符是我們的模式匹配超級英雄。當你不確定確切值但知道部分值時,這非常適合。這就像要求標題中包含特定單詞的書。

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

connection.query(sql, (err, result) => {
if (err) throw err;
console.log("與手機相關的產品:", result);
});

這個查詢找到所有名稱中包含'phone'的產品。'%'是一個萬用字符,代表任意數量的字符。

IN 運算符

IN運算符在對列表值進行檢查時非常方便。這就像要求特定列表作者的書。

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

connection.query(sql, (err, result) => {
if (err) throw err;
console.log("北美客戶:", result);
});

這個查詢检索来自美国、加拿大或墨西哥的客户。

組合多個運算符

現在,讓我們把所有東西放在一起!我們可以組合這些運算符來創建複雜的查詢。這就像給我們的圖書管理員一組非常特定的指示。

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("特定的高端產品:", result);
});

這個複雜的查詢找到以下產品:

  1. 在電子或計算機類別中
  2. 價格在$100到$1000之間
  3. 名稱中包含'Pro'
  4. 品牌為Apple、Samsung或Dell

WHERE 子句方法總結

這裡有一個方便的表格,總結了我們學到的方

Credits: Image by storyset