Sissejuhatus liitumistesse Oracle'is

Oracle'i liitumisi kasutatakse mitme tabeli andmetele juurdepääsuks. Oraakliga liitumist kasutatakse Oracle SQL-i kasuliku teabe kogumiseks kohas, kus tuleb ühendada rohkem kui kaks tabelit. Teisisõnu, liitumispäring, mida kasutati ridade hankimiseks enam kui kahest tabelist või vaatest, põhineb liitumistingimustel. Liitumistingimust saab täpsustada klauslis FROM või kus. Liitumistingimus võrdleb erinevate tabelite veerge ja hangib need read, mille liitmistingimus on tõene.

Liitumiste tüübid Oracle'is

Oracle'is on kümme erinevat tüüpi liitumist, mis on toodud allpool:

  • Siseühendused (tuntud ka kui Lihtsad liitumised)
  • Equi liitub
  • Välised liitumised
  • Vasakpoolne välisühendus (nimetatakse ka vasakpoolseks liitumiseks)
  • Parempoolsed välimised liigendid (nimetatakse ka parempoolseteks liitmikeks)
  • Täisvälised liitumised (nimetatakse ka täielikuks liitumiseks)
  • Ise liitub
  • Ristliited (nimetatakse ka Cartesian Products)
  • Anti Liitumised
  • Semi liitub

Järgmisena mõistame iga liitumist üksikasjalikult süntaksi ja näidetega.

1. SISEMINE LIITUMINE (tuntud ka kui Lihtne liitumine)

Siseühendused liituge mitme tabeliga ja tagastage need read, mille liitumistingimus on tõene. Siseühendus on liitmistüüpide hulgas kõige tavalisem liitumine.

Süntaks:

SELECT column (, column ) FROM t1
INNER JOIN t2
ON t1.column = t2.column;

Allpool toodud diagramm tähistab sisemise liitumise visuaalset esitust, nagu skeemil varjutatud ala naasmine Oracle INNER JOIN-i tulemusel:

Oracle INNER JOIN tagastab tulemusel ristmike t1 ja t2 kirjed.

Näide:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee
INNER JOIN department
ON employee.employee _id = department.employee _id;

See ülaltoodud Oracle INNER JOINi näide tagastab kõik read töötajate ja osakondade tabelitest, kus töötaja _id väärtus nii töötajate kui ka osakondade tabelites vastavad.

2. Equi liitub

Oracle Equi Joins hangib mitme tabeli sobivad veeruväärtused. Liitumistingimus või võrdlusoperaator, mis on valitud avalduse WHERE-klauslis.

Süntaks:

SELECT column (, column ) FROM t1, t2
where t1.column = t2.column;

Allpool olev diagramm tähistab ekvijooni visuaalset esitust, nagu skeemil, kui varjutatud ala naaseb Oracle Equi Join'i tulemusel.

Oracle Equijoin tagastab t1 ja t2 lõikepunktid.

Näide:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee, department
where employee.employee _id = department.employee _id;

See ülaltoodud Oracle Equijoini näide tagastab kõik read töötajate ja osakondade tabelitest, kus töötaja _id väärtus nii töötajate kui ka osakondade tabelites vastavad.

3. Välised liitumised

Teist tüüpi liitumised on välimine liitmine, mis annab tulemuseks sisemise liitmise pluss kõik read ühest tabelist, mille korral liitumistingimus pole tõene.

Süntaks:

SELECT column (, column ) FROM t1
LEFT | RIGHT | FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Allpool toodud tüüpi välimisi liitmeid on kolme tüüpi:

  • Vasakpoolne välisühendus (nimetatakse ka vasakpoolseks liitumiseks)
  • Parempoolsed välimised liigendid (nimetatakse ka parempoolseteks liitmikeks)
  • Täisvälised liitumised (nimetatakse ka täielikuks liitumiseks)

4. Vasakpoolne väline liitumine

Vasakpoolne välimine liitmine sisaldab kõiki vasakpoolsest tabelist olevaid ridu (vastavalt olekus ON täpsustatud) ja teisest tabelist ainult neid ridu, kus ühendatud tingimus on tõene.

Süntaks:

SELECT column (, column ) FROM t1
LEFT (OUTER) JOIN t2
ON t1.column = t2.column;

Märksõna VASAK VÄLJU, kasutage vasakpoolset liitu mõnes muus andmebaasis.

Allpool olev diagramm esindab VASAKU VÄLJASÜSTEEMI visuaalset esitust, nagu skeemil varjutatud ala tagasitulek Oracle VÄLISKOHA ÜHENDUSE tulemusel:

Oracle LEFT OUTER JOIN tagastab kõik t1 kirjed ning t1 ja t2 ristuvad kirjed.

Näide:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
LEFT OUTER JOIN department
ON employee.employee _id = department.employee _id;

See Oracle LEFT OUTER JOIN ülaltoodud näide tagastab kõik read töötajate tabelist ja osakonna tabelist ainult need read, kus ühendatud tingimus on tõene. Osakonnatabelid, kus töötaja _id väärtus nii töötajate kui ka osakondade tabelites vastavad, vastavad.

Kui töötaja _id väärtus töötajate tabelis vastab osakonna tabelile, siis on osakonna tabeli väljad tulemuses nullid.

5. Parempoolne väline liitumine

PAREM VÄLJU LIITUMINE sisaldab kõiki RIGHT tabelist RIGHT (vastavalt olekus ON täpsustatud) ja teisest tabelist ainult neid ridu, kus ühendatud tingimus on tõene.

Süntaks:

SELECT column (, column ) FROM t1
RIGHT (OUTER) JOIN t2
ON t1.column = t2.column;

Märksõna PAREM VÄLJU LIIGKAMINE, kasutage mõnes teises andmebaasis RIGHT JOIN-i.

Allpool olev diagramm tähistab parempoolse välimise liitumise visuaalset esitust, nagu skeemil, kui Oracle RIGHT OUTER JOIN on liitunud varjutatud alaga.

Oracle RIGHT OUTER JOIN tagastab kõik t2 kirjed ja t1 ja t2 ristuvad kirjed.

Näide:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
RIGHT OUTER JOIN department
ON employee.employee _id = department.employee _id;

See Oracle LEFT OUTER JOIN kohal olev näide tagastab osakonnatabeli kõik read ja töötajate tabelist ainult need read, kus ühendatud tingimus on tõene. Töötajatabelid, kus töötaja _id väärtus nii töötajate kui ka osakondade tabelites vastavad.

Kui töötajate tabelis olev töötaja _id väärtus ühtib osakonnatabeliga, siis on töötajate tabeli väljad tulemuses nullid.

6. Täielik väline liitumine

Täielik välimine liitumine sisaldab kõiki tabeli VASAK ja RIGHT kõiki ridu nulliga väljades, kus liitumistingimus pole tõene.

Süntaks:

SELECT column (, column ) FROM t1
FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Märksõna FULL OUTER JOIN, kasutage FULL JOIN mõnes muus andmebaasis.

Allpool toodud diagramm kujutab FULL OUTER JOIN-i visuaalset esitust, nagu skeemil varjutatud ala naasmine Oracle FULL OUTER JOIN-i tulemusel.

Oracle FULL OUTER JOIN tagastab kõik t1 ja t2 tabelite kirjed.

Näide:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
FULL OUTER JOIN department
ON employee.employee _id = department.employee _id;

See Oracle FULL OUTER JOIN ülaltoodud näide tagastab kõik read töötajate tabelist ja osakonna tabelist nullväärtustega, kui ühendatud tingimus pole tõene.

7. Oraakli ise liitumine

Ise liitumisel kasutab tabel kaks korda FROM-lause abil tabeli varjunimede nime. Teisisõnu: mina liitub, ühinege ise lauaga. Oracle Self Join ühendab ja tagastab tabeli read, kus liitumise tingimused on tõesed.

Näide:

SELECT emp1.employee_name || 'works for' || emp2.employee_name
FROM employees emp1, employees emp2
WHERE emp1.manager_id = emp2.employee_id
ORDER BY emp1.employee_name;

See ülaltoodud Oracle Self JOINi näide tagastab kõik read töötajate tabelist, kus liitunud tingimus on tõene.

8. Oracle Cross Joins (nimetatakse ka Descartes'i toodeteks)

Ristliitmine kehtib juhul, kui kahel tabelil pole liitumistingimusi. Ristliitmisel tagastatakse kahe tabeli Cartesiuse toode, Descartessi toode, kus ühe laua iga rida on ühendatud teise laua iga reaga. Oletame, et tabel1 sisaldab 100 rida ja tabel2 sisaldab 10 rida, siis liitmistulemus sisaldaks 1000 rida.

Näide;

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
CROSS JOIN department

See ülalolev ristnäide tagastab kõik töötajate tabeli read kombineerituna osakonnatabeli kõigi ridadega.

9. Oracle Anti Joins

Liitumisvastased tagastamised sisaldavad VASAKU tabelist (vastavalt olekus ON täpsustatud) ridu, kus ühendatud tingimus on tõene.

Näide:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
WHERE department_id NOT IN (SELECT department_id from department
WHERE department_name = 'sales';

See ülaltoodud Oracle ANTI JOIN-i näide tagastab read töötajate tabelist ja seal, kus ühendatud tingimus on tõene.

10. Oracle Semi Liitub

Semijoin-tagastused sisaldavad unikaalseid ridu VASAK-tabelist (vastavalt olekus ON täpsustatud), kus vastab EXISTS-i alampäring.

Näide:

SELECT employee.employee _id, employee.employee_name
FROM employee
WHERE EXISTS (SELECT department_id FROM department
WHERE department_name = 'sales');

See ülaltoodud Oracle SEMI JOIN näite korral tagastatakse read töötajate tabelist, kui kiri EXISTS vastab tõele.

Järeldus

See on harjunud andmetele juurde pääsema mitmest tabelist. Oracle'is on seitse erinevat tüüpi liitumist.

Soovitatavad artiklid

See on juhend Joinsile Oracle'is. Siin arutleme sissejuhatuse üle Oracle'i liitumiste ja selle 10 erinevat tüüpi kohta Oracle'i ühendustega. Lisateavet leiate ka meie muudest seotud artiklitest -

  1. Liitumiste tüübid SQL-is
  2. Tableau liitub
  3. Oracle Warehouse Builder
  4. Oracle'i stringi funktsioonid
  5. Mis on päring ja millised on Oracle'i päringute tüübid?
  6. MySQL-i 6 parimat liitumistüüpi koos näidetega
  7. 9 parima oraaklause juhend (näide) l
  8. VALI MySQL | MySQL-is valimise näited

Kategooria: