精华内容
下载资源
问答
  • oracle一次插入多条数据(insert all)

    万次阅读 多人点赞 2018-04-19 15:43:24
    问题 公司的项目,有个功能每次使用需要向数据库插入很多数据,导致页面等待很长...改成一次插入多条数据,id通过触发器自动设置,不再每次先查询sequence,效率提高非常多。 oracle一次插入多条的方法 在oracle...

    分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/

    问题

    公司的项目,有个功能每次使用需要向数据库插入很多数据,导致页面等待很长时间才有结果。
    数据库:oracle11g
    id:采用sequence自增
    每次循环,都会查询一次sequence,然后insert一条数据,性能非常低。

    改进

    改成一次插入多条数据,id通过触发器自动设置,不再每次先查询sequence,效率提高非常多。

    oracle一次插入多条的方法

    在oracle里面,不支持像mysql那样直接在后面拼多个记录。oracle中有两种方法达到批量插入的效果:

    方法一:采用union all拼接查询方式

    本文不做详细介绍,可在网上查看相关资料。

    insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
              select 8000,0,'Multi 8000',1 from dual
    union all select 8001,0,'Multi 8001',1 from dual
    

    ##方法二:采用insert all的方式
    由于insert all方式插入多条时,通过sequence获取的值是同一个,不会自动获取多个,所以id需要通过其他方式设置,(我这里采用触发器方式自动设置id)

    1、创建测试表:

    create table test_insert(
           data_id number(10) primary key,
           user_name varchar2(30),
           address varchar2(50)
    )
    

    data_id为主键,通过sequence产生主键值。

    2、创建序列:

    create sequence seq_test_insert 
    minvalue 1
    maxvalue 999999999999999999999999
    start with 1
    increment by 1
    cache 20;
    

    3、创建触发器
    通过触发器自动给insert语句设置id值

    create or replace trigger tr_test_insert
    before insert on test_insert
    for each row
    begin
      select seq_test_insert.nextval into :new.data_id from dual;
    end;  
    

    4、插入测试数据:

    insert all 
    into test_insert(user_name,address) values('aaa','henan')
    into test_insert(user_name,address) values('bbb','shanghai')
    into test_insert(user_name,address) values('ccc','beijing')
    select * from dual;
    

    相当于下面三个insert into语句,但性能比单条高多了。

    insert into test_insert(user_name,address) values('aaa','henan');
    insert into test_insert(user_name,address) values('bbb','shanghai');
    insert into test_insert(user_name,address) values('ccc','beijing');
    

    需要注意的是,在insert all语句里不能直接使用seq_test_insert.nextval,因为即便每个into语句里都加上seq_test_insert.nextval也不会获得多个值。

    5、查看测试数据

    select * from test_insert;
    

    结果如下图:
    这里写图片描述

    另外,insert all还支持往不同的表里插入数据,如:

    insert all 
    into table1(filed1,filed2)values('value1','value2')
    into table2(字段1,字段2,字段3) values(值1,值2,值3)
    select * from dual;
    

    分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/

    展开全文
  • mysql插入多条数据的方法:1、使用“INSERT INTO 表名 字段列表 VALUES (值1) … , (值n);”语句插入数据;2、使用“INSERT INTO 表名 SET 字段1=值1,字段2= 值2,…”语句插入数据。数据库与表创建成功以后,需要向...

    mysql插入多条数据的方法:1、使用“INSERT INTO 表名 字段列表 VALUES (值1) … , (值n);”语句插入数据;2、使用“INSERT INTO 表名 SET 字段1=值1,字段2= 值2,…”语句插入数据。

    d88e296d79e4984f3300f9a0fa36eb79.png

    数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。

    基本语法

    INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。

    1) INSERT…VALUES语句

    INSERT VALUES 的语法格式为:INSERT INTO [ [ , … ] ]

    VALUES (值1) [… , (值n) ];

    语法说明如下。:指定被操作的表名。

    :指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERTVALUES(…) 即可。

    VALUES 或 VALUE 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。

    2) INSERT…SET语句

    语法格式为:INSERT INTO

    SET = ,

    = ,

    此语句用于直接给表中的某些列指定对应的列值,即要插入的数据的列名在 SET 子句中指定,col_name 为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。

    由 INSERT 语句的两种形式可以看出:使用 INSERT…VALUES 语句可以向表中插入一行数据,也可以插入多行数据;

    使用 INSERT…SET 语句可以指定插入行中每列的值,也可以指定部分列的值;

    INSERT…SELECT 语句向表中插入其他表的数据。

    采用 INSERT…SET 语句可以向表中插入部分列的值,这种方式更为灵活;

    INSERT…VALUES 语句可以一次插入多条数据。

    在 MySQL 中,用单条 INSERT 语句处理多个插入要比使用多条 INSERT 语句更快。

    当使用单条 INSERT 语句插入多行数据的时候,只需要将每行数据用圆括号括起来即可。

    向表中的全部字段添加值

    在 test_db 数据库中创建一个课程信息表 tb_courses,包含课程编号 course_id、课程名称 course_name、课程学分 course_grade 和课程备注 course_info,输入的 SQL 语句和执行结果如下所示。mysql> CREATE TABLE tb_courses

    -> (

    -> course_id INT NOT NULL AUTO_INCREMENT,

    -> course_name CHAR(40) NOT NULL,

    -> course_grade FLOAT NOT NULL,

    -> course_info CHAR(100) NULL,

    -> PRIMARY KEY(course_id)

    -> );

    Query OK, 0 rows affected (0.00 sec)

    向表中所有字段插入值的方法有两种:一种是指定所有字段名;另一种是完全不指定字段名。

    【实例 1】在 tb_courses 表中插入一条新记录,course_id 值为 1,course_name 值为“Network”,course_grade 值为 3,info 值为“Computer Network”。

    在执行插入操作之前,查看 tb_courses 表的SQL语句和执行结果如下所示。mysql> SELECT * FROM tb_courses;

    Empty set (0.00 sec)

    查询结果显示当前表内容为空,没有数据,接下来执行插入数据的操作,输入的 SQL 语句和执行过程如下所示。mysql> INSERT INTO tb_courses

    -> (course_id,course_name,course_grade,course_info)

    -> VALUES(1,'Network',3,'Computer Network');

    Query OK, 1 rows affected (0.08 sec)

    mysql> SELECT * FROM tb_courses;

    +-----------+-------------+--------------+------------------+

    | course_id | course_name | course_grade | course_info |

    +-----------+-------------+--------------+------------------+

    | 1 | Network | 3 | Computer Network |

    +-----------+-------------+--------------+------------------+

    1 row in set (0.00 sec)

    可以看到插入记录成功。在插入数据时,指定了 tb_courses 表的所有字段,因此将为每一个字段插入新的值。

    INSERT 语句后面的列名称顺序可以不是 tb_courses 表定义时的顺序,即插入数据时,不需要按照表定义的顺序插入,只要保证值的顺序与列字段的顺序相同就可以。

    【实例 2】在 tb_courses 表中插入一条新记录,course_id 值为 2,course_name 值为“Database”,course_grade 值为 3,info值为“MySQL”。输入的 SQL 语句和执行结果如下所示。mysql> INSERT INTO tb_courses

    -> (course_name,course_info,course_id,course_grade)

    -> VALUES('Database','MySQL',2,3);

    Query OK, 1 rows affected (0.08 sec)

    mysql> SELECT * FROM tb_courses;

    +-----------+-------------+--------------+------------------+

    | course_id | course_name | course_grade | course_info |

    +-----------+-------------+--------------+------------------+

    | 1 | Network | 3 | Computer Network |

    | 2 | Database | 3 | MySQL |

    +-----------+-------------+--------------+------------------+

    2 rows in set (0.00 sec)

    使用 INSERT 插入数据时,允许列名称列表 column_list 为空,此时值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。

    【实例 3】在 tb_courses 表中插入一条新记录,course_id 值为 3,course_name 值为“Java”,course_grade 值为 4,info 值为“Jave EE”。输入的 SQL 语句和执行结果如下所示。mysql> INSERT INTO tb_courses

    -> VLAUES(3,'Java',4,'Java EE');

    Query OK, 1 rows affected (0.08 sec)

    mysql> SELECT * FROM tb_courses;

    +-----------+-------------+--------------+------------------+

    | course_id | course_name | course_grade | course_info |

    +-----------+-------------+--------------+------------------+

    | 1 | Network | 3 | Computer Network |

    | 2 | Database | 3 | MySQL |

    | 3 | Java | 4 | Java EE |

    +-----------+-------------+--------------+------------------+

    3 rows in set (0.00 sec)

    INSERT 语句中没有指定插入列表,只有一个值列表。在这种情况下,值列表为每一个字段列指定插入的值,并且这些值的顺序必须和 tb_courses 表中字段定义的顺序相同。

    注意:虽然使用 INSERT 插入数据时可以忽略插入数据的列名称,若值不包含列名称,则 VALUES 关键字后面的值不仅要求完整,而且顺序必须和表定义时列的顺序相同。如果表的结构被修改,对列进行增加、删除或者位置改变操作,这些操作将使得用这种方式插入数据时的顺序也同时改变。如果指定列名称,就不会受到表结构改变的影响。

    向表中指定字段添加值

    为表的指定字段插入数据,是在 INSERT 语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。

    【实例 4】在 tb_courses 表中插入一条新记录,course_name 值为“System”,course_grade 值为 3,course_info 值为“Operating System”,输入的 SQL 语句和执行结果如下所示。mysql> INSERT INTO tb_courses

    -> (course_name,course_grade,course_info)

    -> VALUES('System',3,'Operation System');

    Query OK, 1 rows affected (0.08 sec)

    mysql> SELECT * FROM tb_courses;

    +-----------+-------------+--------------+------------------+

    | course_id | course_name | course_grade | course_info |

    +-----------+-------------+--------------+------------------+

    | 1 | Network | 3 | Computer Network |

    | 2 | Database | 3 | MySQL |

    | 3 | Java | 4 | Java EE |

    | 4 | System | 3 | Operating System |

    +-----------+-------------+--------------+------------------+

    4 rows in set (0.00 sec)

    可以看到插入记录成功。如查询结果显示,这里的 course_id 字段自动添加了一个整数值 4。这时的 course_id 字段为表的主键,不能为空,系统自动为该字段插入自增的序列值。在插入记录时,如果某些字段没有指定插入值,MySQL 将插入该字段定义时的默认值。

    使用 INSERT INTO…FROM 语句复制表数据

    INSERT INTO…SELECT…FROM 语句用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。

    SELECT 子句返回的是一个查询到的结果集,INSERT 语句将这个结果集插入指定表中,结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。

    在数据库 test_db 中创建一个与 tb_courses 表结构相同的数据表 tb_courses_new,创建表的 SQL 语句和执行过程如下所示。mysql> CREATE TABLE tb_courses_new

    -> (

    -> course_id INT NOT NULL AUTO_INCREMENT,

    -> course_name CHAR(40) NOT NULL,

    -> course_grade FLOAT NOT NULL,

    -> course_info CHAR(100) NULL,

    -> PRIMARY KEY(course_id)

    -> );

    Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT * FROM tb_courses_new;

    Empty set (0.00 sec)

    【实例 5】从 tb_courses 表中查询所有的记录,并将其插入 tb_courses_new 表中。输入的 SQL 语句和执行结果如下所示。mysql> INSERT INTO tb_courses_new

    -> (course_id,course_name,course_grade,course_info)

    -> SELECT course_id,course_name,course_grade,course_info

    -> FROM tb_courses;

    Query OK, 4 rows affected (0.17 sec)

    Records: 4 Duplicates: 0 Warnings: 0

    mysql> SELECT * FROM tb_courses_new;

    +-----------+-------------+--------------+------------------+

    | course_id | course_name | course_grade | course_info |

    +-----------+-------------+--------------+------------------+

    | 1 | Network | 3 | Computer Network |

    | 2 | Database | 3 | MySQL |

    | 3 | Java | 4 | Java EE |

    | 4 | System | 3 | Operating System |

    +-----------+-------------+--------------+------------------+

    4 rows in set (0.00 sec)

    展开全文
  • PHP MySQL 插入多条数据

    2021-01-03 01:16:55
    使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句。 以下实例向 “MyGuests” 表添加了三条新的记录: 实例 (MySQLi – 面向对象) connect_error) { die(连接失败: . $...
  • 插入多条数据

    2012-12-16 22:56:22
    Array ( [0] => /htdocs/uploads/resource/20121216145006_4246.docx [1] => /htdocs/uploads/resource/20121216145006_5567.docx ) ...如何将上面数组分两记录插入数据库?即[0]一,[1]一
  • 主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助
  • mysql插入多条数据

    2019-10-16 19:56:31
    mysql批量插入多条数据 mysql批量插入多条数据 不要多条insert into tablename value(??,?? 可以拆开成为一条sql语句例如:insert into tablename values(??,??),(??,??)

    mysql批量插入多条数据

    mysql批量插入多条数据

    不要多条insert into tablename value(??,??
    可以拆开成为一条sql语句例如:insert into tablename values(??,??),(??,??)

    展开全文
  • MySQL插入一条、一次性插入多条数据

    完整语句

    insert into t_resource_category(category_name) values ('教学活动小助手'),('亲自小学堂'),('培训教室'),('GT课程')
    

    注释:

    1. 基本插入语句:
      INSERT INTO table_name (1,2,...) VALUES (1,2,....)
      
    2. 一次性插入多条:只需要将values后面用多个括号放置多个需要插入的数据就好

    效果

    在这里插入图片描述

    展开全文
  • 这种方式只能够一次插入一条数据,要想插入多条数据,就得多次调用此sql语句,意味着多次与数据库建立连接。但是这样一来,就会增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等...
  • Mybatis插入多条数据,使用标签解释:collection:传入的参数,可以在dao层方法里定义@Param别名index:循环的下标separator:每个对象的分隔符(也是进行下一次循环的标识符)item:集合中元素迭代时的别名————...
  • HYPHP2.0已经废弃1.0中的InsertAll方法可以直接使用insert进行插入多条数据//多条数据插入使用多维数组即可S('table')->insert([["user_name"=>"foo","email"=>"foo@bar.com","age"=>25,"city"=>"New...
  • MongoDB插入多条数据

    2018-03-30 17:39:00
    刚开始学mongodb,只知道几个命令,insert插入也只能一条一条插入,而在实际情况下数据一般都...insertMany方法可以插入多条数据,但写法也是有要求的,在shell中这样写插入 try { db.products.insertMany( [ ...
  • 这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助假如有一个数据表A:idnametitleaddtime如果需要插入n条数据 :$time= time();$data = array(array('...
  • 最近应该百分之九十的人都在吃瓜吧~但是也不要忘记学习哦 本文实例讲述了PHP使用PDO创建MySQL数据库、表及插入多条数据操作。分享给大家供大家参考,具体如下:创建 MySQL 数据库:<?php $servername = ...
  • mongodb插入多条数据

    2020-04-18 22:08:59
    插入多条数据: db.sales.insertMany([ { "_id" : 1, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("2"), "date" : ISODate("2014-03-01T08:00:00Z") }, { "_id" : 2, "item" : "jkl...
  • Oracle一次插入多条数据 oracle不像mysql那样可以在values后面添加多个插入的值,mysql具体操作 mysql插入多条数据 -- mysql插入多行代码 insert into CB_PRACTICE(id_, type_,remark) values (5,'物理','浮力'),(6,...
  • 一条sql插入多条数据并且已存在的数据不会进行插入场景:sql:解决:用ignore替换into总结:ignore会忽略有冲突(错误)的执行语句,可以在批量操作时保证顺利执行下去。 场景: 需要一条sql插入多条数据,但是有...
  • PHP MySQL 插入多条数据一般情况...使用 MySQLi 和 PDO 向 MySQL 插入多条数据mysqli_multi_query() 函数可用来执行多条SQL语句。以下实例向 "MyGuests" 表添加了三条新的记录:实例 (MySQLi - 面向对象)$servername...
  • yii 插入多条数据

    千次阅读 2014-05-28 17:26:51
    yii 插入多条数据
  • PHP MySQL 插入多条数据使用 MySQLi 和 PDO 向 MySQL 插入多条数据mysqli_multi_query() 函数可用来执行多条SQL语句。以下实例向 "MyGuests" 表添加了三条新的记录:实例 (MySQLi - 面向对象)...
  • insert插入多条数据

    2017-06-19 11:45:56
    1、在mysql中使用insert插入多条数据 如下 表a name age         表b id name age 1 Lily 12 2 echo 12 将b表中的数据插入到表中的...
  • 主题: 插入多条数据添加约束 首先我们先要创建一个表, 然后根据表结构写出建表语句 并插入一条测试数据 并添加约束。 创建学生表默认表空间: 添加not null约束: 接下来插入数据: 使用INSERT INTO插入创建的表...
  • 主要介绍了mysql 一次向表中插入多条数据实例讲解的相关资料,需要的朋友可以参考下
  • MySQL批量插入多条数据

    千次阅读 2018-07-10 17:15:49
    Mysql在插入大量数据(十万级或者百万级别)时效率会变得很差,所以需要采用以下方法来提高其插入效率。a) 关闭自动提交 改为手动提交 ...b) 拆分数据,多线程入库c) 一条插入语句插入多条数据insert into tableN...
  • 本文实例讲述了PHP使用PDO创建MySQL数据库、表及插入多条数据操作。分享给大家供大家参考,具体如下:创建 MySQL 数据库:
  • 主要介绍了PHP使用PDO创建MySQL数据库、表及插入多条数据操作,结合实例形式总结分析了php基于pdo的mysql数据库创建、数据表创建以及多条数据插入操作相关实现技巧,需要的朋友可以参考下
  • 插入多条数据,.net中的datagridview 控件用法 可以一次添加多条数据往数据库中
  • 数据访问层使用对象方式同时插入多条数据 插入一条数据并获得返回该数据的主键。 1 public int SendMessage(InternalMessage IM, string[] IMPStaffID) 2 { 3 ...
  • 创建数据库: CREATE TABLE dept( did INT PRIMARY KEY AUTO_INCREMENT, -- 部门号 ...插入多条数据记录: (1)方法一:依次输入插入数据 INSERT INTO dept (NAME,did) VALUES ('财务部',1); INSERT INTO dep

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,481
精华内容 2,992
关键字:

插入多条数据