zoukankan      html  css  js  c++  java
  • (八大方法、逐层深入,有你一定没见过的)使用INSERT语句向表中插入数据

    (八大方法、逐层深入,有你一定没见过的)

    使用INSERT语句向表中插入数据(MSSQLSERVER版)

     

             做开发的同仁对于向数据库中插入数据可谓是太普通不过了,也没什么说的,一般都是采用常用的INSERT INTO [(字段列表)] VALUES(字段值列表),这样的方式进行操作。今天,我要给大家介绍的是其他一些非常规的方式,一定会让你耳目一新,眼前一亮。

             进入今天的主题,以了便于操作,我们首先建立一个实例数据表:

    USE tempdb ;

    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);

    我们插入一条数据到数据表中。

       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

                INNERJOIN 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, 'PieCherries' ) ;

    在这儿,我们通过使用OUTPU子句输出了同步插入的数据。

    方式八:通过OUTPUT子句把结果返回给客户端。

    为了方便演示,我先把Fruit表的Id列设为自动增长列。

       ALTER TABLE Fruit

       DROP COLUMN Id ;

       ALTER TABLE Fruit

    ADD Id INTIDENTITY ;

    现在我们来通过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 ;

    以上就是八种方式,也许对你有用,仅作参考使用,谢谢~!


  • 相关阅读:
    【Elasticsearch 技术分享】—— ES 常用名词及结构
    【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?
    除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?
    小伙伴想写个 IDEA 插件么?这些 API 了解一下!
    部署Microsoft.ReportViewe
    关于TFS强制undo他人check out
    几段查看数据库表占用硬盘空间的tsql
    How to perform validation on sumbit only
    TFS 2012 Disable Multiple Check-out
    在Chrome Console中加载jQuery
  • 原文地址:https://www.cnblogs.com/huyong/p/2685722.html
Copyright © 2011-2022 走看看