首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL DML 核心語句速查:INSERT、UPDATE、DELETE 語法與範例

     編輯:關於SqlServer

DML (Data Manipulation Language) 三大核心指令是數據庫增刪改的基石。本文提供標準語法、參數化範例與常見陷阱提示。

1. INSERT - 插入數據

語法

-- 完整列插入 (須匹配表定義順序)
INSERT INTO TableName VALUES (Val1, Val2, ...);

-- 指定列插入 (推薦,順序無關、易維護)
INSERT INTO TableName (Col1, Col2, ...) VALUES (Val1, Val2, ...);

-- 批量插入 (單語句多行,SQL 2008+)
INSERT INTO TableName (Col1, Col2) VALUES 
    (Val1, Val2), (Val3, Val4), ...;

-- 查詢結果插入
INSERT INTO TargetTable (Col1, Col2)
SELECT ColA, ColB FROM SourceTable WHERE ...;

範例

INSERT INTO Country (CountryName) VALUES (N'中國');
INSERT INTO Country (CountryId, CountryName) VALUES (5, N'美國');  -- 若 CountryId 非 IDENTITY

2. UPDATE - 更新數據

語法

UPDATE TableName
SET Col1 = Val1, Col2 = Val2, ...
WHERE ;  -- 缺少 WHERE 將更新全表!

範例

UPDATE Country 
SET CountryName = N'中國' 
WHERE CountryId = 4;

3. DELETE - 刪除數據

語法

DELETE FROM TableName
WHERE ;  -- 缺少 WHERE 將清空全表!

範例

DELETE FROM Country WHERE CountryId = 4;

關鍵最佳實踐

場景建議風險
生產環境手動執行先 BEGIN TRAN → 執行 → SELECT 驗證 → COMMIT/ROLLBACK誤刪/誤改無法撤銷
應用代碼**務必使用參數化命令**,禁止字符串拼接SQL 注入、計劃緩存污染
大批量操作分批 (TOP 5000/10000) 循環,避免長事務、鎖升級、日志爆漲阻塞、事務日志填滿磁盤
刪除大表大部分數據考慮 TRUNCATE TABLE (無 WHERE、重置身份列、極快) 或 SWITCH PARTITIONDELETE 逐行記錄日志,極慢
外鍵約束存在DELETE/UPDATE 父表需考慮級聯或先處理子表約束衝突報錯

TRUNCATE vs DELETE 快速對比

特性DELETETRUNCATE
WHERE 條件支援不支援 (全表)
觸發器觸發 AFTER DELETE不觸發
身份列重置不重置重置為種子值
日志量逐行記錄僅記錄頁釋放 (極少)
權限DELETE 權限ALTER TABLE 權限
外鍵引用允許 (配合級聯)禁止 (必須先刪除/禁用 FK)

總結

INSERT/UPDATE/DELETE 看似簡單,生產環境下事務控制、參數化、分批、外鍵協調才是決定成敗的關鍵。將最佳實踐內化為肌肉記憶,代碼審查時重點檢查這四點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved