SQLite - 表達式
你好啊,未來的數據庫大師!今天,我們將進入SQLite表達式的迷人世界。作為你鄰居的親切計算機老師,我將指導你走過這段旅程,一步一步來。別擔心你對編程是新手——我們將從基礎開始,逐步提升。所以,拿起你喜歡的飲料,放鬆一下,讓我們一起踏上這次SQLite的冒險吧!
SQLite表達式是什麼?
在我們深入細節之前,讓我們了解一下SQLite中的表達式是什麼。將表達式視為數據庫查詢的積木。它們就像菜譜中的食材——你將它們以不同的方式組合,以創造出強大且有意的結果。
在SQLite中,表達式可以簡單到只有一個值,也可以複雜到多個操作的組合。它們用在SQL語句的各種部分,如SELECT、WHERE和ORDER BY子句。
現在,讓我們探索SQLite中的三種主要表達式類型:
- 布爾表達式
- 數值表達式
- 日期表達式
SQLite - 布爾表達式
布爾表達式就像問卷中的是非題。它們評估為TRUE或FALSE。當你想要過濾數據或在你的查詢中做出決策時,這些表達式非常有用。
基本比較運算符
讓我們從一些基本的比較運算符開始:
運算符 | 描述 |
---|---|
= | 等於 |
<> | 不等於 |
< | 小於 |
> | 大於 |
<= | 小於或等於 |
>= | 大於或等於 |
以下是一個簡單的例子:
SELECT name, age
FROM students
WHERE age > 18;
在這個查詢中,age > 18
是我們的布爾表達式。它檢查年齡是否大於18,並為所有年齡超過18的學生返回TRUE。
邏輯運算符
現在,讓我們加入邏輯運算符來增加趣味:
運算符 | 描述 |
---|---|
AND | 逻辑AND |
OR | 逻辑OR |
NOT | 逻辑NOT |
以下是一個結合多個條件的例子:
SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';
這個查詢找到所有年齡超過18並且成績為'A'的學生。這就像說,“顯示所有成年優秀學生!”
BETWEEN運算符
BETWEEN運算符是檢查值是否在某個範圍內的簡寫:
SELECT name, score
FROM exam_results
WHERE score BETWEEN 80 AND 90;
這個查詢找到所有考試分數在80到90之間的學生。這等價於寫score >= 80 AND score <= 90
。
SQLite - 數值表達式
SQLite中的數值表達式允許你在查詢中進行數學運算。這就像在你的數據庫中內置了一個計算器!
算術運算符
以下是一些基本的算術運算符:
運算符 | 描述 |
---|---|
+ | 加法 |
- | 減法 |
* | 乘法 |
/ | 除法 |
% | 取模 |
讓我們看看它們是如何工作的:
SELECT name,
price,
quantity,
price * quantity AS total_cost
FROM orders;
在這個查詢中,我們通過乘以價格和數量來計算總成本。AS
關鍵字允許我們給計算列命名。
聚合函數
SQLite還提供了對一組值進行操作的聚合函數:
函數 | 描述 |
---|---|
AVG() | 計算平均值 |
SUM() | 計算總和 |
COUNT() | 計算行數 |
MAX() | 找到最大值 |
MIN() | 找到最小值 |
以下是一個使用聚合函數的例子:
SELECT
AVG(price) AS average_price,
SUM(quantity) AS total_items,
COUNT(*) AS order_count,
MAX(price) AS highest_price,
MIN(price) AS lowest_price
FROM orders;
這個查詢給我們提供了訂單表的摘要,包括平均價格、總銷售項目、訂單數以及最高和最低價格。
SQLite - 日期表達式
在數據庫中處理日期可能會很麻煩,但SQLite提供了一些方便的函數來讓我們的生活更輕鬆。
日期和時間函數
以下是一些常見的日期和時間函數:
函數 | 描述 |
---|---|
date() | 返回當前日期 |
time() | 返回當前時間 |
datetime() | 返回當前日期和時間 |
julianday() | 返回日期的儒略日 |
strftime() | 根據格式字符串格式化日期 |
讓我們看看如何使用這些函數:
SELECT
date('now') AS current_date,
time('now') AS current_time,
datetime('now') AS current_datetime,
julianday('now') AS julian_day,
strftime('%Y-%m-%d %H:%M', 'now') AS formatted_datetime;
這個查詢向我們展示了以各種方式處理當前日期和時間的方法。
日期計算
我們還可以對日期進行計算:
SELECT
name,
hire_date,
date(hire_date, '+1 year') AS first_anniversary,
julianday('now') - julianday(hire_date) AS days_employed
FROM employees;
在這個查詢中,我們計算了每個員工的工作第一個周年日以及他們已經工作的天數。
至此,各位!我們已經穿越了SQLite表達式的領地,從布爾邏輯到數字計算再到時間旅行(嗯,有點像)。記住,熟練來自練習,所以不要害怕在您自己的查詢中嘗試這些表達式。
在我結束之前,這裡有一個來自我教學經驗的小故事:我曾經有一個學生在布爾表達式上遇到困難。他總是將AND和OR搞混。所以,我告訴他將AND想像成嚴格的家長(兩個條件都必须為真)而將OR想像成寬容的家長(任何一個條件為真都可以)。從那以後,他就再也沒有忘記過!
我希望這個教程對您有幫助,甚至有點趣味。繼續探索,繼續查詢,最重要的是,繼續學習。下次見,開心編程!
Credits: Image by storyset