MySQL tiltrer Tutorial

Den BLI uttalelse i MySQL brukes til å kombinere data fra to eller flere tabeller i et felles sett. Tabellene er kombinert via en felles søyle i hver tabell. Søylene behøver ikke å ha samme navn, men de må inneholde det samme datatype. MySQL oppfyller de fleste, men ikke alle, av de vanlige SQL begrensninger for kombineringer. Tiltrer kan brukes i SELECT, UPDATE og DELETE-setninger. Denne artikkelen vil fokusere på SELECT-setningen.

indre tiltrer

Følgende tabeller vil bli brukt for å illustrere hvert av sammenføyningene:

adresse
fname lname staddress zip
Kris Miller 301 Anywhere St 17598
Steve Fetterhoff 305 St. Elsewhere Ave 17989
James Smith 623 Kensington Ct 98539

zip
by stat postnummer
Lancaster PA 17598
Wiconisco PA 17989
Orange CA 98539

Indre tiltrer kombinere verdiene av to tabeller og kombinere dem til å produsere resultater. De kommer tilbake bare de postene som tilfredsstiller delta krav, og ingen som ikke gjør det.

Cross tiltrer ta hver p fra en tabell, og koble den til hver rad i den andre tabellen med følgende syntaks:

SELECT * FROM adresse, zip

Du kan erstatte komma i eksempelet ovenfor, med søkeordet BLI.

SELECT * FROM adresse BLI zip

Disse uttalelsene gir følgende resultater:

| Kris | Miller | 301 Anywhere St | 17598 | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. Elsewhere Ave | 17989 | Lancaster | PA | 17598 |

| James | Smith | 623 Kensington Ct | 98539 | Lancaster | PA | 17598 |

| Kris | Miller | 301 Anywhere St | 17598 | Wiconisco | PA | 17989 |

| Steve | Fetterhoff | 305 St. Elsewhere Ave | 17989 | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | 98539 | Wiconisco | PA | 17989 |

| Kris | Miller | 301 Anywhere St | 17598 | Orange | CA | 98539 |

| Steve | Fetterhoff | 305 St. Elsewhere Ave | 17989 | Orange | CA | 98539 |

| James | Smith | 623 Kensington Ct | 98539 | Orange | CA | 98539 |

For disse to tabellene, resultatene er ikke veldig nyttig. De viser bare en kombinasjon av de to tabeller i en enkelt tabell.

En Equi Bli med eller Regular Bli er et kors delta med en restriktiv WHERE-leddet.

SELECT fname, lname, staddress, by, stat, zip.zip Fra adresse, postnummer HVOR address.zip = zip.zip

eller ved hjelp av søkeordet BLI, som:

SELECT address.fname, address.lname, address.staddress, zip.city, zip.state, zip.zip Fra adresse BLI zip PÅ address.zip = zip.zip

Dette delta avkastning adressene, og den eksakte syntaks skaper et riktig formatert e-postliste.

| Kris | Miller | 301 Anywhere St | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. Elsewhere Ave | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | Orange | CA | 98539 |

Notasjonen "zip.zip" sier å bruke postnummeret fra zip-tabellen. Denne notasjonen lar deg definere nøyaktig hvilke kolonner skal returneres. Hvis kolonnenavnet ikke er gjentatt i begge tabellene, trenger du ikke å bruke "table.column" notasjon, men hvis det gjentas, må du spesifisere hvilken tabell som skal brukes.

Du kan også lage denne uttalelsen ved å bruke BRUKE klausulen. For BRUKE klausulen skal virke, må hvert bord inneholde en felles kolonne (i dette eksempelet felles kolonnen ville være 'zip'). Den reviderte erklæringen vil være:

SELECT fname, lname, staddress, by, stat, zip.zip Fra adresse BLI zip BRUKE zip;

ytre tiltrer

Ytre tiltrer kombinere to eller flere tabeller, men de krever ikke at de sammenkoblede tabellene inneholder samsvarende poster. Med andre ord, avhengig av typen av ytre delta som blir forespurt, kan det være en rad eller rader som har NULL-verdier i datakolonnene til en av tabellene. Ytre sammenføyninger kan enten venstre eller høyre tiltrer.

For å gi eksempler for denne seksjonen følgende posten vil bli lagt til adressen tabellen:

Pam Kasper 501 W 69th St 80907

Og, vil følgende posten legges til zip tabellen:

New York NY 50647

En venstre delta returnerer alle poster som samsvarer med søket pluss uovertruffen poster i venstre bordet i delta.

SELECT fname, lname, staddress, by, stat, zip.zip Fra adresse VENSTRE BLI zip BRUKE (zip)

Resultatene vil være:

Kris | Miller | 301 Anywhere St | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. Elsewhere Ave | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | Orange | CA | 98539 |

| Pam | Kasper | 501 W 69th St | NULL | NULL | NULL

Som du kan se, er alle postene fra venstre tabellen (adresse) tilbake, med NULL verdier for de manglende poster fra tabellen til høyre.

En riktig delta er det motsatte av en venstre delta.

SELECT fname, lname, staddress, by, stat, zip.zip Fra adresse HØYRE BLI zip BRUKE (zip)

| Kris | Miller | 301 Anywhere St | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. Elsewhere Ave | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | Orange | CA | 98539 |

| NULL | NULL | NULL | New York | NY | 50647 |​​