插入單一資料列

選取demodb資料庫後,滑鼠右鍵點擊新增查詢後,輸入以下SQL 指令後,按下 執行:

SELECT * FROM Units ORDER BY Id
INSERT INTO Units VALUES ('PG', '套' , '')
SELECT * FROM Units ORDER BY Id

執行結果: 可以用選取一行一行指令來觀察執行結果

  • 新增前查詢
  • 執行新增
  • 新增後查詢
  • 不選取行來一次執行

插入多個資料列

一個指令可以新增多個資料,選取demodb資料庫後,滑鼠右鍵點擊新增查詢後,輸入以下SQL 指令後,按下 執行:

SELECT * FROM Units ORDER BY Id
INSERT INTO Units VALUES ('CPY', '冊',''),('CRD', '卡','')
SELECT * FROM Units ORDER BY Id

執行前後的結果:

插入與資料表資料行順序不同的資料

指定資料值時還需指定欄位名稱,此時插入資料時與資料表結構定義的欄位順序無關,依照欄名賦予對應的值。
因為表格的結構會調整,欄位結構順序易改變,用此方法對於寫程式的人來說不易出錯。

SELECT * FROM Units ORDER BY Id
INSERT INTO Units (UnitNo , UnitName) VALUES ('CSC', '桶')
SELECT * FROM Units ORDER BY Id

備註欄位未指定,所以得到 NULL

插入自動編號欄位值(自行指定編號值)

Id 為自動編號不須給值,但如有某一筆資料被刪除後,該Id 可以讓我們重新給新值,或者指定一個 Id 是沒有用的狀態。

-- 插入前
SELECT * FROM Units ORDER BY Id
-- 設定取消自動編號功能
SET IDENTITY_INSERT Units ON
-- 讓指令 SET IDENTITY_INSERT Units ON 立即執行
GO
-- 執行插入
INSERT INTO Units (Id , UnitNo , UnitName) VALUES (50 , 'CWA', '擔')
-- 恢復自動編號功能
SET IDENTITY_INSERT Units OFF
-- 立即執行指令 SET IDENTITY_INSERT Units OFF
GO
-- 插入後查詢
SELECT * FROM Units ORDER BY Id

執行過後,下一筆會從 51 開始,因New Id = Max Id + 1

插入另一個表格中的資料

資料來自於另一個Table。

-- 顯示存放地點表格 Places 的 存放地點編號、存放地點名稱,把存放名稱當作一個單位來用
SELECT * FROM Places ORDER BY PlaceNo
-- 插入資料,只指定欄位名稱,不指定值
INSERT INTO Units (UnitNo , UnitName)
-- 欄位資料來源指定從 Places 資料表的 PlaceNo , PlaceName 取得
SELECT PlaceNo , PlaceName FROM Places
SELECT * FROM Units ORDER BY Id 

執行指令一: SELECT * FROM Places ORDER BY PlaceNo

執行指令二:

INSERT INTO Units (UnitNo , UnitName)
SELECT PlaceNo , PlaceName FROM Places


執行指令三: SELECT * FROM Units ORDER BY Id

此種用法,兩邊的資料型別要相同,資料個數要相同。