(八大方法、逐層深入,有你一定沒見過的)使用INSERT語句向表中插入數據


 

(八大方法、逐層深入,有你一定沒見過的)

使用INSERT語句向表中插入數據(MSSQLSERVER版)

 

 

      做開發的同仁對於向數據庫中插入數據可謂是太普通不過了,也沒什么說的,一般都是采用常用的INSERT INTO [(字段列表)] VALUES(字段值列表),這樣的方式進行操作。今天,我要給大家介紹的是其他一些非常規的方式,一定會讓你耳目一新,眼前一亮。

       進入今天的主題,以了便於操作,我們首先建立一個實例數據表:

         

USE tempdb ;
GO
  CREATE  TABLE Fruit
    (
      Id  INT  NOT  NULL ,
      Name  VARCHAR( 100NOT  NULL ,
      Color  VARCHAR( 100NULL ,
      Quantity  INT  DEFAULT  1
    ) ;

 

方式一:傳統方式

 

語法:INSERT (column_list) VALUES (value_list);

 

我們插入一條數據到數據表中。

    INSERT   INTO Fruit
        ( Id, Name, Color, Quantity )
    VALUES  (  1' Banana '' Yellow '1 ) ;

 

這種方式是我們常用的一種插入數據的方式,給出所有的列名集合與值集合。

 

方式二:省略列集合

 

    INSERT   INTO Fruit
    VALUES  (  2' Grapes '' Red '15 ) ;

 

 

這種方式我們省略了列名集合,這種方式值集合必須與數據表定義時列的順序相一至,必須賦的值不能省略

 

方式三:插入部分字段

  

    INSERT   INTO Fruit
        ( Id, Name )
    VALUES  (  3' Apples ' ) ;

 

 

    這種方式,我們不必給出所有字段列表,只插入我們需要的字段即可。

以上三種方式是我們在實際使用中最為常見的插入數據的方式,下面給出的也許會讓你眼前一亮。

 

方式四:一條插入語句插入多條數據

 

    INSERT   INTO Fruit
        ( Id, Name, Color, Quantity )
    VALUES  (  4' Apples '' Red '10 ),
            (  5' Peaches '' Green '7 ),
         (  6' Pineapples '' Yellow '5 ) ; 

 

在這兒,我用一條插入語句同時插入了三條不同的數據到Fruit數據表中。

 

方式五:使用SELECT語句同時插入多條數據。

 

          

        INSERT   INTO Fruit
        ( Id ,
          Name ,
          Color ,
          Quantity
        )
         SELECT   7  + (  6  - Id ) ,
                Name ,
                 ' White ' ,
                Quantity
         FROM    Fruit
         WHERE   Id  >  3
         ORDER  BY Id  DESC ;

 

在方式五中,我通過選擇Fruit表中 Id 大於 3 記錄插入到Fruit表中。這是從水果表中現有的值派生出來的。

 

方式六:使用存儲過程插入數據。

 

首先、我們建立一個存儲過程如下:

    CREATE  PROC HybridFruit
    AS
     SELECT  b.Id  +  9 ,
            a.Name  + b.name
     FROM    Fruit a
             INNER  JOIN Fruit b  ON a.Id  =  9  - b.Id ;
   GO  
 

 

現在我們使用上面建立的存儲過程進行數據的插入,方法如下:

    INSERT   INTO Fruit
        ( Id, Name )
         EXECUTE HybridFruit ;

 

  

方式七:使用OUTPUT子句輸出插入的數據以供外部使用。

  

    INSERT   INTO Fruit
    ( Id, Name )
   OUTPUT  INSERTED. *
    VALUES  (  18' Pie Cherries ' ) ;

 

 

在這兒,我們通過使用OUTPU子句輸出了同步插入的數據。

 

方式八:通過OUTPUT子句把結果返回給客戶端。

 

為了方便演示,我先把Fruit表的Id列設為自動增長列。

    ALTER  TABLE Fruit
    DROP  COLUMN Id ;
    ALTER  TABLE Fruit
    ADD Id  INT  IDENTITY ;

 

現在我們來通過OUTPUT子句插入值並把結果返回給客戶端。

DECLARE  @INSERTED  AS  TABLE ( Id  INT, Name  VARCHAR( 100) ) ;
 
-- 使用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
 聯系我,非常感謝。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM