MariaDB - Kopyaları Yönetme

MariaDB, önceki derslerde tartışıldığı gibi, bazı durumlarda yinelenen kayıtlara ve tablolara izin verir. Bu kopyaların bazıları, farklı veriler veya nesne türleri nedeniyle veya işlem nesnesinin benzersiz ömrü veya depolanmasının bir sonucu olarak aslında kopya değildir. Bu kopyalar ayrıca tipik olarak sorun teşkil etmez.

Bazı durumlarda, kopyalar sorunlara neden olur ve genellikle dolaylı eylemler veya MariaDB komutunun yumuşak politikası nedeniyle ortaya çıkarlar. Bu sorunu kontrol etmenin, kopyaları bulmanın, kopyaları silmenin ve kopya oluşturmayı önlemenin çeşitli yolları vardır.

Stratejiler ve Araçlar

Yinelenenleri yönetmenin dört temel yolu vardır -

  • JOIN ile balık tutun ve geçici bir tabloyla silin.

  • Bir yinelemenin bulunmasını güncellemek için INSERT ... ON DUPLICATE ANAHTAR GÜNCELLEMESİ kullanın.

  • Bir SELECT ifadesinin sonuçlarını budamak ve kopyaları kaldırmak için DISTINCT kullanın.

  • Kopyaların eklenmesini durdurmak için INSERT IGNORE kullanın.

Birleştirmeyi Geçici Bir Tablo ile Kullanma

Basitçe bir iç birleşim gibi yarı birleştirme gerçekleştirin ve ardından geçici bir tabloyla bulunan kopyaları kaldırın.

INSERT kullanarak

INSERT ... ON DUPLICATE ANAHTAR GÜNCELLEME yinelenen bir benzersiz veya birincil anahtar bulduğunda, bir güncelleme gerçekleştirir. Birden fazla benzersiz anahtar bulunduğunda, yalnızca ilkini günceller. Bu nedenle, birden çok benzersiz dizini olan tablolarda kullanmayın.

Doldurulmuş bir alana ekleme sırasında dizine alınmış değerler içeren bir tabloda neler olduğunu ortaya çıkaran aşağıdaki örneği inceleyin -

INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Note - Anahtar bulamazsa, INSERT ... ON DUPLICATE KEY UPDATE deyimi normal bir insert deyimi gibi çalışır.

DISTINCT kullanma

DISTINCT cümleleri, yinelemeleri sonuçlardan kaldırır. DISTINCT yan tümcesi için genel sözdizimi aşağıdaki gibidir -

SELECT DISTINCT fields
FROM table
[WHERE conditions];

Note - DISTINCT cümlesine sahip bir ifadenin sonuçları -

  • Bir ifade kullanırken, onun için benzersiz değerler verir.

  • Birden çok ifade kullanırken, benzersiz kombinasyonlar döndürür.

  • NULL değerleri göz ardı etmez; bu nedenle, sonuçlar benzersiz değerler olarak NULL içerir.

Tek bir ifade için DISTINCT yan tümcesi kullanarak aşağıdaki ifadeyi inceleyin -

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

Birden çok ifade kullanarak aşağıdaki örneği inceleyin -

SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30

INSERT IGNORE kullanma

Bir INSERT IGNORE ifadesi, MariaDB'ye yinelenen bir kaydın bulunması üzerine eklemeyi iptal etmesini söyler. Aşağıda verilen kullanımına ilişkin bir örneği inceleyin -

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

Ayrıca, yinelemelerin arkasındaki mantığı not edin. Bazı tablolar, o tablo verilerinin doğasına göre kopyalar gerektirir. Yinelenen kayıtları yönetme stratejinize bu ihtiyacı dahil edin.