Chèn mysql không hoạt động không có lỗi
MySQL cung cấp một số câu lệnh hữu ích khi cần 3 hàng sau khi xác định xem hàng đó thực tế là mới hay đã tồn tại Show
Dướ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 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' 4Sử dụng 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 3. Điều này có nghĩa là một câu lệnh 4 có chứa một giá trị trùng lặp trong chỉ mục 5 hoặc trường 6 không tạo ra lỗi mà thay vào đó sẽ bỏ qua hoàn toàn lệnh 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 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 9 của chúng tôi có thể đã chứa một vài bản ghi
Nếu chúng tôi có một lô lớn dữ liệu mới và hiện có cho 3 và một phần của dữ liệu đó chứa giá trị phù hợp cho trường 1 (là một 5 3 trong bảng), việc sử dụng một 3 cơ bản sẽ tạo ra lỗi dự kiến
Mặt khác, nếu chúng tôi sử dụng 4, nỗ lực sao chép sẽ bị bỏ qua và không có lỗi xảy ra
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) 3Trong trường hợp bạn thực sự muốn thay thế các hàng trong đó các lệnh 3 sẽ tạo ra lỗi do trùng lặp các giá trị 5 hoặc 6 như đã nêu ở trên, một tùy chọn là chọn câu lệnh 3Khi ban hành một câu lệnh 3, có hai kết quả có thể xảy ra cho mỗi lệnh được ban hành
Ví dụ: chúng ta có thể sử dụng 3 để hoán đổi bản ghi hiện tại của chúng ta về 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. Seuss 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ự 27 hàng hiện tại sau đó 28 hàng mới để thay thế hàng đóThông tin thêm về cách sử dụng 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) 1Phương pháp thay thế (và thường được ưu tiên) cho 71 thành các hàng có thể chứa các giá trị 5 hoặc 6 trùng lặp là sử dụng câu lệnh và mệnh đề 1Không giống như 3 – một lệnh vốn có tính hủy diệt do các lệnh 23 mà nó thực hiện khi cần thiết – sử dụng 1 không có tính hủy diệt, ở chỗ nó sẽ chỉ đưa ra các câu lệnh 3 hoặc 79, nhưng không bao giờ có 23Ví dụ: chúng tôi đã quyết định muốn thay thế bản ghi 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 3 ban đầu của mình và thêm mệnh đề 43 mới 7Lưu ý rằng chúng tôi đang sử dụng cú pháp 79 bình thường (nhưng loại trừ tên 45 và từ khóa 46 không cần thiết) và chỉ gán các giá trị 47. Ngoài ra, mặc dù không cần thiết để phương thức 43 hoạt động bình thường, chúng tôi cũng đã chọn sử dụng 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 3 hoặc 79 nhiều lần
Chúng tôi có thể sử dụng chèn thay vì cập nhật không?Không. Chèn sẽ chỉ tạo một hàng mới .
Làm thế nào chúng ta có thể chèn dữ liệu trong MySQL?Câu lệnh INSERT đơn giản để thêm dữ liệu vào bảng. Sử dụng câu lệnh INSERT để thêm nhiều hàng vào bảng . Mệnh đề INSERT INTO SELECT để chèn đầu ra được tạo bởi truy vấn SELECT. INSERT IGNORE mệnh đề để bỏ qua lỗi được tạo ra trong quá trình thực hiện truy vấn.
Chúng ta có thể sử dụng lệnh chèn với mệnh đề WHERE không?Sao chép các hàng cụ thể từ một bảng. Chúng ta có thể sao chép các hàng cụ thể từ một bảng để chèn vào một bảng khác bằng cách sử dụng mệnh đề WHERE với câu lệnh SELECT. Chúng ta phải cung cấp điều kiện thích hợp trong mệnh đề WHERE để chọn các hàng cụ thể
Cú pháp chính xác cho chức năng chèn trong MySQL là gì?CHÈN VÀO Cú pháp
. CHÈN VÀO tên_bảng (cột1, cột2, cột3,. ) |