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:

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

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

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

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

Dãy số (Sequences) trong MariaDB

Dãy số (Sequences) trong MariaDB

Table Cloning trong MariaDB

Table Cloning trong MariaDB

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

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

Indexes & Statistics Tables trong MariaDB

Indexes & Statistics Tables trong MariaDB

Alter Command trong MariaDB

Alter Command trong MariaDB

Transactions trong MariaDB

Transactions trong MariaDB

Biểu thức chính quy trong MariaDB

Biểu thức chính quy 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

Câu lệnh DELETE trong MariaDB

Câu lệnh DELETE trong MariaDB

Câu lệnh UPDATE trong MariaDB

Câu lệnh UPDATE trong MariaDB

Mệnh đề WHERE trong MariaDB

Mệnh đề WHERE trong MariaDB

Các kiểu dữ liệu (Data Types) trong MariaDB

Các kiểu dữ liệu (Data Types) trong MariaDB

Tìm hiểu Select Database trong MariaDB

Tìm hiểu Select Database trong MariaDB

Xóa cơ sở dữ liệu trong MariaDB

Xóa cơ sở dữ liệu trong MariaDB

Tạo cơ sở dữ liệu (Database) trong MariaDB

Tạo cơ sở dữ liệu (Database) trong MariaDB

Top