MARIADB
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Quản lý dữ liệu trùng lặp trong MariaDB

Trong MariaDB, dữ liệu trùng lặp (duplicates) có thể xuất hiện trong một số tình huống nhất định. Một số dữ liệu trông có vẻ trùng lặp nhưng thực chất không phải, do sự khác biệt trong loại dữ liệu, đặc điểm đối tượng hoặc vòng đời riêng biệt của các đối tượng lưu trữ. Những trường hợp này thường không gây ra vấn đề.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Tuy nhiên, trong một số trường hợp khác, dữ liệu trùng lặp có thể gây ra lỗi, thường do các thao tác ngầm hoặc chính sách lỏng lẻo trong câu lệnh MariaDB. Để xử lý vấn đề này, bạn cần tìm cách kiểm soát, phát hiện, xóa bỏ, và ngăn chặn việc tạo ra dữ liệu trùng lặp.

Chiến lược và công cụ xử lý dữ liệu trùng lặp trong MariaDB

Có bốn phương pháp chính để quản lý dữ liệu trùng lặp:

  • Sử dụng JOIN kết hợp bảng tạm (Temporary Table) để tìm và loại bỏ các bản ghi trùng lặp.
  • Dùng lệnh INSERT...ON DUPLICATE KEY UPDATE để cập nhật khi phát hiện trùng lặp.
  • Áp dụng DISTINCT để loại bỏ dữ liệu trùng lặp trong kết quả truy vấn.
  • Sử dụng INSERT IGNORE để ngăn chặn việc chèn dữ liệu trùng lặp.

Sử dụng JOIN với bảng tạm

Phương pháp này sử dụng semi-join (inner join) để phát hiện dữ liệu trùng lặp. Sau đó, xóa các bản ghi trùng bằng cách sử dụng bảng tạm.

Bài viết này được đăng tại [free tuts .net]

Sử dụng INSERT...ON DUPLICATE KEY UPDATE

Câu lệnh này hoạt động như sau:

  • Khi phát hiện khóa chính hoặc khóa duy nhất bị trùng lặp, nó thực hiện thao tác cập nhật.
  • Nếu phát hiện nhiều khóa duy nhất, nó chỉ cập nhật theo khóa đầu tiên. Vì vậy, không nên dùng trên các bảng có nhiều khóa duy nhất.

Ví dụ:

INSERT INTO add_dupl VALUES (1, 'Apple');
-- Lỗi trùng lặp với khóa chính:
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Lưu ý: Nếu không phát hiện trùng lặp, câu lệnh này sẽ hoạt động như một lệnh INSERT thông thường.

Sử dụng DISTINCT

Lệnh DISTINCT được dùng để loại bỏ các giá trị trùng lặp trong kết quả truy vấn.

Cú pháp:

SELECT DISTINCT cột1, cột2
FROM bảng
[WHERE điều_kiện];

Lưu ý quan trọng:

  • Nếu chỉ có một cột trong lệnh DISTINCT, nó sẽ trả về các giá trị duy nhất của cột đó.
  • Nếu có nhiều cột, DISTINCT sẽ trả về các tổ hợp giá trị duy nhất giữa các cột.
  • Các giá trị NULL không bị loại bỏ, vì MariaDB coi NULL là giá trị hợp lệ.

Ví dụ với một cột:

SELECT DISTINCT product_id 
FROM products
WHERE product_name = 'DustBlaster 5000';

Ví dụ với nhiều cột:

SELECT DISTINCT product_name, product_id 
FROM products
WHERE product_id < 30;

Sử dụng INSERT IGNORE

Khi phát hiện bản ghi trùng lặp, lệnh INSERT IGNORE sẽ hủy thao tác chèn mà không trả về lỗi.

Ví dụ:

INSERT IGNORE INTO customer_tbl (LN, FN)
VALUES ('Lex', 'Luther');

Kết bài

Việc quản lý dữ liệu trùng lặp trong MariaDB đòi hỏi bạn hiểu rõ nhu cầu và bản chất của từng loại dữ liệu. Trong khi một số bảng có thể cần chấp nhận trùng lặp, nhiều bảng khác cần loại bỏ chúng để đảm bảo dữ liệu chính xác và đồng nhất. Các công cụ và chiến lược như JOIN, DISTINCT, INSERT IGNORE hoặc INSERT...ON DUPLICATE KEY UPDATE đều là giải pháp linh hoạt và hiệu quả để xử lý dữ liệu trùng lặp trong MariaDB.

Cùng chuyên mục:

Cú pháp PHP trong MariaDB

Cú pháp PHP trong MariaDB

Quản trị cơ bản trong MariaDB

Quản trị cơ bản trong MariaDB

Hướng dẫn cài đặt MariaDB

Hướng dẫn cài đặt MariaDB

Các hàm hữu ích trong MariaDB

Các hàm hữu ích trong MariaDB

Phương pháp tải dữ liệu sao lưu trong MariaDB

Phương pháp tải dữ liệu sao lưu trong MariaDB

Phương pháp sao lưu trong MariaDB

Phương pháp sao lưu trong MariaDB

Bảo vệ chống SQL Injection trong MariaDB

Bảo vệ chống SQL Injection trong MariaDB

Dãy số (Sequences) trong  MariaDB

Dãy số (Sequences) trong MariaDB

Tìm hiểu Table Cloning trong MariaDB

Tìm hiểu Table Cloning trong MariaDB

Bảng tạm thời (Temporary Tables) trong MariaDB

Bảng tạm thời (Temporary Tables) trong MariaDB

Tìm hiểu Indexes và Statistics Tablestrong MariaDB

Tìm hiểu Indexes và Statistics Tablestrong MariaDB

Lệnh ALTER trong MariaDB

Lệnh ALTER trong MariaDB

Giao dịch (Transactions) trong MariaDB

Giao dịch (Transactions) trong MariaDB

Biểu thức chính quy (Regular Expression) trong MariaDB

Biểu thức chính quy (Regular Expression) trong MariaDB

Giá trị NULL trong MariaDB

Giá trị NULL trong MariaDB

Mệnh đề JOIN trong MariaDB

Mệnh đề JOIN trong MariaDB

Mệnh đề ORDER BY trong MariaDB

Mệnh đề ORDER BY trong MariaDB

Mệnh đề LIKE trong MariaDB

Mệnh đề LIKE trong MariaDB

Tìm hiểu lệnh DELETE trong MariaDB

Tìm hiểu lệnh DELETE trong MariaDB

Tìm hiểu câu lệnh UPDATE trong MariaDB

Tìm hiểu câu lệnh UPDATE trong MariaDB

Top