Usporedite dvije tablice u SQL-u

Usporedite Dvije Tablice U Sql U



Usporedba podataka u SQL-u čest je zadatak s kojim će se povremeno susresti svaki programer baze podataka. Srećom, usporedba podataka dolazi u širokom rasponu formata kao što su literalna usporedba, Booleova usporedba itd.

Međutim, jedan od scenarija usporedbe podataka u stvarnom svijetu s kojim se možete susresti jest usporedba dviju tablica. Ima ključnu ulogu u zadacima kao što su provjera valjanosti podataka, identifikacija pogrešaka, dupliciranje ili osiguravanje integriteta podataka.







U ovom vodiču istražit ćemo sve različite metode i tehnike koje možemo upotrijebiti za usporedbu dviju tablica baze podataka u SQL-u.



Postavljanje uzorka podataka

Prije nego što zaronimo u svaku od metoda, postavimo osnovne postavke podataka u svrhu demonstracije.



Imamo dvije tablice s oglednim podacima kao što je prikazano u primjeru.





Uzorak tablice 1:

Sljedeće sadrži upite za stvaranje prve tablice i umetanje oglednih podataka u tablicu:



STVARANJE TABLICE sample_tb1 (
Emploee_id INT PRIMARNI KLJUČ AUTO_INKREMENT,
ime VARCHAR ( pedeset ) ,
prezime VARCHAR ( pedeset ) ,
odjel VARCHAR ( pedeset ) ,
plaća DECIMALNA ( 10 , 2 )
) ;

INSERT INTO sample_tb1 ( ime, prezime, odjel, plaća )
VRIJEDNOSTI
( 'Penelope' , 'Loviti' , 'HR' , 55000,00 ) ,
( 'Matej' , 'Kavez' , 'TO' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Financije' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'TO' , 62000,00 ) ,
( 'Cameron' , 'costner' , 'Financije' , 48000,00 ) ;

Ovo bi trebalo stvoriti novu tablicu pod nazivom 'sample_tb1' s različitim informacijama kao što su imena, odjel i plaća.

Dobivena tablica je sljedeća:

Uzorak tablice 2:

Nastavimo i izradimo dvije ogledne tablice. Pretpostavimo da je ovo sigurnosna kopija prve tablice. Možemo izraditi tablicu i umetnuti ogledne podatke kao što je prikazano u nastavku:

STVARANJE TABLICE sample_tb2 (
Emploee_id INT PRIMARNI KLJUČ AUTO_INKREMENT,
ime VARCHAR ( pedeset ) ,
prezime VARCHAR ( pedeset ) ,
odjel VARCHAR ( pedeset ) ,
plaća DECIMALNA ( 10 , 2 )
) ;
INSERT INTO sample_tb2 ( ime, prezime, odjel, plaća )
VRIJEDNOSTI
( 'Penelope' , 'Loviti' , 'HR' , 55000,00 ) ,
( 'Matej' , 'Kavez' , 'TO' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'Financije' , 50000,00 ) ,
( 'Kirsten' , 'Fawcet' , 'TO' , 62000,00 ) ,
( 'Audrey' , 'Dekan' , 'Financije' , 48000,00 ) ;

Ovo bi trebalo stvoriti tablicu i umetnuti ogledne podatke kao što je navedeno u prethodnom upitu. Dobivena tablica je sljedeća:

Usporedite dvije tablice koristeći Except

Jedan od najčešćih načina usporedbe dviju tablica u SQL-u je korištenje operatora EXCEPT. Ovo pronalazi retke koji postoje u prvoj tablici, ali ne i u drugoj tablici.

Možemo ga koristiti za izvođenje usporedbe s oglednim tablicama na sljedeći način:

IZABERI *
OD sample_tb1
OSIM
IZABERI *
OD sample_tb2;

U ovom primjeru, operator EXCEPT vraća sve različite retke iz prvog upita (sample_tb1) koji se ne pojavljuju u drugom upitu (sample_tb2).

Usporedite dvije tablice pomoću unije

Druga metoda koju možemo koristiti je operator UNION u kombinaciji s klauzulom GROUP BY. To pomaže identificirati zapise koji postoje u jednoj tablici, a ne u drugoj, dok se čuvaju dvostruki zapisi.

Uzmite upit koji je prikazan u sljedećem:

IZABERI
id_zaposlenika,
ime,
prezime,
odjel,
plaća
IZ
(
IZABERI
id_zaposlenika,
ime,
prezime,
odjel,
plaća
IZ
uzorak_tb1
UNIJA SVE
IZABERI
id_zaposlenika,
ime,
prezime,
odjel,
plaća
IZ
uzorak_tb2
) AS kombinirani_podaci
GRUPIRAJ PO
id_zaposlenika,
ime,
prezime,
odjel,
plaća
IMAJUĆI
RAČUNATI ( * ) = 1 ;

U navedenom primjeru koristimo operator UNION ALL za kombiniranje podataka iz obje tablice zadržavajući duplikate.

Zatim koristimo klauzulu GROUP BY za grupiranje kombiniranih podataka prema svim stupcima. Konačno, koristimo klauzulu HAVING kako bismo osigurali da su odabrani samo zapisi s brojem jedan (bez duplikata).

Izlaz:

Ova je metoda malo složenija, ali pruža mnogo bolji uvid jer dobivate stvarne podatke koji nedostaju u obje tablice.

Usporedite dvije tablice koristeći INNER JOIN

Ako ste razmišljali, zašto ne biste upotrijebili INNER JOIN? Bili biste na mjestu. Možemo koristiti INNER JOIN za usporedbu tablica i pronalaženje zajedničkih zapisa.

Uzmimo za primjer sljedeći upit:

IZABERI
uzorak_tb1. *
IZ
uzorak_tb1
INNER JOIN sample_tb2 ON
sample_tb1.employee_id = sample_tb2.employee_id;

U ovom primjeru koristimo SQL INNER JOIN za pronalaženje zapisa koji postoje u obje tablice na temelju danog stupca. Iako ovo funkcionira, ponekad može dovesti u zabludu jer niste sigurni nedostaju li podaci zapravo ili su prisutni u obje tablice ili samo u jednoj.

Zaključak

U ovom smo vodiču naučili o svim metodama i tehnikama koje možemo upotrijebiti za usporedbu dviju tablica u SQL-u.