Node.js - MySQL 的 WHERE 子句
Hello, 有志的程序员們!今天,我們將深入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);
});
這個複雜的查詢找到以下產品:
- 在電子或計算機類別中
- 價格在$100到$1000之間
- 名稱中包含'Pro'
- 品牌為Apple、Samsung或Dell
WHERE 子句方法總結
這裡有一個方便的表格,總結了我們學到的方
Credits: Image by storyset