-- 複製指定欄位(結構需相同)
INSERT INTO TestT1 (a1, b1, c1) SELECT a, b, c FROM Test;
-- 全欄位複製(結構完全相同)
INSERT INTO TestT SELECT * FROM Test;
-- 複製單筆並指定固定值
INSERT INTO a SELECT '123' AS id, temp, temp2 FROM b WHERE id = 10;
-- Oracle: 序列產生主鍵
INSERT INTO notebook (id, title, content)
SELECT notebook_sequence.NEXTVAL, first_name, last_name FROM students;
-- 查找重複 (Oracle ROWID)
SELECT DRAWING, DSNO FROM EM5_PIPE_PREFAB
WHERE ROWID != (SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D
WHERE EM5_PIPE_PREFAB.DRAWING = D.DRAWING
AND EM5_PIPE_PREFAB.DSNO = D.DSNO);
-- 刪除重複,保留 ROWID 最大者
DELETE FROM EM5_PIPE_PREFAB
WHERE ROWID != (SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D
WHERE EM5_PIPE_PREFAB.DRAWING = D.DRAWING
AND EM5_PIPE_PREFAB.DSNO = D.DSNO);
SQL Server 版本請用主鍵或 ROW_NUMBER()。
-- Oracle
CREATE TABLE new_table AS SELECT * FROM old_table WHERE ROWNUM < 1;
-- SQL Server
SELECT * INTO new_table FROM old_table WHERE 1 <> 1;
ALTER TABLE TEST_A DROP (TEST_num, test_name); -- Oracle
ALTER TABLE TEST_A DROP COLUMN TEST_num, DROP COLUMN test_name; -- SQL Server
CREATE TABLE TableName_Bak AS SELECT * FROM TableName; -- Oracle
SELECT * INTO TableName_Bak FROM TableName; -- SQL Server
-- 主表
CREATE TABLE t1 (id INT, stu_name VARCHAR(50));
ALTER TABLE t1 ADD CONSTRAINT pk_t1 PRIMARY KEY (id);
-- 從表
CREATE TABLE t2 (id INT PRIMARY KEY, sex VARCHAR(10), address VARCHAR(50));
ALTER TABLE t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (id) REFERENCES t1(id) ON DELETE CASCADE;
-- 測試:刪除主表 → 從表級聯刪除
DELETE FROM t1; -- t2 同步清空
| 需求 | Oracle | SQL Server |
|---|---|---|
| 目前日期時間 | SYSDATE | GETDATE() / SYSDATETIME() |
| 本月最後一天 | LAST_DAY(SYSDATE) | EOMONTH(GETDATE()) |
| 距月底天數 | LAST_DAY(SYSDATE) - SYSDATE | DATEDIFF(DAY, GETDATE(), EOMONTH(GETDATE())) |
| 星期幾 (名稱) | TO_CHAR(SYSDATE, 'Day') | DATENAME(WEEKDAY, GETDATE()) |
| 月份名稱 | TO_CHAR(SYSDATE, 'Month') | DATENAME(MONTH, GETDATE()) |
| 指定日期星期 | TO_CHAR(TO_DATE('20020126','YYYYMMDD'), 'Day') | DATENAME(WEEKDAY, '2002-01-26') |
DECLARE @sql NVARCHAR(MAX) = N'CREATE TABLE ' + QUOTENAME(@tbl) + N' (id INT PRIMARY KEY, name NVARCHAR(100))';
EXEC sp_executesql @sql;
收集常用 SQL 片段並分類整理,能大幅提升開發與維運效率。建議團隊建立共用 Snippet 庫(如 GitHub Gist、Notion、VS Code Snippets),持續累積沉澱。