MySQL cung cấp một số câu lệnh hữu ích khi cầ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'
3 hàng sau khi xác định xem hàng đó thực tế là mới hay đã tồn tạiDưới đây, chúng ta sẽ xem xét ba phương pháp khác nhau và lần lượt giải thích ưu và nhược điểm của từng phương pháp để bạn nắm vững cách định cấu hình các câu lệnh của riêng mình khi cung cấp dữ liệu mới hoặc có khả năng tồn tại cho
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'
0Sử dụ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'
4
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'
Sử dụ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'
4 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 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'
3. Điều này có nghĩa là một câu 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'
4 có chứa một giá trị trùng lặp trong chỉ mụ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'
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ẽ bỏ qua hoàn toàn 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'
3 cụ thể đó. Mục đích rõ ràng là để thực thi một số lượng lớn các câu 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'
3 cho sự kết hợp của dữ liệu đã tồn tại trong cơ sở dữ liệu cũng như dữ liệu mới được đưa vào hệ thốngVí 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 ghimysql> 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 tôi có một lô lớn dữ liệu mới và hiện có cho
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'
3 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à một 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], việc sử dụng một 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'
3 cơ bản sẽ tạo ra lỗi dự kiếnmysql> 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 tôi sử dụ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'
4, nỗ lực sao chép sẽ bị bỏ qua và không có lỗi xảy ramysql> 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 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]
3
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]
Trong trường hợp bạn thực sự muốn thay thế các hàng trong đó các 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'
3 sẽ tạo ra lỗi do trùng lặp các giá trị 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 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]
3Khi ban hành một câu lệnh
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]
3, có hai kết quả có thể xảy ra cho mỗi lệnh được ban hành- Không tìm thấy hàng dữ liệu hiện có nào có giá trị phù hợp và do đó, một câu lệnh
3 tiêu chuẩn được thực hiệnmysql> 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 hàng dữ liệu phù hợp được tìm thấy, làm cho hàng hiện có đó bị xóa bằng câu lệnh
23 tiêu chuẩn, sau đó mộtmysql> 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'
3 bình thường được thực hiện sau đó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'
Ví dụ: chúng ta có thể sử dụng
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]
3 để hoán đổi bản ghi hiện tại của chúng ta về 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'
26 của Tìm kiếm thời gian đã mất của Marcel Proust với Green Eggs and Ham của Dr. Seussmysql> 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'
2Lưu ý rằng mặc dù chúng tôi chỉ thay đổi một hàng, nhưng kết quả cho thấy rằng hai hàng đã bị ảnh hưởng vì chúng tôi thực sự
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'
27 hàng hiện tại sau đó 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'
28 hàng mới để thay thế hàng đóThông tin thêm về cách sử dụng
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]
3 có thể được tìm thấy trong tài liệu chính thứcSử dụ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
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]
Phương pháp thay thế [và thường được ưu tiên] cho
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'
71 thành các hàng có thể chứa các giá trị 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 trùng lặp là sử dụng câu lệnh và mệnh đề 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]
1Không giống như
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]
3 – một lệnh vốn có tính hủy diệt do các 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'
23 mà nó thực hiện khi cần thiết – sử dụ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 không có tính hủy diệt, ở chỗ nó sẽ chỉ đưa ra các câu 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'
3 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'
79, nhưng không bao giờ 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'
23Ví dụ: chúng tôi đã quyết định muốn thay thế bản ghi
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'
26 của Green Eggs and Ham và hoàn nguyên nó về bản ghi gốc Tìm kiếm thời gian đã mất để thay thế. Do đó, chúng tôi có thể lấy câu 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'
3 ban đầu của mình và thêm mệ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'
43 mớimysql> 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'
7Lưu ý rằng chúng tôi đang sử dụng cú phá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'
79 bình thường [nhưng loại trừ tê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'
45 và từ khóa 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'
46 không cần thiết] và chỉ gán các giá trị 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'
47. Ngoài ra, mặc dù không cần thiết để phương thứ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'
43 hoạt động bình thường, chúng tôi cũng đã chọn sử dụ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'
49 vì vậy chúng tôi không cần chỉ định các giá trị thực mà chúng tôi muố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'
3 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'
79 nhiều lần