Упоредите две табеле у СКЛ-у

Uporedite Dve Tabele U Skl U



Поређење података у СКЛ-у је уобичајен задатак са којим ће се сваки програмер базе података повремено сусрести. Срећом, поређење података долази у великом броју формата као што су дословно поређење, Булово поређење итд.

Међутим, један од сценарија за поређење података у стварном свету са којим се можете сусрести је поређење између две табеле. Он игра кључну улогу у задацима као што су валидација података, идентификација грешака, дуплирање или обезбеђивање интегритета података.







У овом водичу ћемо истражити све различите методе и технике које можемо да употребимо да упоредимо две табеле базе података у СКЛ-у.



Пример подешавања података

Пре него што уђемо у сваку од метода, хајде да поставимо основно подешавање података у сврху демонстрације.



Имамо две табеле са узорцима података као што је приказано у примеру.





Пример табеле 1:

Следеће садржи упите за креирање прве табеле и уметање узорака података у табелу:



ЦРЕАТЕ ТАБЛЕ сампле_тб1 (
емплоиее_ид ИНТ ПРИМАРИ КЕИ АУТО_ИНЦРЕМЕНТ,
име ВАРЦХАР ( педесет ) ,
презиме ВАРЦХАР ( педесет ) ,
одељење ВАРЧАР ( педесет ) ,
плата ДЕЦИМАЛ ( 10 , 2 )
) ;

ИНСЕРТ ИНТО сампле_тб1 ( име, презиме, одељење, плата )
ВРЕДНОСТИ
( 'Пенелопа' , 'Потера' , 'ХР' , 55000.00 ) ,
( 'Матеј' , 'кавез' , 'ТО' , 60000.00 ) ,
( 'Јениффер' , 'Давис' , 'финансије' , 50000.00 ) ,
( 'Кирстен' , 'Фавцет' , 'ТО' , 62000.00 ) ,
( 'камерон' , 'цостнер' , 'финансије' , 48000.00 ) ;

Ово би требало да креира нову табелу под називом „сампле_тб1“ са различитим информацијама као што су имена, одељење и плата.

Добијена табела је следећа:

Пример табеле 2:

Хајде да наставимо и направимо две узорке табеле. Претпоставимо да је ово резервна копија прве табеле. Можемо креирати табелу и уметнути узорке података као што је приказано у наставку:

ЦРЕАТЕ ТАБЛЕ сампле_тб2 (
емплоиее_ид ИНТ ПРИМАРИ КЕИ АУТО_ИНЦРЕМЕНТ,
име ВАРЦХАР ( педесет ) ,
презиме ВАРЦХАР ( педесет ) ,
одељење ВАРЧАР ( педесет ) ,
плата ДЕЦИМАЛ ( 10 , 2 )
) ;
ИНСЕРТ ИНТО сампле_тб2 ( име, презиме, одељење, плата )
ВРЕДНОСТИ
( 'Пенелопа' , 'Потера' , 'ХР' , 55000.00 ) ,
( 'Матеј' , 'кавез' , 'ТО' , 60000.00 ) ,
( 'Јениффер' , 'Давис' , 'финансије' , 50000.00 ) ,
( 'Кирстен' , 'Фавцет' , 'ТО' , 62000.00 ) ,
( 'одри' , 'декан' , 'финансије' , 48000.00 ) ;

Ово би требало да креира табелу и уметне узорке података као што је наведено у претходном упиту. Добијена табела је следећа:

Упоредите две табеле користећи осим

Један од најчешћих начина поређења две табеле у СКЛ-у је коришћење оператора ЕКСЦЕПТ. Ово проналази редове који постоје у првој табели, али не и у другој табели.

Можемо га користити да извршимо поређење са табелама узорака на следећи начин:

СЕЛЕЦТ *
ИЗ узорка_тб1
ОСИМ
СЕЛЕЦТ *
ФРОМ узорак_тб2;

У овом примеру, оператор ЕКСЦЕПТ враћа све различите редове из првог упита (сампле_тб1) који се не појављују у другом упиту (сампле_тб2).

Упоредите две табеле користећи Унион

Други метод који можемо да користимо је УНИОН оператор у вези са клаузулом ГРОУП БИ. Ово помаже да се идентификују записи који постоје у једној табели, а не у другој, уз очување дупликата записа.

Узмите упит који је приказан у следећем:

СЕЛЕЦТ
Број запосленог,
име,
презиме,
одељење,
плата
ИЗ
(
СЕЛЕЦТ
Број запосленог,
име,
презиме,
одељење,
плата
ИЗ
сампле_тб1
УНИОН АЛЛ
СЕЛЕЦТ
Број запосленог,
име,
презиме,
одељење,
плата
ИЗ
сампле_тб2
) АС комбиновани_подаци
ГРУПА ОД
Број запосленог,
име,
презиме,
одељење,
плата
ХАВИНГ
ЦОУНТ ( * ) = 1 ;

У датом примеру користимо оператор УНИОН АЛЛ да комбинујемо податке из обе табеле уз задржавање дупликата.

Затим користимо клаузулу ГРОУП БИ да групишемо комбиноване податке по свим колонама. Коначно, користимо клаузулу ХАВИНГ да бисмо осигурали да су одабрани само записи са бројем један (без дупликата).

Излаз:

Овај метод је мало сложенији, али пружа много бољи увид јер добијате стварне податке који недостају у обе табеле.

Упоредите две табеле користећи ИННЕР ЈОИН

Ако сте размишљали, зашто не бисте користили ИННЕР ЈОИН? Били бисте у праву. Можемо користити ИННЕР ЈОИН да упоредимо табеле и пронађемо заједничке записе.

Узмите за пример следећи упит:

СЕЛЕЦТ
сампле_тб1. *
ИЗ
сампле_тб1
ИННЕР ЈОИН сампле_тб2 ОН
сампле_тб1.емплоиее_ид = сампле_тб2.емплоиее_ид;

У овом примеру користимо СКЛ ИННЕР ЈОИН да пронађемо записе који постоје у обе табеле на основу дате колоне. Иако ово функционише, понекад може бити погрешно јер нисте сигурни да ли подаци заиста недостају или су присутни у обе табеле или само у једној.

Закључак

У овом туторијалу научили смо о свим методама и техникама које можемо користити за упоређивање две табеле у СКЛ-у.