SQL - 表達式

您好,未來的 SQL 巔峰大師!今天,我們將踏上一段令人興奮的旅程,探索 SQL 表達式的世界。別擔心如果你是編程新手 - 我將成為你的友好導遊,我們會一步步來。到了這個教學的結尾,你將能夠像專業人士一樣編寫 SQL 表達式!

SQL - Expressions

什麼是 SQL 表達式?

我們從基礎開始。SQL 表達式就像是一個公式或計算,你可以將其應用在你的 SQL 查詢中。它是壹個或多個值、運算符和 SQL 函數的組合,計算出壹個結果。把它當作是為你的數據庫查詢添加風味的秘密醬汁!

例如,假設你有一個產品表,你想將所有價格打 9 折。你可以使用如下表達式:

SELECT product_name, price, price * 0.9 AS discounted_price
FROM products;

在這個查詢中,price * 0.9 是我們的 SQL 表達式。它將價格乘以 0.9(這與減去 10% 相同)。

SQL 布爾表達式

現在,讓我們深入探討布爾表達式。這些就像是 SQL 世界中的是非問題。它們總是結果為 TRUE、FALSE 或 NULL(意味著“未知”)。

布爾表達式在過濾數據或在查詢中做決策時非常有用。以下是一些常見的布爾表達式運算符:

運算符 描述
= 等於
<> 不等於
> 大於
< 小於
>= 大於或等於
<= 小於或等於
AND 邏輯與
OR 邏輯或
NOT 邏輯非

讓我們透過一些例子來看看這些運算符的應用:

-- 找出所有價格超過 $100 的產品
SELECT * FROM products WHERE price > 100;

-- 找出過去 30 天內的所有訂單
SELECT * FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '30 days';

-- 找出在紐約或加州的所有活躍客戶
SELECT * FROM customers
WHERE (state = 'NY' OR state = 'CA') AND is_active = TRUE;

在這些例子中,WHERE 子句之後的部分都是布爾表達式。這就像對數據庫的每行數據提問壹個是非問題。

SQL 數值表達式

接下來,我們有數值表達式。這些就像是 SQL 的數學問題 - 它們包含數字和算術運算。

以下是你可以使用的基礎算術運算符:

運算符 描述
+ 加法
- 減法
* 乘法
/ 除法
% 取模(餘數)

讓我們看壹些例子:

-- 計算庫存的總價值
SELECT product_name, quantity, price, quantity * price AS total_value
FROM inventory;

-- 計算員工的年齡
SELECT first_name, last_name, EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM birth_date) AS age
FROM employees;

-- 計算已經花費的預算百分比
SELECT project_name, budget, spent, (spent / budget) * 100 AS percent_spent
FROM projects;

在這些例子中,我們使用數值表達式對數據進行計算。這對於從現有數據中提取新的見解非常有用。

SQL 日期表達式

最後但同樣重要的是,讓我們來討論日期表達式。在 SQL 中處理日期可能會有些棘手,但這也非常強大。日期表達式允許你在查詢中操作和比較日期。

以下是一些常見的日期函數:

函數 描述
CURRENT_DATE 返回當前日期
CURRENT_TIMESTAMP 返回當前日期和時間
DATE_ADD 將指定時間間隔添加到日期
DATE_SUB 從日期中減去指定時間間隔
DATEDIFF 計算兩個日期之間的差異

讓我們看看這些函數的應用:

-- 找出今天下的訂單
SELECT * FROM orders WHERE order_date = CURRENT_DATE;

-- 找出最近 90 天沒有下訂單的客戶
SELECT * FROM customers
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '90 days'
);

-- 計算每個訂單是多久以前下的
SELECT order_id, order_date,
DATEDIFF(CURRENT_DATE, order_date) AS days_ago
FROM orders;

這些日期表達式讓你能夠對日期進行複雜的操作,這對於分析基於時間的數據至關重要。

好了,各位!我們已經穿越了 SQL 表達式的領地,從布爾邏輯到數字計算再到時間旅行(好吧,算是類似)。記住,熟能生巧,所以不要害怕在自建的查詢中嘗試這些表達式。

在我們結束之前,這裡有壹個 SQL 玩笑給你:為什麼數據庫管理員離開了他的妻子?她有壹對多關係!(Ba dum tss!)

快樂查詢,願你的連接總是迅速,查詢永不超時!

Credits: Image by storyset