Utviklingen av en hvilken som helst database innebærer ikkebare skapelse og fylling av tabeller med en rekke opplysninger, men også videre arbeid med dataene. For riktig utførelse av ulike oppgaver for å velge data fra tabeller og generere rapporter, brukes standard Select konstruksjon.
Hvis vi vurderer problemet med å velge data ellerKonstruksjonen av noen rapport, du kan bestemme nivået på kompleksitet av denne operasjonen. Som regel, når du arbeider med alvorlige databaser (på volumet av informasjon), som dannes, for eksempel i nettbutikker eller store selskaper, vil ikke prøvetaking av data være begrenset til bare ett bord. Vanligvis kan prøvene være fra et ganske stort antall ikke bare sammenkoblede tabeller, men også de nestede spørringene / undersøkelsene som programmereren selv lager, avhengig av oppgaven som er tildelt den. For prøvetaking fra ett bord, kan du bruke det enkleste designet:
Velg * fra Person |
hvor Person er navnet på tabellen hvorfra dataene skal velges.
Hvis det er behov for å velge data fra flere tabeller, kan du bruke en av standarddesignene til å kombinere flere tabeller.
Hvis vi vurderer bruken av slike strukturer på opprinnelig nivå, kan vi skille mellom følgende mekanismer for å koble det nødvendige antall tabeller til prøven, nemlig:
Bruken av å bli med operatørbord i praksis kan læres ved å vurdere bruken av operatøren SQL - Inner Join. Et eksempel på bruken vil se slik ut:
Velg * fra Person Innerforbindelse Inndeling på Su_Person = Pe_ID |
SQL-språket og operatøren Join Join Join kan væreBruk ikke bare å slå sammen to eller flere tabeller, men også for å koble til andre undersøkelser, noe som i stor grad letter arbeidet med databaseadministratorer og som regel kan øke gjennomføringen av bestemte strukturelt komplekse spørsmål betydelig.
Hvis du vurderer å koble et stort antall undersøkelser og samle data til en enkelt tabell rad for rad, kan du også bruke Union og Union All operatører.
Bruken av disse designene vil avhenge av oppgaven som er tildelt utvikleren og resultatet som han ønsker å oppnå i slutten.
I de fleste tilfeller, for å fusjonere flereTabeller i SQL bruker operatøren Inner Join. Beskrivelsen av Inner Join i SQL er ganske enkelt for en gjennomsnittlig programmerer å forstå, som bare begynner å forstå databasene. Hvis vi vurderer beskrivelsen av operasjonsmekanismen for denne konstruksjonen, får vi følgende bilde. Operatørens logikk som helhet er basert på muligheten til å krysse og samplere bare de dataene som finnes i hver av tabellene som går inn i spørringen.
Hvis vi ser dette arbeidet ut fra grafisk tolkning, får vi strukturen til SQL Inner Join, et eksempel som kan vises ved hjelp av følgende skjema:
For eksempel har vi to bord, ordningen deraver vist i figuren. De har i sin tur et annet antall poster. I hver av tabellene er det felt som er koblet sammen. Hvis du prøver å forklare operatørens arbeid basert på figuren, vil det returnerte resultatet være i form av et sett med poster fra to tabeller hvor antallet relaterte felt sammenfaller. Enkelt sagt, spørringen vil bare returnere disse postene (fra tabell nummer to), data om hvilke er i tabellen nummer ett.
Som nevnt tidligere, er operatøren Inner Join, ogdet er hans syntaks som er uvanlig enkelt. For å organisere koblinger mellom tabeller i en prøve, vil det være nok å huske og bruke følgende hovedordning for å bygge en operatør, som er skrevet inn i en linje av program-SQL-koden, nemlig:
For kommunikasjon i denne operatøren, er hovedmenyenbordtaster. Som regel, i gruppen av tabeller som lagrer informasjon om ansatte, har tidligere beskrevet Person og Underavdeling minst en tilsvarende post. Så, la oss ta en nærmere titt på SQL Inner Join-setningen, et eksempel som ble vist litt tidligere.
Vi har et Personbord hvor vi lagrerInformasjon om alle ansatte som jobber i selskapet. Bare vær oppmerksom på at hovednøkkelen til denne tabellen er feltet - Pe_ID. Bare på den og det vil bli en haug.
Den andre underoppdelingstabellen vil lagreInformasjon om enhetene hvor ansatte jobber. Det er igjen knyttet til hjelpen av Su_Person-feltet med Person-tabellen. Hva sier det? Basert på dataskjemaet kan du si at avdelingstabellen for hver oppføring i tabellene Ansatte vil inneholde opplysninger om avdelingen de arbeider med. Det er for denne tilkoblingen at operatør Inner Join vil fungere.
For en mer forståelig bruk, vurder SQL Inner Join-setningen (eksempler på bruk for en og to tabeller). Hvis vi ser på et eksempel på et enkelt bord, er alt ganske enkelt:
Velg * fra Person Innerforbindelse Inndeling på Su_Person = Pe_ID |
SQL Inner Bli med operatør, bruk eksemplersom for valg av data fra flere tabeller kan organiseres som ovenfor, virker på et litt mer komplisert prinsipp. For to bord kompliserer vi problemet. For eksempel har vi avgangstabellen, som lagrer informasjon om alle avdelinger i hver avdeling. I denne tabellen registreres avdelingsnummer og ansattes nummer, og dataseksemplet skal suppleres med navn på hver avdeling. Se fremover, det er verdt å si at to metoder kan brukes til å løse dette problemet.
Den første måten er å koble avdelingstabellen til prøven. I dette tilfellet kan du organisere forespørselen på denne måten:
Velg Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name fra Person Innerforbindelse Inndeling på Su_Person = Pe_ID Innerforeningen Avreise Su_Depart = Dep_ID og Pe_Depart = Dep_ID |
Den andre metoden for å løse problemet er å brukesubquery, der ikke alle data, men bare nødvendige data, blir valgt fra avdelingstabellen. Dette, i motsetning til den første metoden, vil redusere søketiden.
Velg Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name fra Person Innerforbindelse Inndeling på Su_Person = Pe_ID Innerforening (Velg Dep_ID, Dep_Name, Pe_Depart fra Avreise) som T på Su_Depart = Dep_ID og Pe_Depart = Dep_ID |
Det skal bemerkes at denne utformingen ikke alltid erkan øke hastigheten på spørringen. Noen ganger er det tilfeller når det er nødvendig å bruke ytterligere prøvetaking av data i den midlertidige tabellen (hvis volumet er for stort), og deretter kombineres det med hovedprøven.
Å bygge komplekse spørsmål innebærerbruk for å velge data et betydelig antall tabeller og undersøkelser relatert til hverandre. Disse kravene kan tilfredsstille SQL Inner Join-syntaksen. Eksempler på bruken av operatøren i dette tilfellet kan være komplisert, ikke bare av prøver fra mange steder for datalagring, men også fra et stort antall nestede undersøkelser. For et bestemt eksempel kan du ta et utvalg av data fra systemtabeller (operatøren Inner Join SQL). Et eksempel - 3 bord - i dette tilfellet vil ha en ganske kompleks struktur.
I dette tilfellet legges tre flere til (til hovedbordet) og flere datavalgsbetingelser er oppgitt.
Når operatøren bruker Inner Join erhusk at jo mer komplisert spørringen, desto lengre vil den bli implementert, så det er verdt å lete etter måter å hurtigere utføre og løse oppgaven.
Til slutt vil jeg gjerne si en ting: Å jobbe med databaser er ikke det vanskeligste i programmeringen, så hvis du ønsker det, kan alle mestre kunnskapen om å bygge databaser, og til slutt få erfaring, vil du kunne jobbe med dem på profesjonelt nivå.
</ p>