• Mitä on Sisäinen Liittyä?
  • mikä on uloin liittymä?
    • Suorittaa Ulompi Liittyy Käyttämällä ( + ) – Symboli

Kuten lähes kaikki relaatiotietokannat, Oracle mahdollistaa kyselyt luodaan, joka yhdistää tai JOIN rivit kahdesta tai useammasta taulukoita luoda lopullinen tulos asettaa., Vaikka on olemassa lukuisia erityyppisiä liitoksia, jotka voidaan suorittaa, yleisimpiä ovat INNER JOIN ja OUTER JOIN.

tässä opetusohjelmassa, me lyhyesti tutkia ero INNER ja OUTER JOIN ja sitten tutkia pika menetelmä Oracle tarjoaa suorittamiseksi OUTER JOINS erityisesti käyttämällä + operator-symboli.

mikä on sisäinen liittymä?,

Erinomainen INNER JOIN vuonna relaatiotietokanta on yksinkertaisesti yhdistää kaksi tai useampia taulukoita, joissa tulos ei vain sisältää tietoja, jotka täyttivät kaikki liittyä ehtoja.

esimerkiksi, tässä on perus – library skeema, jossa on kaksi taulukkoa: books ja languages.,>

Samaan aikaan, meidän books taulukko on language_id rivi, jonka useimmat, mutta eivät kaikki, kirjoja yksinkertaisesti sisältää language_id liittyy alkuperäinen julkaistu kielellä kirja:

SELECT * FROM booksORDER BY idFETCH FIRST 10 ROWS ONLY;id title author year_published language_id1 In Search of Lost Time Marcel Proust 1913 22 Ulysses James Joyce 1922 13 Don Quixote Miguel de Cervantes 1605 54 Moby Dick Herman Melville 1851 15 Hamlet William Shakespeare 1601 (null)6 War and Peace Leo Tolstoy 1869 87 The Odyssey Homer -700 98 The Great Gatsby F. Scott Fitzgerald 1925 19 The Divine Comedy Dante Alighieri 1472 1010 Madame Bovary Gustave Flaubert 1857 2

monissa tapauksissa, meillä voi halutessaan suorittaa INNER JOIN ja books ja languages taulukot joten sen sijaan katselu merkityksetön language_id arvo kunkin kirjan, voimme itse nähdä language name sijaan.,

SELECT b.id, b.title, b.author, b.year_published, l.name languageFROM books bINNER JOIN library.languages lON b.language_id = l.idORDER BY b.idFETCH FIRST 10 ROWS ONLY;id title author year_published language1 In Search of Lost Time Marcel Proust 1913 French2 Ulysses James Joyce 1922 English3 Don Quixote Miguel de Cervantes 1605 Spanish4 Moby Dick Herman Melville 1851 English6 War and Peace Leo Tolstoy 1869 Russian7 The Odyssey Homer -700 Greek8 The Great Gatsby F. Scott Fitzgerald 1925 English9 The Divine Comedy Dante Alighieri 1472 Italian10 Madame Bovary Gustave Flaubert 1857 French11 The Brothers Karamazov Fyodor Dostoyevsky 1880 Russian

on tärkeää huomata tässä on, että meidän tulos oli hieman erilainen edellä kaksi kyselyt. Ensimmäinen, olemme yksinkertaisesti listanneet ensimmäinen 10 kirjoja, mutta INNER JOIN kysely olemme vain palaa tuloksia, jotka täyttävät kaikki ehdot sekä taulukoita. Tästä syystä kirjaa Hamlet (joka on language_id arvo null tai tyhjä) on huomiotta ja ei palauteta tulos INNER JOIN.,

mikä on ulompi liittymä?

sen Sijaan, että yksinomaan palaa tuloksia, jotka täyttävät kaikki liittyä ehtoja, INNER JOIN, joka OUTER JOIN palauttaa ei vain tulokset, jotka täyttävät kaikki edellytykset, mutta myös palauttaa rivit yksi pöytä, joka ei täytä ehtoa. Taulukko, joka on valinnut tämän ”ohittaa” ehdollisen vaatimukset määritetään suunta tai ”puoli” liity, tyypillisesti kutsutaan LEFT tai RIGHT ulompi liittyy.,

Kun määritellään puolella oman OUTER JOIN, määrität taulukko, joka palaa aina sen rivin, vaikka vastapuolen pöydän toisella puolella on liittyä puuttuu tai null arvot osana liittyminen kunto.,

näin Ollen, jos me suorittaa samat JOIN kuten edellä, jos haluat hakea books ja language names tiedämme, että meidän books taulukon pitäisi aina palauttaa tiedot, joten meidän JOIN puolella olisi ”kohta kohti” meidän books taulukko, jolloin languages taulukko OUTER taulukko olemme kiinnittämällä se.,> paitsi että pieni muutos:

SELECT b.id, b.title, b.author, b.year_published, l.name languageFROM books bLEFT OUTER JOIN library.languages lON b.language_id = l.idORDER BY b.idFETCH FIRST 10 ROWS ONLY;id title author year_published language1 In Search of Lost Time Marcel Proust 1913 French2 Ulysses James Joyce 1922 English3 Don Quixote Miguel de Cervantes 1605 Spanish4 Moby Dick Herman Melville 1851 English5 Hamlet William Shakespeare 1601 (null)6 War and Peace Leo Tolstoy 1869 Russian7 The Odyssey Homer -700 Greek8 The Great Gatsby F. Scott Fitzgerald 1925 English9 The Divine Comedy Dante Alighieri 1472 Italian10 Madame Bovary Gustave Flaubert 1857 French

Kuten odotettua, käyttämällä LEFT OUTER JOIN sen sijaan, että edellinen INNER JOIN olemme saada molempien maailmojen parhaat puolet: Emme menettäneet mitään books tietueet (kuten Hamlet) yksinkertaisesti, koska language_id arvo on null tietueen, mutta kaikki tietueet, joissa language_id olemassa, saamme muotoiltuja language name saatu meidän languages taulukko.,

Esittävien Ulompi Liittyy Käyttämällä ( + ) – Symboli

Kuten viralliset asiakirjat, Oracle tarjoaa erityinen outer join operator (+ symboli), joka on lyhenne suorittamiseksi OUTER JOINS.

käytännössä + symboli on sijoitettu suoraan ehdollinen lausunto ja puolella valinnainen taulukossa (joka ei saa olla tyhjiä tai null arvojen sisällä ehdollinen).,

näin Ollen, voimme jälleen kirjoittaa meidän edellä LEFT OUTER JOIN selvitys käyttäen + operaattori, kuten niin:

tulokset ovat samat kuin vakio LEFT OUTER JOIN esimerkki edellä, joten emme sisällytä niitä täällä. Kuitenkin, siellä on yksi kriittinen näkökohta huomata noin syntaksia käyttäen + käyttäjän OUTER JOINS.

+ toiminnanharjoittajan on oltava vasemmalla puolella ehdollinen (vasemmalla puolella on yhtä kuin = merkki)., Siksi, tässä tapauksessa, koska haluamme varmistaa, että meidän languages taulukko on valinnainen taulukko, joka voi palata null arvot tänä vertailu, vaihdoimme järjestystä taulukot ehdollinen, joten languages on vasemmalla (ja on valinnainen) kun books on oikealla.

Lopuksi, koska tämä uusjako taulukon puolin ehdollisen kun käytät + operaattori, se on tärkeää ymmärtää, että edellä on yksinkertaisesti pika RIGHT OUTER JOIN., Tämä tarkoittaa, että tämä pätkä kysely:

FROM books b, library.languages lWHERE l.id (+)= b.language_id

…on käytännössä sama kuin tämä:

FROM library.languages lRIGHT OUTER JOIN books bON b.language_id = l.id