Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để thực hiện chèn hàng loạt trong MySQL?

Chèn hàng loạt trong MySQL là khi bạn cần chèn nhiều bản ghi vào một bảng cùng một lúc. Nó có thể được sử dụng để nhanh chóng tạo dữ liệu để thử nghiệm. Thật là mệt mỏi khi phải viết lại câu lệnh insert cho mọi hàng. Đây là cách bạn có thể chèn hàng loạt vào MySQL.

Chèn hàng loạt trong MySQL

Cú pháp

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..;

a1, a2, a3, .. - giá trị cho trường 1
b1, b2, b3, .. - giá trị cho trường 2
c1, c2, c3, .. - giá trị cho trường 3

Ví dụ
Đối với bảng table_name với các cột a, b, c

mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3);
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
+------+------+------+

Như bạn có thể thấy, chèn hàng loạt trong MySQL cho phép các hàng / cột trùng lặp. Nó có thể gây ra các khóa chính trùng lặp. Đây là cách bạn có thể tránh nó.

Chèn hàng loạt trong MySQL mà không có bản sao

Chúng tôi sử dụng điều khoản ON DUPLICATE KEY. Nó phát hiện các giá trị trùng lặp của khóa chính. Chúng tôi cũng thêm điều khoản CẬP NHẬT để cập nhật giá trị trùng lặp.

Cú pháp

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..
                       ON DUPLICATE KEY
                       UPDATE primary_key_field=<expression> ;

a1, a2, a3, .. - giá trị cho trường 1
b1, b2, b3, .. - giá trị cho trường 2
c1, c2, c3, .. - giá trị cho trường 3

Ví dụ
Đối với bảng table_name với các cột a, b, c c là khóa chính

mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3)
ON DUPLICATE KEY UPDATE c=c+1;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   4  |
+------+------+------+

Bạn cũng có thể cập nhật giá trị dựa trên các cột khác

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo ứng dụng web từ Scratch bằng Python Flask và MySQL:Phần 3

  2. MySQL ERROR 1290 (HY000) - tùy chọnsecure-file-priv

  3. Tại sao tính năng tự động tăng của MySQL lại tăng trên các lần chèn không thành công?

  4. SQL Server tương đương với hàm substring_index trong MySQL

  5. Khóa ngoại có thể tham chiếu đến một chỉ mục không phải là duy nhất không?