SQLite - 表達式

你好啊,未來的數據庫大師!今天,我們將進入SQLite表達式的迷人世界。作為你鄰居的親切計算機老師,我將指導你走過這段旅程,一步一步來。別擔心你對編程是新手——我們將從基礎開始,逐步提升。所以,拿起你喜歡的飲料,放鬆一下,讓我們一起踏上這次SQLite的冒險吧!

SQLite - Expressions

SQLite表達式是什麼?

在我們深入細節之前,讓我們了解一下SQLite中的表達式是什麼。將表達式視為數據庫查詢的積木。它們就像菜譜中的食材——你將它們以不同的方式組合,以創造出強大且有意的結果。

在SQLite中,表達式可以簡單到只有一個值,也可以複雜到多個操作的組合。它們用在SQL語句的各種部分,如SELECT、WHERE和ORDER BY子句。

現在,讓我們探索SQLite中的三種主要表達式類型:

  1. 布爾表達式
  2. 數值表達式
  3. 日期表達式

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