[转载文章] (八大方法、逐层深入,有你一定没见过的)使用INSERT语... [复制链接]

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

使用INSERT语句向表中插入数据



      做开发的同仁对于向数据库中插入数据可谓是太普通不过了,也没什么说的,一般都是采用常用的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
            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
微博: 腾讯
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 联系我,非常感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值