MySQL cung cấp một số câu lệnh hữu ích khi cần thiết để Dưới đây, chúng tôi sẽ kiểm tra ba phương pháp khác nhau và giải thích những ưu và nhược điểm của từng phương pháp lần lượt để bạn nắm bắt chắc chắn cách định cấu hình các câu lệnh của riêng bạn khi cung cấp dữ liệu mới hoặc có khả năng hiện có cho ____10. Sử dụng INSERT IGNORE
REPLACE
INSERT ... ON DUPLICATE KEY UPDATE
INSERT
hàng sau khi xác định liệu hàng đó trên thực tế, mới hay đã tồn tại.Sử dụng
INSERT IGNORE
INSERT IGNORE
một cách hiệu quả khiến MySQL bỏ qua các lỗi thực thi trong khi cố gắng thực hiện các câu lệnh INSERT
. Điều này có nghĩa là một câu lệnh INSERT IGNORE
chứa giá trị trùng lặp trong trường
5 hoặc trường mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
6 không tạo ra lỗi, mà thay vào đó sẽ hoàn toàn bỏ qua lệnh mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
INSERT
cụ thể đó. Mục đích rõ ràng là thực hiện một số lượng lớn các câu lệnh ____99 cho sự kết hợp dữ liệu cả hai đã tồn tại trong cơ sở dữ liệu cũng như dữ liệu mới đi vào hệ thống.does not produce an error, but will instead simply ignore that particular INSERT
command entirely. The obvious purpose
is to execute a large number of INSERT
statements for a combination of data that is both already existing in the database as well as new data coming into the system.
Ví dụ: bảng
mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
9 của chúng tôi có thể chứa một vài bản ghi:mysql> SELECT * FROM books LIMIT 3;
+----+-------------------------+---------------------+----------------+
| id | title | author | year_published |
+----+-------------------------+---------------------+----------------+
| 1 | In Search of Lost Time | Marcel Proust | 1913 |
| 2 | Ulysses | James Joyce | 1922 |
| 3 | Don Quixote | Miguel de Cervantes | 1605 |
+----+-------------------------+---------------------+----------------+
3 rows in set [0.00 sec]
Nếu chúng ta có một loạt lớn dữ liệu mới và hiện có cho INSERT
và một phần của dữ liệu đó chứa giá trị phù hợp cho trường
mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
1 [đó là mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
5 mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
3 trong bảng], sử dụng INSERT
cơ bản sẽ tạo ra lỗi dự kiến:mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
Mặt khác, nếu chúng ta sử dụng INSERT IGNORE
, nỗ lực trùng lặp bị bỏ qua và không có lỗi kết quả xảy ra:
mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
Sử dụng REPLACE
Sử dụng INSERT ... ON DUPLICATE KEY UPDATE
MySQL cung cấp một số câu lệnh hữu ích khi cần thiết để INSERT
hàng sau khi xác định liệu hàng đó trên thực tế, mới hay đã tồn tại.
- Dưới đây, chúng tôi sẽ kiểm tra ba phương pháp khác nhau và giải thích những ưu và nhược điểm của từng phương pháp lần lượt để bạn nắm bắt chắc chắn cách định cấu hình các câu lệnh của riêng bạn khi cung cấp dữ liệu mới hoặc có khả năng hiện có cho ____10.
- Sử dụng
INSERT IGNORE
một cách hiệu quả khiến MySQL bỏ qua các lỗi thực thi trong khi cố gắng thực hiện các câu lệnhINSERT
. Điều này có nghĩa là một câu lệnhINSERT IGNORE
chứa giá trị trùng lặp trong trường
5 hoặc trườngmysql> INSERT INTO books [id, title, author, year_published] VALUES [1, 'Green Eggs and Ham', 'Dr. Seuss', 1960]; ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
6 không tạo ra lỗi, mà thay vào đó sẽ hoàn toàn bỏ qua lệnhmysql> INSERT INTO books [id, title, author, year_published] VALUES [1, 'Green Eggs and Ham', 'Dr. Seuss', 1960]; ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
INSERT
cụ thể đó. Mục đích rõ ràng là thực hiện một số lượng lớn các câu lệnh ____99 cho sự kết hợp dữ liệu cả hai đã tồn tại trong cơ sở dữ liệu cũng như dữ liệu mới đi vào hệ thống.
Ví dụ: bảng
mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
9 của chúng tôi có thể chứa một vài bản ghi:Nếu chúng ta có một loạt lớn dữ liệu mới và hiện có cho INSERT
và một phần của dữ liệu đó chứa giá trị phù hợp cho trường
mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
1 [đó là mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
5 mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
3 trong bảng], sử dụng INSERT
cơ bản sẽ tạo ra lỗi dự kiến:Mặt khác, nếu chúng ta sử dụng INSERT IGNORE
, nỗ lực trùng lặp bị bỏ qua và không có lỗi kết quả xảy ra:two rows were affected because we actually
mysql> REPLACE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 2 rows affected [0.00 sec]
7 the existing row then mysql> REPLACE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 2 rows affected [0.00 sec]
8 the new row to replace it.Trong trường hợp bạn muốn thực sự thay thế các hàng trong đó các lệnh INSERT
sẽ tạo ra các lỗi do các giá trị sao chép
mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
5 hoặc mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
6 Như đã nêu ở trên, một tùy chọn là chọn câu lệnh REPLACE
.Sử dụng INSERT ... ON DUPLICATE KEY UPDATE
MySQL cung cấp một số câu lệnh hữu ích khi cần thiết để INSERT
hàng sau khi xác định liệu hàng đó trên thực tế, mới hay đã tồn tại.
Dưới đây, chúng tôi sẽ kiểm tra ba phương pháp khác nhau và giải thích những ưu và nhược điểm của từng phương pháp lần lượt để bạn nắm bắt chắc chắn cách định cấu hình các câu lệnh của riêng bạn khi cung cấp dữ liệu mới hoặc có khả năng hiện có cho ____10.
Sử dụng INSERT IGNORE
một cách hiệu quả khiến MySQL bỏ qua các lỗi thực thi trong khi cố gắng thực hiện các câu lệnh INSERT
. Điều này có nghĩa là một câu lệnh INSERT IGNORE
chứa giá trị trùng lặp trong trường
mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
5 hoặc trường mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
6 không tạo ra lỗi, mà thay vào đó sẽ hoàn toàn bỏ qua lệnh INSERT
cụ thể đó. Mục đích rõ ràng là thực hiện một số lượng lớn các câu lệnh ____99 cho sự kết hợp dữ liệu cả hai đã tồn tại trong cơ sở dữ liệu cũng như dữ liệu mới đi vào hệ thống.mysql> SET @id = 1,
@title = 'In Search of Lost Time',
@author = 'Marcel Proust',
@year_published = 1913;
INSERT INTO books
[id, title, author, year_published]
VALUES
[@id, @title, @author, @year_published]
ON DUPLICATE KEY UPDATE
title = @title,
author = @author,
year_published = @year_published;
Ví dụ: bảng
mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
9 của chúng tôi có thể chứa một vài bản ghi:Nếu chúng ta có một loạt lớn dữ liệu mới và hiện có cho INSERT
và một phần của dữ liệu đó chứa giá trị phù hợp cho trường
mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
1 [đó là mysql> INSERT INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
ERROR 1062 [23000]: Duplicate entry '1' for key 'PRIMARY'
5 mysql> INSERT IGNORE INTO books
[id, title, author, year_published]
VALUES
[1, 'Green Eggs and Ham', 'Dr. Seuss', 1960];
Query OK, 0 rows affected [0.00 sec]
3 trong bảng], sử dụng INSERT
cơ bản sẽ tạo ra lỗi dự kiến:mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title | author | year_published |
+----+------------------------+---------------+----------------+
| 1 | In Search of Lost Time | Marcel Proust | 1913 |
+----+------------------------+---------------+----------------+
1 row in set [0.00 sec]
Mặt khác, nếu chúng ta sử dụng INSERT IGNORE
, nỗ lực trùng lặp bị bỏ qua và không có lỗi kết quả xảy ra: