SQLite - SELECT 查詢

你好啊,未來的數據庫魔法師們!今天,我們將要深入 SQLite 的神奇世界,並探索強大的 SELECT 查詢。別擔心如果你之前從未寫過一行代碼——我會成為你這次冒險中的友好導遊。在本課結束時,你將能夠像專業人士一樣查詢數據庫!

SQLite - SELECT Query

理解基礎

在我們深入細節之前,讓我們先了解 SELECT 查詢是做什麼的。想像你有一個裝滿信息的寶藏箱(那就是你的數據庫),你想找到特定的物品。SELECT 查詢就像你的藏寶圖一樣——它幫助你找到並獲取你正在尋找的精確內容。

你的第一個 SELECT 查詢

讓我們從一個簡單的例子開始。假設我們有一個名為 students 的表,其中有 idnameage 的列。以下是如何從這個表中检索所有信息的做法:

SELECT * FROM students;

這個查詢告訴 SQLite:"嘿,給我 students 表中的所有 (*) 內容。"就像是說:"打開寶藏箱,給我看所有的寶貝!"

選擇特定的列

現在,如果我們只想看到我們學生的名字呢?我們可以更具體:

SELECT name FROM students;

這個查詢就像是在說:"我只想要看到寶藏箱中的名字標籤,請!"

使用 WHERE 添加條件

有時候,我們想要更加挑剔。讓我們說我們想要找到所有 18 歲的學生:

SELECT * FROM students WHERE age = 18;

這個查詢添加了一個條件。就像是告訴你的助手:"在寶藏箱中找到所有屬於 18 歲的人的物品。"

高級 SELECT 技巧

排序結果

想要以特定的順序查看你的結果?沒問題!讓我們從年輕到年長列出我們的學生:

SELECT * FROM students ORDER BY age ASC;

ASC 表示升序。如果你想要反轉順序,你會使用 DESC(降序)。

限制結果

有時候,我們只想看到幾個結果。也許我們對前五個年紀最大的學生感興趣:

SELECT * FROM students ORDER BY age DESC LIMIT 5;

這個查詢結合了排序和限制。就像是說:"給我看寶藏箱中最老的五個寶貝。"

設置輸出列寬度

當在終端或命令行界面中使用 SQLite 時,你可能會注意到有時候你的輸出看起來有點亂。別擔心!我們可以通過設置列寬度來整理它。

以下是如何操作的:

.width 10 20 5
SELECT id, name, age FROM students;

這將第一列的寬度設為 10 個字符,第二列為 20,第三列為 5。就像是組織你的寶藏箱,讓一切整齊有序!

模式信息

有時候,你可能會忘記你的寶藏箱(表)中有哪些寶貝(列)。SQLite 為此有一個方便的命令:

.schema students

這將顯示你的 students 表的結構,包括所有列及其類型。就像是擁有你的寶藏箱的地圖!

結合所有概念

讓我們將一些這些概念結合到一個更複雜的查詢中:

SELECT name, age
FROM students
WHERE age > 18
ORDER BY name ASC
LIMIT 10;

這個查詢說:"給我看年紀超過 18 歲的學生的名字和年齡,按名字字母順序排列,但只顯示前 10 個。"

常見的 SQLite SELECT 方法

以下是一個常見的 SQLite SELECT 方法的表格,供快速參考:

方法 描述 示例
SELECT 從一個或多個表中检索数据 SELECT * FROM table_name;
WHERE 根据条件过滤记录 SELECT * FROM table_name WHERE condition;
ORDER BY 对结果集进行排序 SELECT * FROM table_name ORDER BY column_name;
LIMIT 指定返回的最大行数 SELECT * FROM table_name LIMIT number;
DISTINCT 返回唯一的(不同的)值 SELECT DISTINCT column_name FROM table_name;
GROUP BY 将具有相同值的行分组 SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
HAVING 为分组指定搜索条件 SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value;
JOIN 从两个或多个表中组合行 SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;

記住,熟能生巧!不要害怕嘗試這些查詢。每次你運行一個查詢,你都在變得更好於導航你的數據寶藏箱。

在我多年的教學經驗中,我發現學習 SQLite 的最好方法是通過實踐。所以,這裡有一個小作業給你:創建一個關於你喜歡的書籍或電影的小數據庫,並嘗試寫一些查詢來找到有關它們的有趣信息。也許你會對你的發現感到驚奇!

祝查詢愉快,未來的數據探險者!記住,每個偉大的數據庫管理員都是从你现在的地方开始的。继續練習,保持好奇心,很快你將成為你數據領域的主人!

Credits: Image by storyset