1. 程式人生 > >Oracle和Mysql-可行的插入多條記錄的SQL語句(總結)

Oracle和Mysql-可行的插入多條記錄的SQL語句(總結)

Oracle資料批量插入:

    (1) 多個insert語句放在begin - end裡面。

        例:

            BEGIN
INSERT INTO tbl(id,last_name,gender) 
VALUES(seq.nextval,'name1','f');
INSERT INTO tbl(id,last_name,gender) 
VALUES(seq.nextval,'name2','m');

            END;

    (2) 利用中間表。

        例:

            INSERT INTO tbl(id,last_name,gender) 
SELECT seq.nextval,last_name,gender FROM     (
SELECT 'name1' last_name,'f' gender FROM DUAL
UNION
SELECT 'name2' last_name,'m' gender FROM DUAL

)

MySQL資料批量插入:

    (1) (這裡以Mybatis為例)多條通過分號;分開的insert語句,前提是要設定資料庫連線屬性allowMultiQueries為true。

        例:

            開啟allowMultiQueries。

            jdbc:mysql://localhost:3306/mysqldb?allowMultiQueries=true

            <insert id="addEmps">
<foreach collection="emps" item="emp" separator=";">
insert into tbl_employee(last_name,email,gender,d_id)
values(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
</foreach>
    </insert>

    (2) 用逗號分開的語句-values(),(),()

        例:

            INSERT INTO tbl(last_name,gender) VALUES("nam1",'f'),("name2",'m');

    (3) 在insert語句中加入子查詢

        INSERT INTO tbl(last_name,gender)
            SELECT last_name,gender FROM tbl2;