SQLite - SELECT 查詢
你好啊,未來的數據庫魔法師們!今天,我們將要深入 SQLite 的神奇世界,並探索強大的 SELECT 查詢。別擔心如果你之前從未寫過一行代碼——我會成為你這次冒險中的友好導遊。在本課結束時,你將能夠像專業人士一樣查詢數據庫!
理解基礎
在我們深入細節之前,讓我們先了解 SELECT 查詢是做什麼的。想像你有一個裝滿信息的寶藏箱(那就是你的數據庫),你想找到特定的物品。SELECT 查詢就像你的藏寶圖一樣——它幫助你找到並獲取你正在尋找的精確內容。
你的第一個 SELECT 查詢
讓我們從一個簡單的例子開始。假設我們有一個名為 students
的表,其中有 id
、name
和 age
的列。以下是如何從這個表中检索所有信息的做法:
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