MySQL tiltrer Sivil Tutorial

MySQL er en åpen kildekode relasjonsdatabase management system (RDBMS) som enkeltpersoner og bedrifter ofte bruker for å kjøre tilbake slutten av webapplikasjoner. I SQL, blir ofte frustrere nye brukere. Som databasene blir større, blir det avgjørende for spørringer for å bruke tiltrer effektivt. MySQL er BLI søkeord gjør det lettere å jobbe med både ny og eldre kode.

indre tiltrer

Når du tenker på å bli med to bord, har du sannsynligvis tenke på en spørring med en enkel delta i en tabell som ansatte med en tabell som Avdelinger:

SELECT Employees.last_name, Employees.first_name, Departments.department_name
Fra avdelinger, ansatte
HVOR Departments.department_id = Employees.department_id

Dette er en indre delta. Den henter bare de radene der department_id er nøyaktig lik i begge tabellene. Ovennevnte koden fungerer i MySQL, men du kan finne det mindre lesbar enn følgende:

SELECT Employees.last_name, Employees.first_name, Departments.department_name
Fra Avdelinger
INNER JOIN Medarbeidere
PÅ Departments.department_id = Employees.department_id

Disse to spørsmål produsere akkurat samme effekt. Forskjellen er at ved å bruke MySQL BLI søkeord, har du gjort det tydeligere hva slags bli med du brukte. Siden indre delta er standard, hvis du la ut søkeordet INNER, MySQL fortsatt utfører en indre delta.

ytre tiltrer

Hvis du har ansatte som ikke er tilordnet til en bestemt avdeling, og har en NULL verdi for deres department_id, ovennevnte delta vil ikke vise de ansatte i det hele tatt. Hvis du vil at alle ansatte om de har en avdeling eller ikke, må du bruke en ytre delta.

MySQL bruker venstre eller høyre med den BLI nøkkelord for å angi at du vil ha en ytre delta, og fortelle det som tabellen du vil at NULL fra. Her er vår reviderte søket:

SELECT Employees.last_name, Employees.first_name, Departments.department_name
Fra Medarbeidere
LEFT Ytre BLI Department
PÅ Departments.department_id = Employees.department_id

Du får alle ansatte i produksjonen din, selv om MySQL finner ingen department_id å matche det ansatt posten. Tabellen du vil tillate nullverdier fra (avdelinger) er på venstre side av likhetstegnet.

Hvis du ønsket å se avdelinger med ingen ansatte i utskriften, vil du bruke en HØYRE YTRE BLI. Tabellen du vil tillate nullverdier fra i så fall er på høyre side av likhetstegnet.

Cross tiltrer

Gjør kryss tiltrer ved et uhell er en vanlig feil. Det er hva som skjer når du ikke spesifiserer en delta i det hele tatt. Hvis du ikke heller sette en delta i WHERE-ledd, eller bruke en av de andre BLI ... PÅ alternativer, får du alle mulige kombinasjoner av radene i hver av tabellene i Fra om de har et forhold eller ikke.

Hvis du trekker fra tre bord med henholdsvis 10, 20 og 3 rader, får du 10 x 20 x 3 rader som din totale produksjonen. Du kan se problemet dette medfører hvis databasen har mer enn noen få poster.

Sjelden, vil du ønsker å gjøre et kors delta med vilje. MySQL kan du bruke CROSS BLI ... PÅ syntaks for å vise hvem som helst å redigere koden din senere at korset delta var bevisst.