PostgreSQL - SELECT 查詢:初學者指南

你好啊,有志於數據庫的熱心者!今天,我們將踏上一段令人興奮的旅程,進入 PostgreSQL 的世界,並學習數據庫中最基本的操作之一:SELECT 查詢。別擔心如果你是新手;我將成為你的友好導遊,運用我多年的教學經驗,讓這個過程盡可能清晰和有趣。

PostgreSQL - Select Query

SELECT 查詢是什麼?

在我們深入語法和範例之前,讓我們先了解 SELECT 查詢是什麼。想像你有一個巨大的圖書館(這是我們的數據庫),你想找到特定的書籍(這是我們的數據)。SELECT 查詢就像你的神奇助手,在這個浩瀚的圖書館中幫助你找到你正好需要的东西。

SELECT 查詢的語法

現在,讓我們來看看 SELECT 查詢的基本語法:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

讓我們分解一下:

  1. SELECT:這裡是你指定要检索哪些列。
  2. FROM:這裡是你指定從哪個表中獲取數據。
  3. WHERE:這是可選的,但它允許你基於某些條件過濾結果。

這就像說,“嘿 PostgreSQL,你可以請從科幻書架為我選擇這些書,其中作者 是 Isaac Asimov 嗎?”

SELECT 查詢的範例

範例 1:選擇所有列

讓我們從最簡單的查詢開始。假設我們有一個名為 books 的表:

SELECT * FROM books;

這個查詢說,“從 books 表中給我所有的列。”星號 (*) 是一個萬用字符,意味著“全部”。

範例 2:選擇特定的列

現在,讓我們更具體一點:

SELECT title, author FROM books;

這個查詢只從 'books' 表中检索 'title' 和 'author' 列。這就像要求每本書的標題和作者,而忽略其他細節,如出版日期或 ISBN。

範例 3:使用 WHERE 子句

讓我們在查詢中加入一個條件:

SELECT title, author FROM books WHERE year_published > 2000;

這個查詢获取在 2000 年之後出版的書的標題和作者。這就像問,“在我們的收藏中,哪些書是在這個千年之後出版的?”

範例 4:使用 ORDER BY

我們也可以對結果進行排序:

SELECT title, year_published FROM books ORDER BY year_published DESC;

這個查詢检索所有書的標題和出版年份,並按照出版年份從最新到最老排序。這就像把我們的書從最新到最老排列在書架上。

範例 5:使用 LIMIT

有時,我們只想看到幾個結果:

SELECT title FROM books LIMIT 5;

這個查詢只返回前 5 本書的標題。這就像說,“只顯示你找到的前 5 本書。”

高級 SELECT 查詢功能

現在我們已經介紹了基本知識,讓我們來看看一些更高级的功能。

使用 DISTINCT

DISTINCT 關鍵字幫助我們移除重複的值:

SELECT DISTINCT author FROM books;

這個查詢給我們提供了一個我們 books 表中獨特作者的列表,沒有重複。

使用聚合函數

PostgreSQL 提供了多種聚合函數,對一組行進行計算。以下是一些常見的:

函數 描述
COUNT() 計算行數
SUM() 計算一組值的總和
AVG() 計算一組值的平均值
MAX() 查找最大值
MIN() 查找最小值

讓我們看一個範例:

SELECT COUNT(*) AS total_books, AVG(price) AS average_price FROM books;

這個查詢計算總書數和平均價格。

使用 GROUP BY

GROUP BY 讓我們能夠將具有相同值的行分組:

SELECT author, COUNT(*) AS books_written
FROM books
GROUP BY author;

這個查詢按照作者將書分組,並計算每個作者寫了多少書。

使用 HAVING

HAVING 與 WHERE 相似,但它針對的是分組數據:

SELECT author, COUNT(*) AS books_written
FROM books
GROUP BY author
HAVING COUNT(*) > 5;

這個查詢顯示那些寫了超過 5 本書的作者。

結論

恭喜你!你已經邁出了進入 PostgreSQL SELECT 查詢世界的第一步。記住,就像學習任何新的語言一樣,熟能生巧。嘗試寫你自己的查詢,嘗試不同的子句,很快你就能像專業人士一樣查詢數據庫!

當我們結束時,我想到一位學生曾經說過,學習 SELECT 查詢感覺就像獲得了超能力——突然之間,大量的數據都在她的指尖。我希望你在繼續你的數據庫管理旅程時也能感受到同樣的興奮。

持續查詢,持續學習,最重要的是,樂於探索數據!

Credits: Image by storyset