Johdatus liittymistyyppeihin SQL: ssä
SQL: n liittymislauseke palvelee kahden tai useamman taulukon rivien yhdistämistä. Rivien yhdistämisprosessi riippuu sarakkeesta, joka liittyy niihin. SQL: n neljä erityyppistä liittymistä nimetään sisäiseksi liittymäksi, vasemmalle liittymiselle, oikealle liittymiselle ja täysliitokselle. Ennen kuin voimme todella aloittaa minkä tahansa liittymisen käytön, tarvitsemme RDBMS: n tai relaatiotietokannan hallintajärjestelmän, johon lataamme tiedot. Yksi erittäin helppo tapa ymmärtää liitokset on Venn-kaavion käyttö. Venn-kaavion avulla on helppo mitata kaikki mahdolliset ja loogiset suhteet eri tietojoukkojen välillä. Ymmärtäkäämme tämä yksi kerrallaan Venn-kaavion avulla. Myöhemmin ymmärrämme eron näiden välillä käyttämällä joitain käytännön esimerkkejä. Oletetaan, että tietokannassamme on kaksi tietojoukkoa, jotka on tallennettu taulukon yksi ja taulukon muodossa. Kahden taulukon välillä on jonkin verran suhdetta, joka määritetään ensisijaisen avaimen ja vieraan avaimen käsitteen muodossa. Jos liität kaksi taulukkoa, joilla on jonkinlainen suhde, Venn-kaavioesitys skenaariosta on jotain,
Tämän päällekkäisyyden määrä määrää samankaltaisuuden kahden taulukon, ts. Taulukon A ja taulukon B välillä. Tämä tarkoittaa, että taulukon yhden tietueiden lukumäärä, jotka vastaavat taulukon 2 tietueita, edustaa päällekkäisyysosaa. Tämä on yksi osajoukko dataa. Saamme neljä erityyppistä liittymistä perustuen tietojoukkoon, jonka valitsemme kahdesta taulukosta.
Liittymisen syntaksi:
SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition
SQL-liittymien tyypit
- Sisäinen liittyminen
- Vasen liittyä
- Oikea liittyminen
- Täysi liittyminen
Seuraavaksi selitämme erityyppiset liitokset yksityiskohtaisesti.
1. Sisäinen liittyminen
Sisäisessä liitoksessa valitsemme vain tiedot, jotka ovat yhteisiä molemmissa taulukoissa. (eli osa 3 täällä) Jotta se olisi tarkempi, kaikki tietueet molemmista taulukoista, jotka vastaavat liitoksen yhteydessä mainittua ehtoa, poimitaan tästä liitoksesta.
Sisäisen liittymisen syntaksi:
SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition
2. Vasen liittyminen
Vasemmassa liittymässä valitaan kaikki tiedot vasemmasta taulukosta ja oikeasta taulukosta vain tietojoukko, joka vastaa liittymisen yhteydessä mainittua ehtoa (tässä alueella 1 + 3)
Vasemman liittymisen syntaksi:
SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
3. Liity oikein
Oikeassa liittymisessä valitsemme kaikki tiedot oikealta taulukolta ja vasemmasta taulukosta vain tietojoukon, joka vastaa liittymisen yhteydessä mainittua ehtoa (tässä 3 + 2)
Oikean liittymisen syntaksi:
SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
4. Täysi liittyminen
Täydellisessä liittymisessä molemmat taulukot muodostavat tietueet yhdistetään ja valitaan riippumatta ehdosta, jonka mukaan liittyminen on täyttynyt vai ei. (tässä 1 + 2 + 3)
Koko liittymisen syntaksi:
SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Esimerkkejä liittymisistä SQL: ssä
Tarkastellaan kahta alla olevaa taulukkoa:
1. Esimerkki tilauksesta
Taulukkotilaus sisältää yksityiskohdat asiakkaan tekemästä tilauksesta, kuten tilaustunnus, tilattujen tuotteiden lukumäärä, tilauksen määrä, tilauksen tehneen asiakkaan tunnus ja tilauksen tekemispäivä. Sellaista taulukkoa voi käyttää mikä tahansa online-sivusto tilauksen yksityiskohtien tallentamiseksi.
ORDER_DETAILS -taulukko:
Tilausnumero | No_of_Items | Tilausmäärä | Asiakas ID | Tilauspäivämäärä |
123 | 3 | 5500 | P_1 | 01.20.2019 |
234 | 2 | 6500 | P_12 | 10.02.2019 |
345 | 1 | 10000 | P_13 | 27.05.2019 |
456 | 4 | 4000 | P_14 | 07.11.2019 |
567 | 2 | 20656 | P_1 | 12.15.2019 |
678 | 3 | 15000 | P_11 | 10.27.2019 |
2. Esimerkki CUSTOMER_DETAILSista
Otetaan nyt toinen taulukko, johon asiakkaan tiedot tallennetaan, jotta tilaus voidaan toimittaa vastaavaan osoitteeseen. Asiakaspöydässä on siis asiakkaan tiedot, kuten asiakastunnus (cust_id), joka on yksilöllinen jokaiselle asiakkaalle. Nyt etunimi ja sukunimi on tallennettu kenttään nimeltä - Cust_First_Name ja Cust_Last_Name. Muihin kenttiin tallennetaan tiedot, kuten sähköpostiosoite, asiakkaan matkapuhelinnumero sekä osoite, PIN-koodi, kaupunki ja osavaltio. Voimme siis nähdä, että asiakaspöytämme näyttää jonkinlaiselta -
CUSTOMER_DETAILS -taulukko:
Cust_Id | Cust_First_Name | Cust_Last_Name | Pin-koodi | Osoite | Cust_Mobile | Kaupunki | Osavaltio | Cust_email |
P_50 | Alice | Pietari | 111111 | 330 xyz katu | 123 | Bangalore | KA | |
P_12 | James | Dsouza | 155511 | 420 abc-pesäke | 234 | Hyderabad | AP | |
P_15 | ahdistaa | savenvalaja | 123456 | 551 mg tie | 444 | Noida | Delhi | |
P_40 | Miley | Parker | 111121 | 11 jalkaa tie | 224 | Bangalore | KA | |
P_10 | Herman | Puska | 123423 | 34 th thanco Street | 432 | Delhi | Delhi | |
P_18 | dan | Ruskea | 134523 | 50. itsenäinen tie | 145 | Gurugram | Haryana | |
P_20 | James | Russel | 111111 | 101 mg tie | 678 | Bangalore | KA | |
P_1 | Miley | Madison | 100011 | 45. kaverappa-asettelu | 987 | Chennai | TN |
Nyt käyttämällä tätä esimerkkiä, ymmärrämme liitosten toiminnallisuus. Voimme nähdä, että kahden taulukon eli ORDER_DETAILS-taulukon ja CUSTOMER_DETAILS-taulukon välinen suhde määritetään avaimella, jolla on asiakastunnuksen arvo eli asiakas_Id, joka on ensisijainen avain CUSTOMER_DETAILS-taulukossa ja vieraalla avaimella ORDER_DETAILS-taulukko.
Muutamia tärkeitä asioita, jotka tässä huomioitava ennen kuin jatkamme, ovat:
- Kaikki CUSTOMER_DETAILS-taulukkomme asiakkaat eivät ole esittäneet tilauspyyntöä.
- Kaikilla ORDER_DETAILS -taulukoissamme olevilla tilauspyynnöillä ei ole asiakasnumeroa, joka on CUSTOMER_DETAILS-taulukossamme, mikä tarkoittaa, että joillakin tilauksilla ei ole yksityiskohtia asiakkaasta.
3. Sisäinen liittyminen
Sisäinen liittyminen antaa sinulle vain ne tietueet, joiden ehto täyttyy.
kysely:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
lähtö:
Cust_First_Name | Cust_email | No_of_Items | Tilausmäärä | Tilauspäivämäärä |
Miley | 3 | 5500 | 01.20.2019 | |
James | 2 | 6500 | 10.02.2019 | |
Miley | 2 | 20656 | 12.15.2019 |
4. Vasen liittyminen
Vasen liittyminen antaa sinulle kaikki tietueet vasemmasta taulukosta eli CUSTOMER_DETAILS-taulukosta. Jos asiakas ei ole tehnyt tilauksia, se palauttaa ORDER_DETAILS-taulukon sarakkeiden nolla-arvon.
kysely:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
lähtö:
Cust_First_Name | Cust_email | No_of_Items | Tilausmäärä | Tilauspäivämäärä |
Alice | TYHJÄ | TYHJÄ | TYHJÄ | |
James | 2 | 6500 | 10.02.2019 | |
ahdistaa | TYHJÄ | TYHJÄ | TYHJÄ | |
Miley | TYHJÄ | TYHJÄ | TYHJÄ | |
Herman | TYHJÄ | TYHJÄ | TYHJÄ | |
dan | TYHJÄ | TYHJÄ | TYHJÄ | |
James | TYHJÄ | TYHJÄ | TYHJÄ | |
Miley | 3 | 5500 | 01.20.2019 | |
Miley | 2 | 20656 | 12.15.2019 |
5. Oikea liittyminen
Oikein, Liity antaa sinulle kaikki tietueet oikealta taulukolta eli ORDER_DETAILS-taulukolta. Jos tilauksesta ei löydy asiakasrekisteriä, se palauttaa nolla-arvon CUSTOMER_DETAILS-taulukon sarakkeille.
kysely:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
lähtö:
Cust_First_Name | Cust_email | No_of_Items | Tilausmäärä | Tilauspäivämäärä |
Miley | 3 | 5500 | 01.20.2019 | |
James | 2 | 6500 | 10.02.2019 | |
TYHJÄ | TYHJÄ | 1 | 10000 | 27.05.2019 |
TYHJÄ | TYHJÄ | 4 | 4000 | 07.11.2019 |
Miley | 2 | 20656 | 12.15.2019 | |
TYHJÄ | TYHJÄ | 3 | 15000 | 10.27.2019 |
6. Täysi liittyminen
Full Join antaa sinulle kaikki tietueet, jotka on määritetty molemmista taulukoista.
kysely:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
lähtö:
Cust_First_Name | Cust_email | No_of_Items | Tilausmäärä | Tilauspäivämäärä |
Alice | TYHJÄ | TYHJÄ | TYHJÄ | |
James | 2 | 6500 | 10.02.2019 | |
ahdistaa | TYHJÄ | TYHJÄ | TYHJÄ | |
Miley | TYHJÄ | TYHJÄ | TYHJÄ | |
Herman | TYHJÄ | TYHJÄ | TYHJÄ | |
dan | TYHJÄ | TYHJÄ | TYHJÄ | |
James | TYHJÄ | TYHJÄ | TYHJÄ | |
Miley | 3 | 5500 | 01.20.2019 | |
Miley | 2 | 20656 | 12.15.2019 | |
TYHJÄ | TYHJÄ | 1 | 10000 | 27.05.2019 |
TYHJÄ | TYHJÄ | 4 | 4000 | 07.11.2019 |
TYHJÄ | TYHJÄ | 3 | 15000 | 10.27.2019 |
Liittymien edut SQL: ssä
- Nopeampi suorittaminen, mikä tarkoittaa haluttujen sarakkeiden nopeampaa hakua.
- Optimoitu, luettava ja ymmärrettävä
- Suorituskyvyn paraneminen.
johtopäätös
Kuten näimme, liitämme ja haemme kentät eri taulukoista JOIN: in avulla.
- Inner Join hakee tietueet, joissa annettu ehto täyttyy.
- Vasen liittyminen antaa sinulle kaikki vasemman taulukon rivit, vaikka annettu ehto ei täyttäisi.
- Oikea liittyminen antaa sinulle kaikki vasemman taulukon rivit, vaikka annettu ehto ei täyttäisi.
- Täysi liittymä palauttaa kaikki rivit, kun yhdessä taulukossa on vastaavuus.
- Liittymiskyselyjä voidaan käyttää komentoissa, kuten - VALITSE, Lisää, PÄIVITTÄ, POISTA.
- Liitokset tulevat myös toimeen erilausekkeiden kanssa, kuten - GROUP BY, SUB QUERIES, WHERE, KOKONAISTOIMINNOT jne.
Suositeltava artikkeli
Tämä on opas SQL-liittymän tyyppeihin. Tässä keskustellaan SQL: n erityyppisistä liittymistä ja sen eduista yhdessä esimerkkien kanssa. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -
- NoSQL: n edut
- SQL-hallintatyökalut
- Tietokanta SQL: ssä
- Jokerimerkki SQL: ssä
- MySQL: n kuusi suosittua liittymistyyppiä ja esimerkkejä