SQL 函數
一些聚合函數(aggregate function)以及其他 PG 的功能
NULL
建立 table 時可以指定欄位是否必填,
如果設定了 NOT NULL
,其他欄位建議也補上 NULL
, 整體可讀性較一致。
-- 建立員工資料表
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
team_name VARCHAR(50) NULL,
salary INTEGER NULL
);
COALESCE
可以使 NULL 的欄位輸出變成指定的值,
如撈到 salary 為 NULL 的時候,就顯示 '未設定'
:
SELECT
id,
name,
email,
COALESCE(team_name, '未分配部門') as team_name,
COALESCE(salary, 0) as salary
FROM users;
DISTINCT
在撈取時可以去除重複資料,類似 Set 物件:
SELECT
DISTINCT team_name
FROM
users;
COUNT
SELECT
COUNT(*) as 員工總數
FROM
users;
AVG、SUM、MAX、MIN
SELECT
AVG(salary) AS 平均薪資,
SUM(salary) AS 總薪資,
MAX(salary) AS 最高薪資,
MIN(salary) AS 最低薪資
FROM users;
UUID
可以產生比純數字的 id 更具安全性的代號,代價是占用更多容量:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
);