SQL 基本函數用途


Posted by Leo Li on 2025-03-02

NULL

什麼是NULL?

NULL 代表「無值」或「未知值」,它與 0、空字串('')是不同概念。

Null的使用時機

用來表示資料庫中某欄位尚未填入資料。
舉例:

  • 新員工尚未被指派部門,須先顯示為null
  • 註冊簡易帳號,尚未填入資料會顯示null
CREATE TABLE users(
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    team_name VARCHAR(50) NULL,
    salary INTEGER NULL
);

name, email是必填欄位,而薪水非必填日後可在談論填上。此時建立後,若新增資料時未填寫name, email則會被約束無法新增。

COALESCE

用來檢查並處理null結果。
有些語言會因爲null做其他處理而影發錯誤。

SELECT
    id,
    name,
    email,
    COALESCE(team_name, '未分配') as team_name,
    COALESCE(salary, 0) as salary
FROM users;

處理後資料

DISTINCT

不重複函數

SELECT DISTINCT teams.name 
FROM users;

SQL中用於去除重複資料的關鍵字。

count

是一個計數函數,用來計算資料表中的資料筆數。

計算總共有幾個員工

SELECT COUNT(*) as 員工人數
FROM users;

計算開發部有幾個員工

SELECT COUNT(*) as 開發部人數
FROM users
WHERE team_name = '開發部';

計算薪水大於40000並且為人事部的員工人數

SELECT COUNT(*) as 人事部高薪員工人數
FROM users
WHERE 
    salary > 40000
AND
    team_name = '人事部';

計算函數

SUM 加總

SELECT SUM(salary) AS 員工總薪資
FROM users;

AVG 平均值

SELECT AVG(salary) AS 員工平均薪資
FROM users;

MAX 最大值

SELECT MAX(salary) AS 最高薪資
FROM users;

MIN 最小值

SELECT MIN(salary) AS 最低薪資
FROM users;

UUID介紹

SERIAL 與 UUID 差異

SERIAL與UUID差異

使用UUID

資料庫開啟UUID功能

以postgress為例,低於13版時需要操作這項指令
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

試著建立UUID

CREATE TABLE users (
   -- id SERIAL PRIMARY KEY,
   id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
   name VARCHAR(50) NOT NULL,
   email VARCHAR(100) NOT NULL,
   team_name VARCHAR(50) NULL, 
   salary INTEGER NULL        
);

INSERT INTO users (name, email, team_name, salary) 
VALUES 
    ('林建宏', 'chihming.lin@company.com', '開發部', 68000),
    ('王雅婷', 'yating.wan@company.com', '人事部', 42000 ),
    ('陳美玲', 'jianhong.cheng@company.com', '人事部', 36000),
    ('張佳琳', 'jialin.chang@company.com', '人事部', 45000),
    ('黃志明', 'meiling.huang@company.com', '開發部', 48000);


#SQL #null #coalesce #distinct #count #uuid #sum #AVG #Max #min







Related Posts

Python小技巧暨問題集

Python小技巧暨問題集

[ JS筆記 ] forEach()、map()差別

[ JS筆記 ] forEach()、map()差別

平面最近點對:比較4種不同複雜度之算法

平面最近點對:比較4種不同複雜度之算法


Comments