zoukankan      html  css  js  c++  java
  • (八大方法、逐层深入,有你一定没见过的)使用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
     联系我,非常感谢。

      

    作者: EricHu
    出处:http://www.cnblogs.com/huyong/
    Email:406590790@qq.com
    QQ交流:406590790
    框架官网:http://www.rdiframework.net/
    框架官网博客:http://blog.rdiframework.net/
    框架其他博客:http://blog.csdn.net/chinahuyong
                   http://www.cnblogs.com/huyong
    RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。
    关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于 RDIFramework.NET 框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。
    如有问题或建议,请多多赐教!
    本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。

  • 相关阅读:
    定位练习
    解决 java.lang.RuntimeException: Unable to start activity ComponentInfo{...}
    开发日志09
    Could not resolve all artifacts for configuration ':classpath'.
    本周总结
    AutoCompleteTextView自动补全(开发日志08)
    实现地图的建议搜索并显示 SuggestionSearch
    SuggestionSearch(开发日志07)
    android studio 查看函数的解释及说明
    初步确定页面(开发日志06)
  • 原文地址:https://www.cnblogs.com/umplatform/p/2672156.html
Copyright © 2011-2022 走看看