zoukankan      html  css  js  c++  java
  • SQL中一次插入多条数据

    SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据。

    1.

    语法:select 字段列表 into 新表 from 源表

    注意事项:此种方法新表是系统自动创建,语句执行前不可以存在新表,并且新表只能保留源表的标识列特性,其他约束不能保留。

    若只需要源表的数据结构,我们可以在语句中添加(top 0)

    2.

    语法:insert into 目的表 select 字段列表 from 源表

    注意事项:此种方法目的表必须在语句执行前存在,并且每一列要与源表对应。

    在此处还有一些有趣的问题,当我使用以下代码来插入多条数据时:

    select top 0 * into newstudent from  student
    insert into newstudent select * from student

    这里会发生这样的报错:

    因为NewClass表中ClassId为标识列,所以我们不能插入值。

    我们的解决办法如下:

    select top 0 * into newstudent from  student
    set identity_insert newstudent on
    insert into newstudent (classid,classname) select * from student

    我们把newstudent 的标识列插入写为显示的,并且添加了列名字段便可以插入了。

    之后我们再创建一个新的NewClass2:

    select top 0 *into NewClass2 from MyClass
    set identity_insert NewClass2 on
    insert into NewClass2(ClassId,ClassName) select* from MyClass

    此时还会报错,这是因为我们之前设置了newclass的标识列插入为on,我们必须先关闭后才可以往newclass2插入值,代码如下:

    select top 0 *into NewClass2 from MyClass
    set identity_insert newclass off
    set identity_insert NewClass2 on
    insert into NewClass2(ClassId,ClassName) select* from MyClass

    至此我们解决了使用第二种方法一次插入多条数据。

    3.

    语法:insert into 表(字段列名) select 值 union select值

  • 相关阅读:
    深入理解Elasticsearch写入过程 使用routing会导致docid不再全局唯一 Allocate策略 + routing参数
    force merge原理 + ES写入数据的过程
    Linux内核参数--time-wait回收--不建议设置
    elasticsearch迁移--利用腾讯云cos和nfs
    蓝鲸安装失败
    Apache Tomcat/8.5.51 secretRequired="true"
    自定义Nginx返回页面
    本地yum 源 iso文件 安装ansible
    elasticsearch字段属性值截断为32位
    rabbitmq-consul-apollo部署文档
  • 原文地址:https://www.cnblogs.com/rurui/p/6439521.html
Copyright © 2011-2022 走看看