(八大方法、逐層深入,有你一定沒見過的)
使用INSERT語句向表中插入數據(MSSQLSERVER版)
做開發的同仁對於向數據庫中插入數據可謂是太普通不過了,也沒什么說的,一般都是采用常用的INSERT INTO [(字段列表)] VALUES(字段值列表),這樣的方式進行操作。今天,我要給大家介紹的是其他一些非常規的方式,一定會讓你耳目一新,眼前一亮。
進入今天的主題,以了便於操作,我們首先建立一個實例數據表:
GO
CREATE TABLE Fruit
(
Id INT NOT NULL ,
Name VARCHAR( 100) NOT NULL ,
Color VARCHAR( 100) NULL ,
Quantity INT DEFAULT 1
) ;
方式一:傳統方式
語法:INSERT (column_list) VALUES (value_list);
我們插入一條數據到數據表中。
( Id, Name, Color, Quantity )
VALUES ( 1, ' Banana ', ' Yellow ', 1 ) ;
這種方式是我們常用的一種插入數據的方式,給出所有的列名集合與值集合。
方式二:省略列集合
VALUES ( 2, ' Grapes ', ' Red ', 15 ) ;
這種方式我們省略了列名集合,這種方式值集合必須與數據表定義時列的順序相一至,必須賦的值不能省略。
方式三:插入部分字段
( Id, Name )
VALUES ( 3, ' Apples ' ) ;
這種方式,我們不必給出所有字段列表,只插入我們需要的字段即可。
以上三種方式是我們在實際使用中最為常見的插入數據的方式,下面給出的也許會讓你眼前一亮。
方式四:一條插入語句插入多條數據
( Id, Name, Color, Quantity )
VALUES ( 4, ' Apples ', ' Red ', 10 ),
( 5, ' Peaches ', ' Green ', 7 ),
( 6, ' Pineapples ', ' Yellow ', 5 ) ;
在這兒,我用一條插入語句同時插入了三條不同的數據到Fruit數據表中。
方式五:使用SELECT語句同時插入多條數據。
( Id ,
Name ,
Color ,
Quantity
)
SELECT 7 + ( 6 - Id ) ,
Name ,
' White ' ,
Quantity
FROM Fruit
WHERE Id > 3
ORDER BY Id DESC ;
在方式五中,我通過選擇Fruit表中 Id 大於 3 記錄插入到Fruit表中。這是從水果表中現有的值派生出來的。
方式六:使用存儲過程插入數據。
首先、我們建立一個存儲過程如下:
AS
SELECT b.Id + 9 ,
a.Name + b.name
FROM Fruit a
INNER JOIN Fruit b ON a.Id = 9 - b.Id ;
GO
現在我們使用上面建立的存儲過程進行數據的插入,方法如下:
( Id, Name )
EXECUTE HybridFruit ;
方式七:使用OUTPUT子句輸出插入的數據以供外部使用。
( Id, Name )
OUTPUT INSERTED. *
VALUES ( 18, ' Pie Cherries ' ) ;
在這兒,我們通過使用OUTPU子句輸出了同步插入的數據。
方式八:通過OUTPUT子句把結果返回給客戶端。
為了方便演示,我先把Fruit表的Id列設為自動增長列。
DROP COLUMN Id ;
ALTER TABLE Fruit
ADD Id INT IDENTITY ;
現在我們來通過OUTPUT子句插入值並把結果返回給客戶端。
-- 使用OUTPUT插入
INSERT INTO Fruit
( Name, Color )
OUTPUT INSERTED.Id, INSERTED.Name
INTO @INSERTED
VALUES ( ' Bing Cherries ', ' Purple ' ),
( ' Oranges ', ' Orange ' ) ;
-- 顯示插入的值
SELECT *
FROM @INSERTED ;
以上就是八種方式,也許對你有用,僅作參考使用,謝謝~!
作者: Edward
出處: http://www.cnblogs.com/umplatform
微博: 騰訊
Email: umplatform@126.com或 406590790@qq.com
QQ 交流:406590790 (請注明:平台交流)
QQ群交流:16653241 或 237326100
平台博客:【CNBLOGS】http://www.cnblogs.com/umplatform
【51CTO】http://umplatform.blog.51cto.com/
關於作者:高級工程師、信息系統項目管理師、DBA。專注於微軟平台項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織並開發多個大型項目,精通DotNet,DB(SqlServer、Oracle等)技術。熟悉Java、Delhpi及Linux操作系統,有扎實的網絡知識。在面向對象、面向服務以及數據庫領域有一定的造詣。現從事DB管理與開發、WinForm、WCF、WebService、網頁數據抓取以及ASP.NET等項目管理、開發、架構等工作。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過郵箱或QQ 聯系我,非常感謝。
