SQL'de İki Tabloyu Karşılaştırın

Sql De Iki Tabloyu Karsilastirin



SQL'de veri karşılaştırma, her veritabanı geliştiricisinin ara sıra karşılaşacağı ortak bir görevdir. Neyse ki veri karşılaştırması, gerçek karşılaştırma, Boole karşılaştırması vb. gibi çok çeşitli formatlarda gelir.

Ancak karşılaşabileceğiniz gerçek dünyadaki veri karşılaştırma senaryolarından biri, iki tablo arasındaki karşılaştırmadır. Veri doğrulama, hata tanımlama, çoğaltma veya veri bütünlüğünü sağlama gibi görevlerde çok önemli bir rol oynar.







Bu derste, SQL'deki iki veritabanı tablosunu karşılaştırmak için kullanabileceğimiz çeşitli yöntem ve teknikleri inceleyeceğiz.



Örnek Veri Kurulumu

Yöntemlerin her birine dalmadan önce, gösterim amacıyla temel bir veri kurulumu kuralım.



Örnekte gösterildiği gibi örnek verileri içeren iki tablomuz var.





Örnek Tablo 1:

Aşağıda ilk tablonun oluşturulmasına ve örnek verilerin tabloya eklenmesine ilişkin sorgular yer almaktadır:



TABLO OLUŞTUR sample_tb1 (
çalışan_id INT BİRİNCİL ANAHTAR AUTO_INCREMENT,
ad VARCHAR ( elli ) ,
soyadı VARCHAR ( elli ) ,
departman VARCHAR ( elli ) ,
maaş ONDALIK ( 10 , 2 )
) ;

sample_tb1'E EKLEYİN ( ad, soyadı, bölüm, maaş )
DEĞERLER
( 'Penelope' , 'Takip etmek' , 'İK' , 55000,00 ) ,
( 'Matta' , 'Kafes' , 'BT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Finans' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'BT' , 62000,00 ) ,
( 'Cameron' , 'maliyet avcısı' , 'Finans' , 48000,00 ) ;

Bu, isimler, departman ve maaş gibi çeşitli bilgilerin yer aldığı 'sample_tb1' adında yeni bir tablo oluşturmalıdır.

Ortaya çıkan tablo aşağıdaki gibidir:

Örnek Tablo 2:

Devam edelim ve iki örnek tablo oluşturalım. Bunun ilk tablonun yedek kopyası olduğunu varsayalım. Aşağıdaki şekilde gösterildiği gibi tabloyu oluşturabilir ve örnek veri ekleyebiliriz:

TABLO OLUŞTUR sample_tb2 (
çalışan_id INT BİRİNCİL ANAHTAR AUTO_INCREMENT,
ad VARCHAR ( elli ) ,
soyadı VARCHAR ( elli ) ,
departman VARCHAR ( elli ) ,
maaş ONDALIK ( 10 , 2 )
) ;
sample_tb2'YE EKLEYİN ( ad, soyadı, bölüm, maaş )
DEĞERLER
( 'Penelope' , 'Takip etmek' , 'İK' , 55000,00 ) ,
( 'Matta' , 'Kafes' , 'BT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Finans' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'BT' , 62000,00 ) ,
( 'Audrey' , 'Dekan' , 'Finans' , 48000,00 ) ;

Bu, bir tablo oluşturmalı ve örnek verileri önceki sorguda belirtildiği gibi eklemelidir. Ortaya çıkan tablo aşağıdaki gibidir:

Hariç Kullanarak İki Tabloyu Karşılaştırın

SQL'de iki tabloyu karşılaştırmanın en yaygın yollarından biri EXCEPT operatörünü kullanmaktır. Bu, ilk tabloda bulunan ancak ikinci tabloda bulunmayan satırları bulur.

Örnek tablolarla karşılaştırma yapmak için aşağıdaki gibi kullanabiliriz:

SEÇME *
sample_tb1'DEN
HARİÇ
SEÇME *
sample_tb2'DEN;

Bu örnekte EXCEPT operatörü, birinci sorgudaki (sample_tb1) ikinci sorguda (sample_tb2) görünmeyen tüm farklı satırları döndürür.

Birliği Kullanarak İki Tabloyu Karşılaştırın

Kullanabileceğimiz ikinci yöntem GROUP BY cümleciğiyle birlikte UNION operatörüdür. Bu, yinelenen kayıtları korurken, bir tabloda bulunan, diğerinde olmayan kayıtları tanımlamaya yardımcı olur.

Aşağıda gösterilen sorguyu alın:

SEÇME
Çalışan kimliği,
ilk adı,
soy isim,
departman,
maaş
İTİBAREN
(
SEÇME
Çalışan kimliği,
ilk adı,
soy isim,
departman,
maaş
İTİBAREN
örnek_tb1
BİRLİK TÜMÜ
SEÇME
Çalışan kimliği,
ilk adı,
soy isim,
departman,
maaş
İTİBAREN
örnek_tb2
) AS birleştirilmiş_veriler
GRUPLANDIRMA ŞEKLİ
Çalışan kimliği,
ilk adı,
soy isim,
departman,
maaş
SAHİP OLMAK
SAYMAK ( * ) = 1 ;

Verilen örnekte, kopyaları korurken her iki tablodaki verileri birleştirmek için UNION ALL operatörünü kullanıyoruz.

Daha sonra birleştirilmiş verileri tüm sütunlara göre gruplandırmak için GROUP BY deyimini kullanırız. Son olarak, yalnızca bir sayısı olan (yinelenenleri olmayan) kayıtların seçildiğinden emin olmak için HAVING deyimini kullanırız.

Çıktı:

Bu yöntem biraz daha karmaşıktır ancak her iki tabloda da eksik olan gerçek verileri elde ettiğiniz için çok daha iyi bir anlayış sağlar.

INNER JOIN Kullanarak İki Tabloyu Karşılaştırın

Eğer düşünüyorsanız, neden INNER JOIN kullanmıyorsunuz? Tam yerinde olurdun. Tabloları karşılaştırmak ve ortak kayıtları bulmak için INNER JOIN'i kullanabiliriz.

Örneğin aşağıdaki sorguyu alın:

SEÇME
sample_tb1. *
İTİBAREN
örnek_tb1
İÇ BİRLEŞİM sample_tb2 AÇIK
sample_tb1.employee_id = sample_tb2.employee_id;

Bu örnekte, belirli bir sütuna göre her iki tabloda da bulunan kayıtları bulmak için SQL INNER JOIN kullanıyoruz. Her ne kadar bu işe yarasa da, verilerin gerçekten eksik olup olmadığından veya her iki tabloda mı yoksa yalnızca birinde mi olduğundan emin olamadığınız için bazen yanıltıcı olabilir.

Çözüm

Bu derste SQL'deki iki tabloyu karşılaştırmak için kullanabileceğimiz tüm yöntem ve teknikleri öğrendik.