MySQL – Cách chèn một hàng mới chỉ khi dữ liệu không tồn tại

Mysql Cach Chen Mot Hang Moi Chi Khi Du Lieu Khong Ton Tai



MySQL là một RDBMS nguồn mở nổi tiếng để lưu trữ dữ liệu trong cơ sở dữ liệu. Chèn dữ liệu vào các bảng trong cơ sở dữ liệu của bạn là một nhiệm vụ phổ biến. Đôi khi, người dùng không muốn chèn dữ liệu trùng lặp để loại bỏ sự dư thừa. MySQL chỉ cho phép người dùng chèn dữ liệu nếu dữ liệu tương tự chưa tồn tại.

Bài đăng này sẽ thảo luận về việc chèn một hàng mới chỉ khi dữ liệu chưa tồn tại trong bảng MySQL. Trước khi bắt đầu với bài đăng này, hãy đảm bảo rằng bạn đã đăng nhập vào máy chủ cục bộ MySQL của mình và đã chọn cơ sở dữ liệu mà bạn muốn làm việc.

Chỉ chèn một hàng mới nếu dữ liệu không tồn tại bằng câu lệnh “INSERT IGNORE”

Chà, câu trả lời cho câu hỏi trong tiêu đề khá đơn giản và dễ hiểu. Đơn giản chỉ cần sử dụng “ CHÈN ” từ khóa cùng với “ PHỚT LỜ ” Từ khóa. Điều này sẽ đảm bảo rằng dữ liệu mới hoặc truy vấn chèn chỉ được thực thi khi không tìm thấy mục nhập dữ liệu trước đó trong MySQL. Để có cái nhìn tổng quan ngắn gọn về điều này, hãy xem cú pháp sau:







CHÈN PHỚT LỜ VÀO TRONG [ bàn - tên ] ( [ cột1 - tên ] , [ cột2 - tên ] , [ cột3 - tên ] ) GIÁ TRỊ ( [ giá trị1 ] , [ giá trị2 ] , [ giá trị3 ] ) ;

Hãy xem một ví dụ nếu người dùng muốn nhập một giá trị hàng “ 1 ”, “ John ' Và ' chim bồ câu ' bên trong ' Khách hàng ” bảng cho các cột “ Nhận dạng ”“ Tên đầu tiên ' Và ' Họ ' tương ứng. Chạy truy vấn này để chèn các giá trị này nếu có nếu chưa có hàng nào chứa các giá trị này:



LỰA CHỌN * TỪ Khách hàng;
CHÈN PHỚT LỜ VÀO TRONG Khách hàng ( Nhận dạng , Tên đầu tiên , Họ ) GIÁ TRỊ ( 1 , 'John' , 'Doe' ) ;

Đầu ra chứa hai bảng hiển thị dữ liệu của bảng trước và sau khi thực hiện truy vấn. Bạn có thể nhận thấy không có gì thay đổi trong bảng vì hàng đã tồn tại nên MySQL đã bỏ qua thành công quá trình chèn mà không hiển thị lỗi:







Chèn một Hàng mới Chỉ khi Dữ liệu không tồn tại Sử dụng Mệnh đề “WHERE NOT EXISTS”

Trong MySQL, “ Ở ĐÂU KHÔNG TỒN TẠI ” mệnh đề ngăn chặn việc chèn các hàng nếu chúng đã tồn tại trong bảng khi nó được sử dụng trong “ CHÈN VÀO ” với một truy vấn phụ để xác định một điều kiện. Khi mệnh đề này được sử dụng với truy vấn con “ (CHỌN * TỪ [tên bảng] [tên cột]=[biểu thức]); ” kiểm tra xem một hàng tồn tại trong bảng có đáp ứng điều kiện hay không. Nếu một hàng tồn tại, “ KHÔNG TỒN TẠI ” mệnh đề sẽ trả về một giá trị sai, và “ LỰA CHỌN ” câu lệnh sẽ không trả về bất kỳ hàng nào. Kết quả là hàng sẽ không được chèn vào bảng. Cú pháp được cung cấp dưới đây:

CHÈN VÀO TRONG [ bàn - tên ] ( [ cột1 - tên ] , [ cột2 - tên ] , [ cột3 - tên ] )
LỰA CHỌN [ giá trị1 ] , [ giá trị2 ] , [ giá trị3 ]
Ở ĐÂU KHÔNG TỒN TẠI ( LỰA CHỌN * TỪ [ bàn - tên ] [ cột - tên ] = [ sự biểu lộ ] ) ;

Hãy xem một ví dụ nếu người dùng muốn chèn một hàng trong bảng nhân viên có chứa các giá trị “ 1 ”, “ Người Mỹ ' Và ' Henriot ” trong các cột “ nhận dạng ”, “ Tên công ty ' Và ' Tên Liên lạc ' tương ứng. Nhưng chỉ khi một hàng có id là “ 1 ” không tìm thấy trong bảng hoặc nó không tồn tại. Trong trường hợp cụ thể đó, truy vấn sẽ trở thành:



LỰA CHỌN * TỪ người lao động;

CHÈN VÀO TRONG người lao động ( nhận dạng , Tên công ty , Tên Liên lạc )
LỰA CHỌN 1 , 'Người Mỹ' , 'Henriot'
Ở ĐÂU KHÔNG TỒN TẠI ( LỰA CHỌN * TỪ người lao động Ở ĐÂU nhận dạng = 1 ) ;

Đầu ra hiển thị một hàng mới không được chèn dưới dạng hàng có “ nhận dạng ' tương đương với ' 1 ” đã tồn tại.

Chèn một hàng mới chỉ khi dữ liệu không tồn tại bằng cách sử dụng mệnh đề “ON DUPLICATE KEY UPDATE”

Chà, một cách khác là sử dụng “ TRÊN CẬP NHẬT KHÓA DUPLICATE ” mệnh đề trong MySQL. Vì mệnh đề này sẽ được sử dụng với truy vấn “INSERT INTO” tạo thành một thực thi “if-else”. Vì vậy, điều này có nghĩa là dữ liệu bên trong bảng sẽ chỉ được cập nhật nếu nó là duy nhất. Nếu không, sẽ không có thay đổi nào xảy ra. Cú pháp chung cho điều này như sau:

CHÈN VÀO TRONG [ bàn - tên ] ( [ cột1 - tên ] , [ cột2 - tên ] , [ cột3 - tên ] ) GIÁ TRỊ ( [ giá trị1 ] , [ giá trị2 ] , [ giá trị3 ] )
TRÊN NHÂN BẢN CHÌA KHÓA CẬP NHẬT [ cột1 - tên ] = [ cột1 - tên ] ;

Hãy xem một ví dụ, để chèn các giá trị vào “ 2 ”, “ Pascale ”, “ Nixon ”, “ London ”, “ Vương quốc Anh ' Và “(171) 555-7788 ' trong bàn ' Khách hàng ” cho các cột “ Nhận dạng ”, “ Tên đầu tiên ”, “ Họ ”, “ thành phố ”, “ quốc gia ' Và ' điện thoại ' tương ứng. Nếu hàng chưa tồn tại, nó sẽ được chèn vào. Nếu không, nó sẽ cập nhật các giá trị trong đó “ Id=Id ” điều kiện đáp ứng. Chạy truy vấn này:

LỰA CHỌN * TỪ Khách hàng ;
CHÈN VÀO TRONG Khách hàng ( Nhận dạng , Tên đầu tiên , Họ , thành phố , quốc gia , điện thoại )
GIÁ TRỊ ( 2 , 'Pascale' , 'Nixon' , 'London' , 'Anh' , '(171) 555-7788' )
TRÊN NHÂN BẢN CHÌA KHÓA CẬP NHẬT Nhận dạng = Nhận dạng;

Đây là bảng trước khi chạy truy vấn, bạn có thể xem “ Nhận dạng ' tương đương với ' 2 ' không tồn tại:

Sau khi chạy truy vấn, truy vấn này sẽ chèn các hàng mới vào bảng:

Bạn đã chèn thành công một hàng mới vì dữ liệu không tồn tại trước khi chạy truy vấn.

Phần kết luận

Trong MySQL, chỉ chèn một hàng mới nếu dữ liệu chưa tồn tại bằng cách sử dụng “ CHÈN BỎ QUA ” tuyên bố hoặc “ KHÔNG TỒN TẠI ” mệnh đề trong “ CHÈN VÀO ' tuyên bố. Một cách khác để thực hiện việc này là sử dụng “ TRÊN CẬP NHẬT KHÓA DUPLICATE ” mệnh đề trong “ CHÈN VÀO ” để cập nhật nếu hàng đã tồn tại. Nếu không, hãy thêm một hàng mới. Bài đăng đã thảo luận về cách chỉ chèn một hàng mới nếu dữ liệu không tồn tại.