Porovnajte dve tabuľky v SQL

Porovnajte Dve Tabulky V Sql



Porovnávanie údajov v SQL je bežná úloha, s ktorou sa občas stretne každý vývojár databázy. Našťastie porovnanie údajov prichádza v širokej škále formátov, ako je doslovné porovnanie, boolovské porovnanie atď.

Jedným zo scenárov porovnávania údajov v reálnom svete, s ktorým sa môžete stretnúť, je porovnanie dvoch tabuliek. Hrá kľúčovú úlohu pri úlohách, ako je validácia údajov, identifikácia chýb, duplikácia alebo zabezpečenie integrity údajov.







V tomto návode preskúmame všetky rôzne metódy a techniky, ktoré môžeme použiť na porovnanie dvoch databázových tabuliek v SQL.



Nastavenie vzorových údajov

Predtým, ako sa ponoríme do každej z metód, nastavíme základné nastavenie údajov na demonštračné účely.



Máme dve tabuľky so vzorovými údajmi, ako je uvedené v príklade.





Vzorová tabuľka 1:

Nasleduje otázky na vytvorenie prvej tabuľky a vloženie vzorových údajov do tabuľky:



CREATE TABLE sample_tb1 (
zamestnanec_id INT PRIMARY KEY AUTO_INCREMENT,
krstné_meno VARCHAR ( päťdesiat ) ,
priezvisko VARCHAR ( päťdesiat ) ,
oddelenie VARCHAR ( päťdesiat ) ,
plat DECIMAL ( 10 , 2 )
) ;

INSERT INTO sample_tb1 ( meno, priezvisko, oddelenie, plat )
HODNOTY
( 'Penelope' , 'Naháňačka' , 'HR' , 55 000,00 ) ,
( 'Matthew' , 'Cage' , 'IT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'financie' , 50 000,00 ) ,
( 'Kirsten' , 'fawcet' , 'IT' , 62 000,00 ) ,
( 'Cameron' , 'costner' , 'financie' , 48 000,00 ) ;

To by malo vytvoriť novú tabuľku s názvom „sample_tb1“ s rôznymi informáciami, ako sú mená, oddelenie a plat.

Výsledná tabuľka je nasledovná:

Vzorová tabuľka 2:

Pokračujme a vytvorte dve vzorové tabuľky. Predpokladajme, že ide o záložnú kópiu prvej tabuľky. Môžeme vytvoriť tabuľku a vložiť vzorové údaje, ako je uvedené nižšie:

CREATE TABLE sample_tb2 (
zamestnanec_id INT PRIMARY KEY AUTO_INCREMENT,
krstné_meno VARCHAR ( päťdesiat ) ,
priezvisko VARCHAR ( päťdesiat ) ,
oddelenie VARCHAR ( päťdesiat ) ,
plat DECIMAL ( 10 , 2 )
) ;
INSERT INTO sample_tb2 ( meno, priezvisko, oddelenie, plat )
HODNOTY
( 'Penelope' , 'Naháňačka' , 'HR' , 55 000,00 ) ,
( 'Matthew' , 'Cage' , 'IT' , 60000,00 ) ,
( 'Jeniffer' , 'Davis' , 'financie' , 50 000,00 ) ,
( 'Kirsten' , 'fawcet' , 'IT' , 62 000,00 ) ,
( 'Audrey' , 'Dekan' , 'financie' , 48 000,00 ) ;

Toto by malo vytvoriť tabuľku a vložiť vzorové údaje, ako je uvedené v predchádzajúcom dotaze. Výsledná tabuľka je nasledovná:

Porovnajte dve tabuľky pomocou Except

Jedným z najbežnejších spôsobov porovnávania dvoch tabuliek v SQL je použitie operátora EXCEPT. Toto nájde riadky, ktoré existujú v prvej tabuľke, ale nie v druhej tabuľke.

Môžeme ho použiť na porovnanie so vzorovými tabuľkami takto:

VYBRAŤ *
FROM sample_tb1
OKREM
VYBRAŤ *
FROM sample_tb2;

V tomto príklade operátor EXCEPT vráti všetky odlišné riadky z prvého dotazu (sample_tb1), ktoré sa neobjavia v druhom dotaze (sample_tb2).

Porovnajte dve tabuľky pomocou Union

Druhou metódou, ktorú môžeme použiť, je operátor UNION v spojení s klauzulou GROUP BY. Pomáha to identifikovať záznamy, ktoré existujú v jednej tabuľke, nie v druhej, pričom sa zachovajú duplicitné záznamy.

Vezmite dotaz, ktorý je znázornený v nasledujúcom:

VYBRAŤ
Identifikačné číslo zamestnanca,
krstné meno,
priezvisko,
oddelenie,
plat
OD
(
VYBRAŤ
Identifikačné číslo zamestnanca,
krstné meno,
priezvisko,
oddelenie,
plat
OD
sample_tb1
UNION VŠETKO
VYBRAŤ
Identifikačné číslo zamestnanca,
krstné meno,
priezvisko,
oddelenie,
plat
OD
sample_tb2
) AS kombinované_údaje
GROUP BY
Identifikačné číslo zamestnanca,
krstné meno,
priezvisko,
oddelenie,
plat
MAJÚCE
COUNT ( * ) = 1 ;

V uvedenom príklade používame operátor UNION ALL na spojenie údajov z oboch tabuliek pri zachovaní duplikátov.

Potom použijeme klauzulu GROUP BY na zoskupenie kombinovaných údajov podľa všetkých stĺpcov. Nakoniec použijeme klauzulu HAVING, aby sme zabezpečili, že sa vyberú iba záznamy s počtom jedna (žiadne duplikáty).

Výkon:

Táto metóda je trochu zložitejšia, ale poskytuje oveľa lepší prehľad, pretože získate skutočné údaje, ktoré chýbajú v oboch tabuľkách.

Porovnajte dve tabuľky pomocou INNER JOIN

Ak ste premýšľali, prečo nepoužiť INNER JOIN? Boli by ste na mieste. Na porovnanie tabuliek a nájdenie spoločných záznamov môžeme použiť INNER JOIN.

Vezmite si napríklad nasledujúci dotaz:

VYBRAŤ
sample_tb1. *
OD
sample_tb1
INNER JOIN sample_tb2 ON
sample_tb1.employee_id = sample_tb2.employee_id;

V tomto príklade používame SQL INNER JOIN na nájdenie záznamov, ktoré existujú v oboch tabuľkách na základe daného stĺpca. Hoci to funguje, niekedy to môže byť zavádzajúce, pretože si nie ste istí, či údaje skutočne chýbajú alebo sú prítomné v oboch tabuľkách alebo len v jednej.

Záver

V tomto návode sme sa dozvedeli o všetkých metódach a technikách, ktoré môžeme použiť na porovnanie dvoch tabuliek v SQL.