SQL Intro


1. SQL 基礎介紹

什麼是 SQL?

SQL 是 “Structured Query Language” 的縮寫,是一種專門用來與關聯式資料庫互動的語言。它用於查詢、更新、插入、刪除資料,並且能夠管理和操控資料庫的結構。

  • 關聯式資料庫:是一種基於表格的數據存儲形式,數據被儲存在行與列中。
  • 常見的資料庫管理系統:像 MySQL、PostgreSQL、SQL Server 和 Oracle 都支援 SQL。

SQL 能做什麼?

  • 查詢數據:可以檢索儲存在資料庫中的數據。
  • 修改數據:可以插入新數據、更新現有數據或刪除數據。
  • 管理數據庫:可以創建或修改表、索引和其他數據結構。

2. SQL 的基礎語法

基本 SQL 語法結構

SQL 是以聲明的形式來告訴資料庫應該做什麼,語法相對簡單直觀。這裡是最常用的 SQL 語句。

  1. SELECT 語句 - 用來查詢數據:

    SELECT column_name1, column_name2 FROM table_name;
  2. INSERT 語句 - 插入新數據:

    INSERT INTO table_name (column_name1, column_name2) VALUES (value1, value2);
  3. UPDATE 語句 - 更新現有數據:

    UPDATE table_name SET column_name1 = value1 WHERE condition;
  4. DELETE 語句 - 刪除數據:

    DELETE FROM table_name WHERE condition;
  5. CREATE TABLE 語句 - 創建新表:

    CREATE TABLE table_name (
       column_name1 datatype,
       column_name2 datatype
    );

3. 介紹常見的 SQL 查詢

  • 選擇特定欄位

    SELECT name, age FROM employees;

    解釋:這個查詢會從 employees 表中選擇 nameage 這兩個欄位。

  • 條件過濾

    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 使用教學

  1. 下載並安裝 pgAdmin
  2. 啟動 pgAdmin,並新增一個新的伺服器連接。
  3. 輸入連接資訊,如主機名稱、用戶名和密碼。
  4. 點擊連接,你將看到資料庫伺服器中的所有資料庫和表格。
  5. 查看表格的結構和數據,並嘗試執行一些 SQL 查詢。請先試著點 (server) -> (world) -> (Schemas) -> (public) -> (Tables) -> (city),然後右鍵點擊 View/Edit Data -> All Rows,你將看到 city 表格的數據。
  6. 嘗試執行一些簡單的 SQL 查詢,如 SELECT * FROM city where population > 1000000;。你可以在 Query Tool 中輸入 SQL 查詢,並點擊 Execute 按鈕來執行查詢。

練習題目

  1. 查詢所有城市的名稱和人口數

    SELECT name, population FROM city;

    我們使用 SELECT 來選擇 namepopulation 這兩個欄位,並從 city 表格中查詢所有的城市名稱和人口數。如果你想查詢所有欄位,可以使用 SELECT * FROM city;

  2. 查詢所有國家的名稱和其首都的名稱

    SELECT country.name AS country_name, city.name AS capital_name
    FROM country
    JOIN city ON country.capital = city.id;

    Join 是 SQL 中用來合併兩個表格的操作,這裡我們使用 JOIN 來合併 countrycity 表格,並根據 country.capitalcity.id 進行連接。

  3. 查詢講西班牙語的國家名稱

    SELECT country.name
    FROM country
    JOIN country_language ON country.code = country_language.country_code
    WHERE country_language.language = 'Spanish';

    Where 子句用於過濾查詢結果,這裡我們使用 WHERE 來過濾說西班牙語的國家。

  4. 查詢人口超過 1000 萬的國家名稱和人口數

    SELECT name, population
    FROM country
    WHERE population > 10000000;
  5. 查詢每個國家的語言數量

    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 來解決問題。

7. 參考資料

sql 

See also