精华内容
下载资源
问答
  • mysql中一条insert语句批量插入多条记录

    万次阅读 多人点赞 2017-07-20 15:39:23
    插入语句常用写法: INSERT INTO items(name,city,price,number,picture) VALUES('耐克运动鞋','广州',500,1000,'003.jpg'); 这种方式只能够一次插入一条数据,要想插入多条数据,就得多次调用此sql语句,意味着多...

    插入语句常用写法:

    INSERT INTO items(name,city,price,number,picture)  VALUES('耐克运动鞋','广州',500,1000,'003.jpg');

    这种方式只能够一次插入一条数据,要想插入多条数据,就得多次调用此sql语句,意味着多次与数据库建立连接。但是这样一来,就会增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中使用。

     

     一条INSERT语句插入批量数据的写法:

    INSERT INTO 
    
    [表名]([列名],[列名]) 
    
     VALUES
    
    ([列值],[列值])),
    
    ([列值],[列值])),
    
    ([列值],[列值]));

    可以看到,和原来的常规INSERT语句的区别,仅仅是在VALUES 后面增加值的排列,每条记录之间用英文输入法状态下的逗号隔开,是不是so easy。

    示例:

    INSERT INTO 
    
    items(name,city,price,number,picture) 
    
    VALUES
    
    ('耐克运动鞋','广州',500,1000,'003.jpg'),
    
    ('耐克运动鞋2','广州2',500,1000,'002.jpg');

    这样,就实现了一次性插入了2条数据。

    建议:

    在程序中,插入批量数据时,最好使用这种通过一条INSERT语句来一次性插入的方式。这样可以避免程序和数据库建立多次连接,从而增加服务器负荷。

     

    欢迎关注微信公众号(Java修炼记):

    专注Java技术积累,免费分享Java技术干货、学习笔记、学习资料等,致力于让这里成为一个java知识小站。

    展开全文
  • 算法 - 插入排序(C#)

    万次阅读 多人点赞 2019-02-01 10:58:01
    分享一个大牛的人工智能教程。... * 每次从无序表中取出第一个元素,把它插入到有序表的合适位置使有序表仍然有序,直至无序表中所有元素插入完为止。 * 第一趟扫描前两个数,然后把第二个数按大小...

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

    /*
     * 直接插入排序(straight insertion sort)的做法是:
     * 每次从无序表中取出第一个元素,把它插入到有序表的合适位置使有序表仍然有序,直至无序表中所有元素插入完为止。
     * 第一趟扫描前两个数,然后把第二个数按大小顺序插入到有序表中;
     * 第二趟把第三个数与前两个数从前向后扫描,把第三个数按大小插入到有序表中;
     * 依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。
     * 
     * 直接插入排序属于稳定的排序,最坏时间复杂度为O(n^2),空间复杂度为O(1)。
     * 
     * 直接插入排序是由两层嵌套循环组成的。
     * 外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置。
     * 直接插入排序是将待比较的数值与它的前一数值进行比较,所以外层循环是从第二个数值开始的。
     * 当前一数值比待比较数值大的情况下后移该数值并继续循环比较,
     * 直到找到比待比较数值小的并将待比较数值插入其后一位置,结束该次循环。
     * 值得注意的是,我们必需用一个存储空间来保存当前待比较的数值,
     * 因为当一趟比较完成时,我们要将待比较数值插入比它小的数值的后一位置。
     * 插入排序类似于玩纸牌时整理手中纸牌的过程。
    */
    
    namespace InsertionSort
    {
        using System;
    
        /// <summary>
        /// The program.
        /// </summary>
        public static class Program
        {
            /// <summary>
            /// The main.
            /// </summary>
            public static void Main()
            {
                int[] a = {1, 4, 6, 2, 8, 7, 9, 3, 5, 10};
    
                Console.WriteLine("Before Insertion Sort:");
                foreach (int i in a)
                {
                    Console.Write(i + " ");
                }
    
                Console.WriteLine("\r\n\r\nIn Insertion Sort:");
                InsertionSort(a);
    
                Console.WriteLine("\r\nAfter Insertion Sort:");
                foreach (int i in a)
                {
                    Console.Write(i + " ");
                }
            }
    
            /// <summary>
            /// The insertion sort.
            /// </summary>
            /// <param name="a">
            /// The a.
            /// </param>
            public static void InsertionSort(int[] a)
            {
                // 从第二个元素开始迭代。
                for (int i = 1; i < a.Length; i++)
                {
                    // 存储待插入的元素。
                    int tmp = a[i];
                    int j = i - 1;
    
                    // 从当前元素右边寻找插入点。
                    while (a[j] > tmp)
                    {
                        // 后移。
                        a[j + 1] = a[j];
                        j--;
                        if (j == -1)
                        {
                            break;
                        }
                    }
    
                    // 该后移的元素已经后移了,会留下一个空位置,这个位置就是待插入元素的插入点。
                    a[j + 1] = tmp;
    
                    // 打印数组。
                    foreach (int k in a)
                    {
                        Console.Write(k + " ");
                    }
    
                    Console.WriteLine(string.Empty);
                }
            }
        }
    }
    
    // Output:
    /*
    Before Insertion Sort:
    1 4 6 2 8 7 9 3 5 10
    
    In Insertion Sort:
    1 4 6 2 8 7 9 3 5 10
    1 4 6 2 8 7 9 3 5 10
    1 2 4 6 8 7 9 3 5 10
    1 2 4 6 8 7 9 3 5 10
    1 2 4 6 7 8 9 3 5 10
    1 2 4 6 7 8 9 3 5 10
    1 2 3 4 6 7 8 9 5 10
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    
    After Insertion Sort:
    1 2 3 4 5 6 7 8 9 10
    */

     

    展开全文
  • MySQL中添加或插入语句(Insert)的几种使用方式

    万次阅读 多人点赞 2019-07-03 11:13:56
    1.Intsert简写方式插入数据 1.先看一下表中有那些数据 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190703111342249.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0...

    1.各大培训机构,价格10万的视频 Java架构师视频免费送

    2.各种电子书籍经典Java书籍免费送

    3.关注下方我的公众号进行免费获取

    在这里插入图片描述

    MySQL中添加或插入语句(Insert)的几种使用方式

    1.INSERT 简写方式插入数据(不推荐)

    1.先看一下表中有那些数据

    在这里插入图片描述

    2.使用Inset into 表名 values(值1,值2)进行插入,并对查看插入数据是否成功

    在这里插入图片描述
      注意:insert这种简写的方式虽然非常简单,但是Values后面的值必须和表中的类顺序对应,且类型要保持一直,即使表中某一个列不需要值也必须赋值为null,比如我们的主键id设置的是递增实际上是不用设置值的,但是使用这种方式必须赋值为null
      不推荐的原因:在实际开发中如果使用此方法进行插入数据,后面表进行了改动(比如字段顺序改变了)那么整个语句都将报错,扩展性及其差,且维护起来比较困难

    2.INSERT 完整写法(推荐)

    1.使用Inset into 表名(字段1,字段2) values(值1,值2)进行插入,并对查看插入数据是否成功

    在这里插入图片描述
      推荐使用的原因:这一次我们设置了没有给id赋任何值包括null,而且不用关心表中字段的顺序,比如下面不按照正常顺序添加,我们将age放在第一,name放在第二个.也能添加成功;需要注意的是表名后面的字段名必须和后面values赋的值保持一致;实际开发中在维护和扩张方面都比方案一要好. 
    在这里插入图片描述

    3.REPLACE INSERT语句

    此语句的作用是当我们在插入一条数据时,如果此条已经存在,那么先删除原来存在的数据再添加插入的数据,如果不存在那么直接插入新的数据。注意:却分是否存在是通过主键来确定的

    在这里插入图片描述

    4.INSERT IGNORE INTO 语句

    此语句的作用是如果插入的数据已经存在那么就忽略插入的数据(也就是不改变原来的数据),如果不存在则插入新的数据。
    注意:却分是否存在是通过主键来确定的

    在这里插入图片描述

    5.INSERT 批量插入

    1.使用Inset into 表名(字段1,字段2,字段3) values(值1,值2,值3);Inset into 表名(字段1,字段2,字段3) values(值1,值2,值3)进行插入,并对查看插入数据是否成功

    在这里插入图片描述

    2.使用简写方式使用Inset into 表名(字段1,字段2,字段3) values(值1,值2,值3),(值1,值2,值3)进行插入,并对查看插入数据是否成功,必须保证values后的值都和字段相对应.

    在这里插入图片描述

    6.INSERT SELECT语句

    1.此语句的作用是将SELECT语句的结果插入表中,可实现数据迁移
    2.语法:insert into 插入的表名(字段1,字段2,字段3) select 被查询的字段1,被查询的字段2 from 被查询的表名;
    3.先查看需要插入的表的所有数据

    在这里插入图片描述

    4.查看被插入的表的所有数据

    在这里插入图片描述

    5.执行INSERT SELECT语句并查看结果

    在这里插入图片描述

    1.各大培训机构,价格10万的视频 Java架构师视频免费送

    2.各种电子书籍经典Java书籍免费送

    3.关注下方我的公众号进行免费获取

    在这里插入图片描述

    展开全文
  • 使用mybatis插入数据执行效率对比,对比三种方式, 1 使用 SqlSessionFactory,每1000条数据执行一次提交 2 使用mybatis-plus框架的insert方法,for循环,每次执行一次插入 3 使用ibatis,纯sql插入 先贴出执行...

    使用mybatis插入数据执行效率对比,对比三种方式(测试数据库为MySQL),

    1 使用 SqlSessionFactory,每一批数据执行一次提交

    2 使用mybatis-plus框架的insert方法,for循环,每次执行一次插入

    3 使用ibatis,纯sql插入

    新增xml执行效率测试:xml执行时间比sql稍慢一些,50000条数据插入时间约为2000毫秒左右,平均时间是sql的2倍左右。

    先贴出执行效果(数字代表执行的时间,单位毫秒):

     

     

    测试代码:

    //测试类
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = DemoApplication.class)
    public class Test1 {
    
        @Autowired
        UsersMapper usersMapper;
    
        @Autowired
        SqlSessionFactory sqlSessionFactory;
        public List<Users> list = new ArrayList<>();
    
        @Before
        public void  getList() {
            long start = System.currentTimeMillis();
            Users user;
            for (int i = 1; i <=50000 ; i++) {
                user = new Users();
                user.setId(i);
                user.setName("java");
                user.setAge(200);
                user.setManagerId(222);
                list.add(user);
            }
            System.out.println("拼装数据 耗时:"+(System.currentTimeMillis()-start));
            System.out.println(list.size());
        }
    
    
        @Test
        public void batchInsert() {
            SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
            UsersMapper mapper = sqlSession.getMapper(UsersMapper.class);
            System.out.println("batchInsert 插入开始========");
            long start = System.currentTimeMillis();
            for (int i = 0; i < list.size(); i++) {
                mapper.insert(list.get(i));
                if (i%5000==4999) {
                    sqlSession.flushStatements();
    //                sqlSession.commit();
    //                sqlSession.clearCache();
                }
            }
    //        sqlSession.commit();
    //        sqlSession.clearCache();
            sqlSession.flushStatements();
            System.out.println("SqlSession 批量插入耗时:"+(System.currentTimeMillis()-start));
        }
    
        @Test
        public void forEachInsert() {
            System.out.println("forEachInsert 插入开始========");
            long start = System.currentTimeMillis();
            for (int i = 0; i < list.size(); i++) {
                usersMapper.insert(list.get(i));
            }
            System.out.println("foreach 插入耗时:"+(System.currentTimeMillis()-start));
        }
    
        @Test
        public void sqlInsert() {
            System.out.println("sql 插入开始========");
            long start = System.currentTimeMillis();
            usersMapper.sqlInsert(list);
            System.out.println("sql 插入耗时:"+(System.currentTimeMillis()-start));
        }
    //xml批量插入
    
        @Test
        public void xmlInsert() {
            System.out.println("xmlInsert 批量插入开始========");
            long start = System.currentTimeMillis();
            usersMapper.xmlBatchInsert(list);
            System.out.println("xmlInsert 批量插入耗时:"+(System.currentTimeMillis()-start));
        }
    
    }
    
    //sql插入相关类
    @Repository
    public interface UsersMapper extends BaseMapper<Users> {
    
        @InsertProvider(type = UsersProvider.class, method = "insertListSql")
        public void sqlInsert(List<Users> list);
    
        public void xmlBatchInsert(@Param("list") List<Users> list);
    }
    
    public class UsersProvider {
    
        public String insertListSql(List<Users> list) {
            StringBuffer sqlList = new StringBuffer();
    
            sqlList.append(" INSERT INTO users(id,name,age,manager_id)  VALUES ");
            for (int i = 0; i < list.size() ; i++) {
                Users user = list.get(i);
                sqlList.append(" (").append(user.getId()).append(",").append("'").append(user.getName()).append("',").append(user.getAge())
                        .append(",").append(user.getManagerId()).append(")");
                if (i < list.size()-1) {
                    sqlList.append(",");
                }
            }
            return sqlList.toString();
        }
    }
    
    //xml 插入mapper文件
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.example.demo.dao.UsersMapper">
    
      <insert id="xmlBatchInsert">
        INSERT INTO users(id,name,age,manager_id)  VALUES
        <foreach collection="list" item="item" index="index" separator=",">
          (#{item.id},
          #{item.name},
          #{item.age},
          #{item.managerId})
        </foreach>
      </insert>
    </mapper>

    总结:

    sql插入的效率最高,sqlsession次之,mybatis框架foreach插入效率最低。

    执行效率echarts图:

     

    展开全文
  • 插入排序

    万次阅读 多人点赞 2019-12-09 19:49:16
    一、插入排序(InsertSort) 插入排序从第二个数开始,拿出第二个数进行向前插入排序,一直到最后一个数向前做插入排序。算法稳定。 插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。最好的时间复杂度是O(n),最...
  • 插入排序(图解)

    万次阅读 多人点赞 2019-05-20 10:58:28
    插入排序 1、直接插入排序 基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。 算法实现:直接插入排序是将无序序列中的数据插入到有序的序列中,在遍历无序序列时,...
  • 如何优雅的在 Microsoft word中插入代码

    万次阅读 多人点赞 2018-03-11 20:44:29
    一、工具方法1.打开这个网页PlanetB;...将你需要插入在word中的代码完整的复制到该网站提示的文本框内,选择你的代码类型,如C,C++,HTML等,并点击提交。如下图:2.该网页会自动将该代码生成到一个新的页面,此时ct...
  • Mysql 循环插入10000条数据

    万次阅读 2018-02-05 00:17:40
    前言:因为项目用user和data两张表,把user中的部分字段拆分到data中,这样两表都要通过user_id关联起来...1、所以,按自己想法,写个循环1W次随便插入数据测试 DROP PROCEDURE IF EXISTS proc_initData;--如果...
  • 排序算法~插入类排序

    万次阅读 多人点赞 2020-08-27 21:04:56
    插入类排序 本文是上一篇文章的后续,详情点击该链接~ 简介        在一个已经有序的序列中,插入一个新的元素到合适的位置中。我们就把它称之为插入类排序。这类排序比较常见的有...
  • 插入排序之直接插入排序

    千次阅读 2018-12-04 17:29:27
    插入排序之直接插入排序
  • MySQL批量插入与更新

    万次阅读 多人点赞 2019-05-20 16:07:36
     replace into与insert into on duplicate key update都可以实现批量的插入更新,更新还是插入取决与记录中的pk或uk,前者是先delete后insert,后者是update。 3. insert ignore into会忽略很多数据上的冲突与约束...
  • 插入排序:把一个数插入到一个有序的序列中,并要求插入后此数据序列仍然有序。这种排序思想就是插入排序。 那么对于一个原始无序的序列,哪里找有序的部分呢?这个很简单,可以把序列分为两个部分,第一个元素是第...
  • Latex如何插入图片

    万次阅读 多人点赞 2019-12-27 20:03:31
    在写报告或论文的过程中,几乎不可避免的要插入一些图片,并且根据不同情况及要求进行排版,例如如何插入单个图片、一行插入两张图片、插入两行两列图片等等。在此,汇总一下各种插入图片的方法。 插入单个图片 这种...
  • 文章目录一、前言二、批量插入前准备1、插入到数据表的字段2、计算一行字段占用的空间3、在数据里做插入操作的时候,整体时间的分配三、批量插入数据测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能...
  • Oracle 批量插入(insert all into)

    万次阅读 多人点赞 2018-06-14 13:40:34
    项目需要用到导入excel表,并解析数据批量插入到oracle数据库中。 1)直接解析excel,循环行,拼了sql,executeUpdate。 执行一波… 咦,这效率很低啊,有多少行数据就执行了多少句sql,基本是一万行已经接近...
  • Mysql插入语句之value与values区别

    万次阅读 多人点赞 2016-09-13 16:13:42
    看了一下官方文档,VALUE与VALUES都是正确的,经过验证,这两个也是可以混合着用的,只是两者对不同语句插入数量的执行效率各不相同。 VALUE插入一行 VALUES插入一行 可以看出在插入单行时,使用VALUES比较
  • 直接插入排序算法——C/C++

    万次阅读 多人点赞 2019-06-11 23:16:00
    直接插入排序 1、插入排序(Insertion-Sort)的基本思想: 每次将一个待排序的数据按照大小插入到前面已经排好序的适当位置,直到全部数据插入完成为止。 2、插入排序的步骤: 2.1、建立一个哨兵(即临时变量),把...
  • 一、直接插入排序。 1、介绍。 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。...
  • vim插入

    千次阅读 2018-10-13 07:06:46
    字符位置插入 i 在光标之前插入 a 在光标之后追加 行位置插入 A 在一行的结尾处追加 I 在一行的开头处插入 o 在光标所在位置的下一行打开新行插入 O 在光标所在位置的上一行打开新行...
  • 链表头部插入和尾部插入

    千次阅读 2019-07-03 10:08:51
    链表头部插入和尾部插入 头部插入 //头部插入法链表顺序与输入数据顺序相反 void NodeList::addToHead() { for (int i = 0; i < arrrlens; i++) { int node = arr_1[i]; Node* p = new Node(node, NULL); ...
  • INSERT 语句 增加条件,条件成立插入,否则不插入

    万次阅读 热门讨论 2017-06-07 03:09:29
    遇到一个sql插入的场景,就是在sql插入新数据的时候,直接在sql中判断条件是否满足,如果条件不满足则不插入新数据,某则插入新数据。 这里的场景是给用户发放金币,那么就有两个问题是需要注意的 1、用户可以领取...
  • 1.批量插入: 普通插入 INSERT INTO TBL_TEST (id) VALUES(1); 由于性能的瓶颈问题,MYSQL官方文档提到了使用批量化插入的方式,也就是在一句INSERT语句里面插入多个值。即, INSERT INTO TBL_TEST (id) ...
  • Python 插入排序

    万次阅读 2019-11-27 20:10:45
    Python 插入排序 基本原理: 把数组看作是已经排好序的,依次从剩余数组中取出待排序的数组,和前面已经排好序的数字做对比,如果遇到比它大的就插入到最后一个比它大的数字前面。 时间复杂度为O(n^2),n为数组的...
  • Mysql插入不重复的数据,当大数据量的数据需要插入值时,要判断插入是否重复,然后再插入,那么如何提高效率?解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的...
  • C++插入排序

    千次阅读 2021-02-16 11:30:57
    文章目录前言一、插入排序的基础知识点1.插入排序的排序原理2.插入排序的所属类别3.插入排序的算法复杂度二、插入排序动态图三、代码总结 前言 今天来和大家分享插入排序。 一、插入排序的基础知识点 1.插入排序...
  • 单链表插入节点——尾部插入

    千次阅读 2019-05-23 09:51:14
    首先构建一个节点结构体 创建构造节点的函数 尾部插入函数 打印插入结果 输出结果
  • 打开u盘提示请将磁盘插入“可移动磁盘”怎么办? 现在很多人每天都需要频繁使用u盘,遇到的问题也多种多样。我就遇到这样的问题:u盘插入电脑可以看到电脑盘符,但是双击打开时,却提示请将磁盘插入“可移动磁盘”...
  • 73-插入排序——直接插入排序

    千次阅读 多人点赞 2018-08-16 16:24:25
    1. 插入排序   插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。 2. 直接插入排序   假设待排序的记录存放在数组R[0 .. n...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,092,052
精华内容 1,236,820
关键字:

插入