SQLite - 運算子
Hello, 未來的數據庫魔法師們!今天,我們將進入 SQLite 運算子的神奇世界。作為你們鄰居的友好計算機老師,我在這裡指引你們這次旅程,即使你們之前從未編寫過一行代碼。所以,拿起你們的虛擬魔杖(鍵盤),讓我們施展一些 SQLite 的魔法吧!
SQLite 中的運算子是什麼?
在我們跳進深水區之前,讓我們先從基礎開始。在 SQLite(以及一般的編程中),運算子就像是一個特殊的符號或關鍵字,告訴計算機執行特定的操作或比較。可以把運算子看作是數據庫語言中的動詞——它們讓事情發生!
例如,當你在 SQLite 見到 "+" 符號時,它不僅是一個可愛的小十字。它告訴數據庫:"嘿,把這些東西加起來!" 同樣地,當你看到 "=" 時,它不僅是兩條線在那裡閒逛——它在詢問:"這兩個東西相等嗎?"
現在我們已經搞清楚了這一點,讓我們來探索 SQLite 中不同的運算子類型。相信我,這比聽起來有趣多了!
SQLite 的算術運算子
SQLite 的算術運算子就像你在學校學到的基本數學運算,但它們現在在你數據上施展魔法。讓我們看看它們是如何操作的:
運算子 | 描述 | 範例 |
---|---|---|
+ | 加法 | SELECT 5 + 3; -- 返回 8 |
- | 減法 | SELECT 10 - 4; -- 返回 6 |
* | 乘法 | SELECT 6 * 2; -- 返回 12 |
/ | 除法 | SELECT 15 / 3; -- 返回 5 |
% | 餘數(模) | SELECT 17 % 5; -- 返回 2 |
讓我們用一些真實世界的例子來分解這些:
-- 假設我們有一個名為 'products' 的表,其中有 'price' 和 'quantity' 列
SELECT name, price * quantity AS total_value
FROM products;
在這個例子中,我們使用乘法運算子 (*) 計算每個產品的總價值。SQLite 將為每行的價格乘以數量,給我們總價值。
-- 計算平均價格
SELECT AVG(price) AS average_price
FROM products;
-- 現在我們將其四捨五入到小數點後兩位
SELECT ROUND(AVG(price), 2) AS rounded_average_price
FROM products;
在這裡,我們在背後使用除法運算子(AVG 函數將總和除以計數),然後我們將結果四捨五入。就像讓 SQLite 帮你做數學作業!
SQLite 的比較運算子
比較運算子就像 SQLite 世界中的評判性朋友——它們總是在比較事物。這裡是這些挑剔運算子的表格:
運算子 | 描述 | 範例 |
---|---|---|
= | 等於 | SELECT * FROM products WHERE price = 10; |
!= 或 <> | 不等於 | SELECT * FROM products WHERE category != 'Electronics'; |
< | 小於 | SELECT * FROM products WHERE price < 50; |
> | 大於 | SELECT * FROM employees WHERE salary > 50000; |
<= | 小於或等於 | SELECT * FROM inventory WHERE quantity <= 5; |
>= | 大於或等於 | SELECT * FROM orders WHERE order_date >= '2023-01-01'; |
讓我們看看這些是如何操作的:
-- 找出所有庫存為零的產品
SELECT name, quantity
FROM products
WHERE quantity = 0;
-- 找出所有不在 IT 部門的員工
SELECT name, department
FROM employees
WHERE department <> 'IT';
-- 找出所有在過去一周內下的訂單
SELECT order_id, order_date
FROM orders
WHERE order_date >= DATE('now', '-7 days');
在這些例子中,我們使用比較運算子過濾我們的數據。這就像告訴 SQLite:"我只想看到這些特定的東西,非常感謝!"
SQLite 的邏輯運算子
邏輯運算子是 SQLite 的決策者。它們幫助我們組合條件並進行更複雜的查詢。這是我們的邏輯朋友:
運算子 | 描述 | 範例 |
---|---|---|
AND | 如果所有條件為真則為真 | SELECT * FROM products WHERE price > 100 AND category = 'Electronics'; |
OR | 如果任何條件為真則為真 | SELECT * FROM customers WHERE country = 'USA' OR country = 'Canada'; |
NOT | 否定一個條件 | SELECT * FROM employees WHERE NOT department = 'Sales'; |
讓我們來使用這些:
-- 找出所有昂貴的電子產品
SELECT name, price, category
FROM products
WHERE price > 500 AND category = 'Electronics';
-- 找出所有來自北美的客戶
SELECT name, country
FROM customers
WHERE country = 'USA' OR country = 'Canada' OR country = 'Mexico';
-- 找出所有不在銷售或市場部門的員工
SELECT name, department
FROM employees
WHERE NOT (department = 'Sales' OR department = 'Marketing');
在這些例子中,我們組合條件以獲得我們想要的确切數據。這就像成為一名偵探,將線索拼湊起來解決一個謎題!
SQLite 的位運算子
現在,我們進入了二進制魔法的領域,這裡是位運算子。這些運算子在數字的二進制表示上工作。它們在日常的 SQLite 查詢中不常使用,但它們是某些操作的強大工具。
運算子 | 描述 | 範例 |
---|---|---|
& | 位運算 AND | SELECT 5 & 3; -- 返回 1 |
| | 位運算 OR | SELECT 5 | 3; -- 返回 7 |
~ | 位運算 NOT | SELECT ~5; -- 返回 -6 |
<< | 左移 | SELECT 5 << 1; -- 返回 10 |
>> | 右移 | SELECT 5 >> 1; -- 返回 2 |
讓我們分解一個位運算:
-- 使用位運算 AND 檢查數字是奇數還是偶數
SELECT
number,
CASE
WHEN number & 1 = 1 THEN 'Odd'
ELSE 'Even'
END AS parity
FROM (
SELECT 1 AS number
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
);
在這個例子中,我們使用位運算 AND 運算子來檢查一個數字是奇數還是偶數。如果一個數字 AND 1 等於 1,那麼它是奇數;否則,它是偶數。這就像教 SQLite 用手指計數!
至此,我們已經穿越了 SQLite 運算子的土地,從熟悉的算術領域到神秘的位運算領域。記住,熟能生巧,所以不要害怕在你自己的查詢中嘗試這些運算子。在你還沒有意識到之前,你將會像真正的數據庫術士一樣施展這些 SQLite 的力量!
Credits: Image by storyset