Johdatus liittymiin MySQL: ssä
MySQL Joins on tärkeä rooli, kun joudumme yhdistämään kaksi taulukkoa yhdessä perustuen yhteen tai useampaan kahden taulukon yhteiseen arvoon.
Esimerkki : Oletetaan, että meillä on kaksi taulukkoa, yksi on työntekijätaulukko, joka koostuu työntekijän tunnuksesta, phn_nosta, palkasta ja osastosta. Toinen taulukko on osoitetaulukko, joka koostuu työntekijän tunnuksesta ja osoitteesta. Jos meidän on selvitettävä työntekijän tunnus, osasto ja osoite, meidän on liityttävä molempiin taulukoihin, jotka jakavat yhteisen kentän työntekijän tunnukseksi.
Kysely :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
MySQL: n kuusi suosituinta liittymistyyppiä
MySQL: ssä on erityyppisiä liittymiä. Alla mainitut liittymiset kohtaavat päivittäisessä käytössä ja ovat hyödyllisimpiä suorittaessaan monia kyselyitä tosiasiallisissa tilanteissa.
- Sisäinen liittyminen
- Vasen liittyä
- Oikea liittyminen
- Täysi ulompi liitos
- Itseliitos
- Risti liittyä
1. Sisäinen liittyminen
Sisäinen liittymä palauttaa arvon, joka vastaa molemmissa taulukoissa.
Tämä osa tulee tulosteena yllä olevan kuvan osoittamalla tavalla.
Esimerkki 1:
Emp_id | osasto | palkkaus |
1001 | SE | 1000 |
1002 | CSR | 800 |
1003 | SE | 2000 |
Tämä on työntekijöiden taulukko.
Emp_id | Osoite |
1002 | Delhi |
1003 | Bangalore |
1005 | Bbsr |
Tässä on näiden työntekijöiden osoitetaulukko. Vanhemman taulukon työntekijän ensisijaista avainta emp_id käytetään vieraana avaimena osoitetaulussa, joka on alataulukko. Löydämme yhden työntekijän tunnus, osasto ja osoite käyttämällä sisäistä liittymää. Koska sisäiset liittymistilat, se hakee tietueet, jotka ovat läsnä / yhteisiä molemmissa taulukoissa.
kysely:
SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;
Annamme aliaksen taulukonimeen vain välttääksemme aikaavieviä. Yllä olevassa kyselyssä käytämme alias 'emp' työntekijätaulukolle ja 'ads' osoitetaululle.
lähtö:
Emp_id | osasto | Osoite |
1002 | CSR | Delhi |
1003 | SE | Bangalore |
Kuten yllä olevassa esimerkissä emp_id 1002 ja 1003 olivat yhteisiä molempien taulukoiden välillä, sisäinen liittymiskomento hakee tulosteen vain näille työntekijöille.
Esimerkki 2:
Täällä meillä on 2 taulukkoa, taulukko1 ja taulukko2. Molemmat taulukot koostuvat yhdestä attribuutista vastaavasti sarakkeina A ja sarakkeina B.
Pöytä 1
Sarake A |
1 |
1 |
2 |
3 |
4 |
taulukko 2
Sarake B |
1 |
2 |
2 |
3 |
3 |
5 |
kysely:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
lähtö:
Sarake A | Sarake B |
1 | 1 |
1 | Tyhjä |
2 | 2 |
Tyhjä | 2 |
3 | 3 |
Tyhjä | 3 |
2. Vasen liittyminen
Tämä yhdistäminen palauttaa kaikki tietueet vasemmalta taulukolta ja vastaavat tietueet oikealta taulukolta.
Kuten yllä olevasta kaaviosta käy ilmi, se koostuu kaikista taulukon A tietueista ja A: n ja B: n tietueista.
Esimerkki 1:
Asiakas ID | Nimi | Kaupunki |
1 | Harish | Cuttack |
2 | David | Bangalore |
3 | Mahesh | Bhubaneswar |
4 | sam | Kolkata |
Asiakaspöytä:
Tilausnumero | Määrä | Asiakas ID |
19868 | 7575, 00 | 4 |
19976 | 434654, 00 | 2 |
99680 | 7457, 00 | 3 |
Tilaustaulukko:
Selvitämme asiakkaan tunnuksen, nimen ja tilausnumeron käyttämällä vasenta liittymää.
kysely:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
lähtö:
Asiakas ID | Nimi | Tilausnumero |
1 | Harish | tyhjä |
2 | David | 19976 |
3 | Mahesh | 99680 |
4 | sam | 19868 |
Kuten keskustelimme tästä vasemmasta liittymisestä, haettiin kaikki asiakastunnukset asiakaspöydältä ja yhteiset tunnukset molempien taulukoiden välillä. Asiakkaan_id '1' kohdalla se näkyy nollana, koska 'asiakas' tunnusta 1 ei ole tilaustaulukossa.
Esimerkki 2:
Täällä meillä on 2 pöytää, taulukko1 ja taulukko2. Molemmat taulukot koostuvat yhdestä attribuutista vastaavasti sarakkeina A ja sarakkeina B.
Pöytä 1
Sarake A |
1 |
1 |
2 |
2 |
3 |
taulukko 2
Sarake B |
1 |
2 |
2 |
4 |
4 |
5 |
5 |
kysely:
If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;
Sarake A | Sarake B |
1 | 1 |
1 | Tyhjä |
2 | 2 |
2 | 2 |
3 | Tyhjä |
3. Liity oikein
Tämä yhdistäminen palauttaa kaikki tietueet oikealta taulukolta ja vastaavat tietueet vasemmalta taulukolta.
Yllä oleva kaavio osoittaa, että se noutaa kaikki tietueet taulukosta B ja molemmissa taulukoissa olevan yhteisen tietueen.
Esimerkki:
Asiakas ID | Nimi | Kaupunki |
3 | Mahesh | Bhubaneswar |
4 | sam | Kolkata |
5 | RAM | Mumbai |
Asiakaspöytä:
Tilausnumero | Määrä | Asiakas ID |
19868 | 7575, 00 | 4 |
19976 | 434654, 00 | 2 |
99680 | 7457, 00 | 3 |
Tilaustaulukko:
Selvitämme asiaan liittyvän asiakkaan_nimen, nimen ja tilausnumeron oikealla liittymisellä.
kysely:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
lähtö:
Asiakas ID | Nimi | Tilausnumero |
2 | tyhjä | 19976 |
3 | Mahesh | 99680 |
4 | sam | 19868 |
Kun teimme oikean liittymisen täällä, niin kysely haki kaikki asiakkaan tunnukset tilaustaulusta ja molemmissa taulukoissa olevat yhteiset tietueet.
4. Täysi ulkoinen liittyminen
Täysi ulkoinen liitos palauttaa kaikki tietueet molemmista taulukoista, jos on yhteinen kenttä jaettu.
Esimerkki:
Asiakas ID | Nimi | Kaupunki |
3 | Mahesh | Bhubaneswar |
4 | sam | Kolkata |
5 | RAM | Mumbai |
Asiakaspöytä:
Tilausnumero | Määrä | Asiakas ID |
19868 | 7575, 00 | 4 |
19976 | 434654, 00 | 2 |
99680 | 7457, 00 | 3 |
Tilaustaulukko:
Selvitämme siihen liittyvät asiakkaan_nimi, nimi ja tilaustunnus käyttämällä täydellistä ulkoista liittymää.
kysely:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;
lähtö:
Asiakas ID | Nimi | Tilausnumero |
2 | tyhjä | 19976 |
3 | Mahesh | 99680 |
4 | sam | 19868 |
5 | RAM | tyhjä |
Tämä täysi ulompi liittymä haki kaikki asiakkaan tunnukset asiakaspöydältä samoin kuin tilauspöytä.
5. Liity itse
Itse liittyminen on säännöllinen liittyminen ja tässä taulukko liittyy vain itsensä kanssa.
Emp_id | Nimi | Puhelin ei | Kaupunki | Maa |
1001 | R. Madhvan | 9687687698 | Bangalore | Intia |
1002 | Gobu Sharma | 9856453423 | Pune | Intia |
1003 | Debasish Das | 8765456787 | Mumbai | Intia |
1004 | Amit Rout | 4567788635 | Pune | Intia |
1005 | Sambit Kar | 8789887873 | Hyderabad | Intia |
Tässä on useista kentistä koostuva työntekijätaulukko. Selvitämme samassa kaupungissa asuvat työntekijät.
Kysely :
SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;
Tulos :
Employee_name1 | Employee_name2 | e1.city |
Gobu Sharma | Amit Rout | Pune |
Amit Rout | Gobu Sharma | Pune |
6. Rajat liittyä
Tämä yhdistäminen tuottaa tuloksen, jossa ensimmäisen taulukon rivien lukumäärä kerrotaan toisen taulukon rivien kanssa. Tällaista tulosta kutsutaan Cartesian-tuotteeksi. Jos käytämme WHERE-lauseketta tämän liittymisen yhteydessä, se toimii sisäisenä liittymänä.
Esimerkki:
Prod_id | Tuotteen nimi | Prod_unit | Company_id |
1 | Chex-sekoitus | kpl | 12 |
2 | Cheez-it | kpl | 15 |
3 | Keksi | kpl | 16 |
Tuotelista :
Company_id | Yrityksen nimi | Company_city |
15 | foodies | Delhi |
16 | Jack n Jill | Cuttack |
17 | luonnollinen | Bangalore |
Yritystaulukko:
Sovelemme ristiin liittymistä näihin taulukoihin.
Kysely :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Tulos :
p.product_name | p.prod_unit | c.company_name |
Chex-sekoitus | kpl | foodies |
Cheez-it | kpl | foodies |
Keksi | kpl | foodies |
Chex-sekoitus | kpl | Jack n Jill |
Cheez-it | kpl | Jack n Jill |
Keksi | kpl | Jack n Jill |
Chex-sekoitus | kpl | luonnollinen |
Cheez-it | kpl | luonnollinen |
Keksi | kpl | luonnollinen |
johtopäätös
Näiden liittymien merkitys on erittäin tärkeä, kun työskentelet reaaliaikaisissa skenaarioissa ja myös joissakin muissa tekniikoissa. Näkyvyyksissä, kuten Tableau ja Power BI, liittymisillä on tärkeä rooli. Tämän jäsennelty käytäntö on avain näiden uusien tekniikoiden ja taitojen upottamiseen.
Suositeltava artikkeli
Tämä on opas Liittymät MySQL: ään. Tässä keskustellaan MySQL: n 6 suosituimmasta liittymistyypistä, kuten Sisäinen, Vasen, Oikea, Täysi, Itse, Risti ja sen esimerkit sekä Kysely ja Tulos. voit myös käydä läpi ehdotetut artikkelimme saadaksesi lisätietoja -
- 10 parasta MySQL-komentoa
- Johdanto MySQL-operaattoreihin
- MySQL vs. SQLite | 14 suosituinta vertailua
- 23 suosituinta MySQL-merkkijono-toimintoa
- Selitä MySQL: n lisäyskomento esimerkeillä
- Ensisijaisen avaimen ja vieraan avaimen kuusi tärkeintä eroa