(八大方法、逐层深入,有你一定没见过的)使用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