SQLite - 運算子

Hello, 未來的數據庫魔法師們!今天,我們將進入 SQLite 運算子的神奇世界。作為你們鄰居的友好計算機老師,我在這裡指引你們這次旅程,即使你們之前從未編寫過一行代碼。所以,拿起你們的虛擬魔杖(鍵盤),讓我們施展一些 SQLite 的魔法吧!

SQLite - Operators

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