1. SQL 基礎介紹
什麼是 SQL?
SQL 是 “Structured Query Language” 的縮寫,是一種專門用來與關聯式資料庫互動的語言。它用於查詢、更新、插入、刪除資料,並且能夠管理和操控資料庫的結構。
- 關聯式資料庫:是一種基於表格的數據存儲形式,數據被儲存在行與列中。
- 常見的資料庫管理系統:像 MySQL、PostgreSQL、SQL Server 和 Oracle 都支援 SQL。
SQL 能做什麼?
- 查詢數據:可以檢索儲存在資料庫中的數據。
- 修改數據:可以插入新數據、更新現有數據或刪除數據。
- 管理數據庫:可以創建或修改表、索引和其他數據結構。
2. SQL 的基礎語法
基本 SQL 語法結構
SQL 是以聲明的形式來告訴資料庫應該做什麼,語法相對簡單直觀。這裡是最常用的 SQL 語句。
SELECT 語句 - 用來查詢數據:
SELECT column_name1, column_name2 FROM table_name;INSERT 語句 - 插入新數據:
INSERT INTO table_name (column_name1, column_name2) VALUES (value1, value2);UPDATE 語句 - 更新現有數據:
UPDATE table_name SET column_name1 = value1 WHERE condition;DELETE 語句 - 刪除數據:
DELETE FROM table_name WHERE condition;CREATE TABLE 語句 - 創建新表:
CREATE TABLE table_name ( column_name1 datatype, column_name2 datatype );
3. 介紹常見的 SQL 查詢
選擇特定欄位:
SELECT name, age FROM employees;解釋:這個查詢會從
employees表中選擇name和age這兩個欄位。條件過濾:
SELECT * FROM employees WHERE age > 30;解釋:這個查詢會選擇所有年齡大於 30 的員工。
排序數據:
SELECT name, age FROM employees ORDER BY age DESC;解釋:這個查詢會根據年齡由大到小排序。
聚合函數(COUNT, SUM, AVG, MAX, MIN):
SELECT COUNT(*) FROM employees WHERE age > 30;解釋:這個查詢會計算年齡大於 30 的員工數量。
4. SQL 在專案管理中的應用
專案經理不一定需要像工程師那樣深入操作 SQL,但了解 SQL 的基本操作能夠幫助他們在專案中更好地進行數據驅動的決策,尤其是在以下情境中:
- 數據分析:快速查詢報告,了解專案進度或績效。
- 追蹤和監控:透過 SQL 查詢數據庫日誌或狀態,監控系統狀態。
- 溝通協調:與技術團隊合作,透過 SQL 查詢來了解系統和應用的數據情況。
5. 練習
練習資料
我們將使用一個名為 world 的示範資料庫,其中包含了城市、國家和語言等表格。你可以使用 Docker Postgres World DB 來快速啟動一個 PostgreSQL 資料庫,並使用 pgAdmin 來管理資料庫。
world 資料庫已經事先建立好,你可以直接使用以下連接資訊:
PgAdmin 是一個用於管理 PostgreSQL 資料庫的開源工具,它提供了一個用戶友好的界面,可以幫助你查看資料庫結構、執行 SQL 查詢和管理數據。簡單來說,它是一個 PostgreSQL 的 GUI (圖形用戶界面) 工具。
其他資料庫管理工具還有 MySQL 的 Workbench 和 SQL Server 的 Management Studio 等。
資料庫結構
Schema
- public
Schemas 是 PostgreSQL 中用來組織和管理表格的容器。在這個資料庫中,我們使用了 public schema。
Tables
這個資料庫包含 4 個表格:
- city
- country
- country_language
- country_flag
Relationships
- country_language -> country (country_language_country_code_fkey)
- city -> country (country_fk)
- country -> city (country_capital_fkey)
pgAdmin 使用教學
- 下載並安裝
pgAdmin。 - 啟動
pgAdmin,並新增一個新的伺服器連接。 - 輸入連接資訊,如主機名稱、用戶名和密碼。
- 點擊連接,你將看到資料庫伺服器中的所有資料庫和表格。
- 查看表格的結構和數據,並嘗試執行一些 SQL 查詢。請先試著點 (server) -> (world) -> (Schemas) -> (public) -> (Tables) -> (city),然後右鍵點擊
View/Edit Data->All Rows,你將看到city表格的數據。 - 嘗試執行一些簡單的 SQL 查詢,如
SELECT * FROM city where population > 1000000;。你可以在Query Tool中輸入 SQL 查詢,並點擊Execute按鈕來執行查詢。
練習題目
查詢所有城市的名稱和人口數
SELECT name, population FROM city;我們使用
SELECT來選擇name和population這兩個欄位,並從city表格中查詢所有的城市名稱和人口數。如果你想查詢所有欄位,可以使用SELECT * FROM city;。查詢所有國家的名稱和其首都的名稱
SELECT country.name AS country_name, city.name AS capital_name FROM country JOIN city ON country.capital = city.id;Join 是 SQL 中用來合併兩個表格的操作,這裡我們使用
JOIN來合併country和city表格,並根據country.capital和city.id進行連接。查詢講西班牙語的國家名稱
SELECT country.name FROM country JOIN country_language ON country.code = country_language.country_code WHERE country_language.language = 'Spanish';Where 子句用於過濾查詢結果,這裡我們使用
WHERE來過濾說西班牙語的國家。查詢人口超過 1000 萬的國家名稱和人口數
SELECT name, population FROM country WHERE population > 10000000;查詢每個國家的語言數量
SELECT country.name, COUNT(country_language.language) AS language_count FROM country JOIN country_language ON country.code = country_language.country_code GROUP BY country.name;Count 是 SQL 中的一個聚合函數,用於計算結果集中的行數。這裡我們使用
COUNT來計算每個國家的語言數量,並使用GROUP BY來分組。
6. 總結
SQL 是一種用於與關聯式資料庫互動的語言,它可以幫助我們查詢、更新、插入和刪除數據。在專案管理中,了解 SQL 的基本操作可以幫助專案經理更好地進行數據驅動的決策,並與技術團隊更好地溝通和協調。
接下來,你可以利用 AI 工具,通過練習更多的 SQL 查詢來加深對 SQL 的理解,並嘗試在實際專案中應用 SQL 來解決問題。