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

SQL Server INSERT 語法大全:單筆、批次、子查詢與預存程序四種資料新增模式完整解析

     編輯:關於SqlServer

前言

資料庫資訊的正確性與時效性仰賴更新功能。資料更新包含新增、刪除、修改三大操作。企業管理器雖可手工新增資料,但無法應付大量匯入,必須掌握 INSERT 陳述式的完整語法與進階用法。

11.1.1 INSERT 核心語法

兩種基本形式:

  • VALUES 子句:插入單筆明確資料
  • 子查詢:批次插入查詢結果集
INSERT 語法圖解 1 INSERT 語法圖解 2

關鍵注意事項

  • varbinary 尾端 0x00 會被截除
  • varchar/text 尾端空白會被移除;純空白字串視為零長度字串
  • IDENTITY 欄位不可指定值,VALUES 清單中需略過
  • 字串型欄位建議以單引號括住,避免特殊字元解析錯誤
  • column_list 順序可與資料表定義不同,但 VALUES 項目必須一一對應

11.1.2 單筆插入實例

範例 1:指定欄位清單

USE pangu;
INSERT firms (firm_id, f_name, f_intro)
VALUES (10070001, 'SQL', '制作資料庫軟體的公司');
(1 row(s) affected)

範例 2:全欄位插入(可省略 column_list)

USE pangu;
INSERT firms
VALUES (10070001, 'SQL', '制作資料庫軟體的公司', 100700010007, '00-12345678', 234325, 'chengdu');

11.1.3 子查詢批次插入

將 SELECT 結果集直接插入目標表,實現集合式批次匯入:

INSERT [INTO] { table_name | view_name | rowset_function_limited }
[ (column_list) ]
subquery
子查詢插入語法圖解

11.1.4 預存程序驅動插入

透過執行預存程序取得結果集並插入:

INSERT [INTO] { table_name | view_name | rowset_function_limited }
[ (column_list) ]
EXECUTE procedure_name

procedure_name 可為系統/使用者預存程序,或直接內嵌預存程序定義。

預存程序插入語法圖解

進階實務技巧

  • 大量載入:配合 BULK INSERT 或 bcp 工具,效能遠優於 INSERT
  • 最小化記錄:簡單復原模式下,INSERT INTO ... SELECT 配合 TABLOCK 提示可最小化記錄
  • 錯誤處理:TRY...CATCH 區塊包裹,配合 XACT_ABORT ON
  • 身分值取回:SCOPE_IDENTITY() 取得當前會話/範圍內最新身分值

結語

精通 INSERT 四大模式與進階技巧,是資料庫開發與 ETL 實作的基本功。依資料量、頻率、來源選擇最適模式,配合交易與錯誤處理,構建穩健的資料寫入管線。

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