• Sql Server系列:Insert语句


    1 INSERT语法

    [ WITH <common_table_expression> [ ,...n ] ]
    INSERT 
    {
            [ TOP ( expression ) [ PERCENT ] ] 
            [ INTO ] 
            { <object> | rowset_function_limited 
              [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
            }
        {
            [ ( column_list ) ] 
            [ <OUTPUT Clause> ]
            { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ] 
            | derived_table 
            | execute_statement
            | <dml_table_source>
            | DEFAULT VALUES 
            }
        }
    }
    [;]

      在该结构中,INSERT为该语句的实际操作,INTO关键字无真正含义,目的是为增强这个语句的可读性。INTO关键字为可选,建议在语句中加入该关键字。在使用Entity Framework添加数据时,执行的INSERT语句是没有使用INTO关键字的。

    2 单条插入

    INSERT INTO [dbo].[Product]
        ([ProductName], [UnitPrice], [CreateDate])
    VALUES 
        ('LINQ to SQL', 100, GETDATE());

    3 多条插入

      SQL Server 2012支持一次插入多行记录,实现方式为在需要添加额外的用逗号分隔的插入值。

    INSERT INTO [dbo].[Product]
        ([ProductName], [UnitPrice], [CreateDate])
    VALUES 
        ('LINQ to SQL', 100, GETDATE()),
        ('LINQ to Object', 90, GETDATE());

    4 INSERT INTO ... SELECT语句

      在一次INSERT多条记录时,且需要插入的数据是从其他的数据源选择获取时,可以使用INERT INTO...SELECT语句。

      不同的数据源包括:

      ◊ 数据库中的另一个表

      ◊ 同一台服务器上的另外一个数据库中的数据表

      INERT INTO...SELECT语法:

    INSERT INTO <table_name>
    [<column list>]
    <SELECT statement>

      示例:从另外一个数据库的数据表作为数据源一次插入多条记录

    USE Portal
    GO
    
    INSERT INTO [dbo].[Product]
        ([ProductName], [UnitPrice], [CreateDate])
    SELECT
        [ProductName], [UnitPrice], [CreateDate]
    FROM 
        [Northwind].[dbo].[Product]
    
    GO

      示例:声明table类型的变量,向变量中一次插入多条记录

    USE Portal
    GO
    
    DECLARE @tbl TABLE
    (
        ProductName VARCHAR(50) NULL,
        CreateDate DATETIME NULL
    )
    INSERT INTO @tbl
    SELECT
        [ProductName], [CreateDate]
    FROM 
        [dbo].[Product]
    
    SELECT * FROM @tbl
    
    GO

    5 参考资料:

      http://msdn.microsoft.com/zh-cn/library/ms174335.aspx

  • 相关阅读:
    软连接
    libmysqlclient.so.18 not found 的解决方法
    查找某个文件并全部删除
    sudo passwd root:没有相关指令
    智能解析套件
    日志类封装
    windows安装mysql
    xshell报错Socket error Event: 32 Error: 10053
    appium简明教程(8)——那些工具
    appium简明教程(7)——Desired Capabilities详解
  • 原文地址:https://www.cnblogs.com/libingql/p/4113038.html
Copyright © 2020-2023  润新知