跳至主要内容

SQL 查詢語句範例

本文件依「建、讀、更、刪」排序(CRUD)

Create

-- 新增資料表
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
column3 data_type
);
-- 資料表插入新記錄
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Read

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

Update

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Delete

-- 刪除所有記錄
DELETE FROM table_name; -- 注意!這會無條件刪除資料表內所有記錄,一定要小心使用!

DELETE FROM table_name WHERE condition;

先讀再建

-- 使用 subquery(比 join 易讀但效能較差)
INSERT INTO table_1 (column1, referenced_colum, column2, ...)
VALUES (value1,
(SELECT column_A FROM table_2 WHERE column_for_reference = referenced_value),
value2, ...);

-- 使用 inner join(效能佳,但語法不如 subquery 容易上手)
INSERT INTO table_1 (column1, referenced_colum, column2, ...)
SELECT value1, joined_table.column, value2, ...
FROM table_2 AS joined_table
WHERE joined_table.column = value;

先讀再刪

-- 僅可透過 subquery 執行
DELETE FROM table_1
WHERE column_1 IN (
SELECT t.column
FROM table_2 AS t
WHERE t.column condition
);

Isolation Level

-- 在 PostgreSQL 檢視隔離層級
show transaction isolation level;

-- PostgreSQL 在單一交易中設定隔離層級
BEGIN;
set transaction isolation level read uncommitted; -- 設為 read uncommitted

時間相關指令

-- 顯示、檢視、查詢現在時間
SELECT now();

-- 顯示、檢視、查詢時區
SHOW VARIABLES LIKE '%time_zone%';

-- 設定時區(以設定為 UTC+8 台灣時區為例)
SET time_zone = "+8:00";
友站連結