Bestill etter beskrivelse. Arbeid med databasen. Sortering av data som et resultat av en SQL-spørring. Rekkefølgen av ORDER BY-kommandoen i en spørring

Ofte er det behov for å vise resultatet av en spørring i en bestemt rekkefølge, for eksempel alfabetisk. For dette har DBMS spesiell funksjonSQL-språk- sortering. Samtidig kan programmereren velge hvilke felt og i hvilken rekkefølge det skal skje for å oppnå ønsket resultat uten å bruke seriøse programmeringsferdigheter.

Hva er sortering i en database?

Arbeid med databaser er hele tiden forbundet med en stor mengde informasjon som må bestilles. For tiden er det en rekke DBMS som har et bredt spekter av funksjoner, de mest populære er Oracle og MS SQL. Sortering av informasjon, som en av hovedprosedyrene i arbeidet med databasen, leveres av en spesiell innebygd funksjon i hver av dem.

Rangeringsdata lar deg forenkle søkeprosessen, og hjelper i noen tilfeller til å løse noen problemer eller optimalisere programmet. SQL-sortering utføres av et separat valgt felt, og om nødvendig, hvis det er identiske verdier i elementene i dette feltet, kan du spesifisere Ekstra alternativer, definere arrangementet av rader.

Sorter kommando

SQL-sortering i databasen er gitt ved å bruke ORDER BY-funksjonen. Så når du viser informasjon fra databasen, etter å ha spesifisert kolonnene og tabellene som lesingen skal gjøres fra, er det nødvendig å spesifisere sorteringskommandoen i spørringen, og deretter bestemme feltet eller feltene som sorteringen skal utføres med.

Hvis du for eksempel trenger å hente data fra Navn- og Alder-feltene fra Personer-tabellen, mens du viser resultatet i alfabetisk rekkefølge etter Navn-kolonnen, vil følgende spørring hjelpe: VELG Navn, Alder FRA personer BESTILL ETTER NAVN.

Hvordan sette sorteringsrekkefølge?

Moderne forhold utgjør ulike oppgaver for programmerere, og noen ganger er det nødvendig å forhåndsbestemme i hvilken rekkefølge resultatet skal vises - i synkende eller stigende rekkefølge, alfabetisk eller i omvendt rekkefølge? Og for dette, i SQL, bestemmes sorteringsrekkefølgen ved å legge til et nøkkelord i spørringen. Etter å ha valgt feltene og tabellene som ønsket informasjon skal hentes fra, må du legge til ORDER BY, og deretter angi navnet på kolonnen du vil sortere etter.

For å få omvendt rekkefølge, må du spesifisere DESC-parameteren etter navnet. Hvis det er nødvendig å sortere elementene etter to eller flere kriterier, er kolonnene atskilt med komma, og rangeringsprioritet vil bli gitt til feltet som kommer først i listen. Det er verdt å merke seg at rekkefølgen av elementer i omvendt rekkefølge, DESC-parameteren gir kun ett felt hver, etter navnet som dette nøkkelordet er angitt, derfor må det om nødvendig spesifiseres i alle valgte kolonner.

Alternative sorteringsmetoder

Hvis det ikke er mulig å bruke den innebygde SQL-sorteringsfunksjonen, kan en av de velkjente algoritmene skrives. Hvis det er nødvendig å oppnå den raskeste rekkefølgen av elementer, er det verdt å bruke en metode basert på halvbryting av en rekke elementer. Også veldig populære er "boble" rangeringsmetoder, der to tilstøtende elementer byttes i tilfelle feil plassering, "heap sort", som sender det største elementet til slutten av listen, og "insert sort", som forhåndsbestemmer plassering av hvert element etter tur.

Selvskreven skriving av algoritmen vil ikke øke hastigheten på sorteringen betydelig, men det vil bidra til utvikling av programmeringsferdigheter, og vil også tillate deg å endre prosessen ved å justere rangeringsskjemaet for en spesifikk database for å øke effektiviteten av programmet.

Ved henting av data er det viktig å få det i en bestemt rekkefølge. Sortering kan gjøres på alle felt med hvilken som helst datatype. Dette kan sorteres i stigende eller synkende rekkefølge for numeriske felt. For tegn (tekst) felt kan dette sorteres i alfabetisk rekkefølge, selv om det faktisk også er sortering i stigende eller synkende rekkefølge. Det kan også utføres i alle retninger - fra A til Å, og omvendt fra Å til A.

Essensen av sorteringsprosessen er å bringe sekvensen til en viss rekkefølge. Du kan lære mer om sortering i artikkelen "Sorteringsalgoritmer" For eksempel sortering av en vilkårlig numerisk sekvens i stigende rekkefølge:

2, 4, 1, 5, 9

skal resultere i en ordnet sekvens:

1, 2, 4, 5, 6

På samme måte, når du sorterer i stigende rekkefølge av strengverdier:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

resultatet skal være:

Ivanov Andrey, Ivanov Ivan, Petrov Petr

Her flyttet strengen "Ivanov Andrey" til begynnelsen, siden sammenligningen av strenger utføres karakter for karakter. Begge linjene starter med de samme karakterene "Ivanov". Siden tegnet "A" i ordet "Andrey" kommer tidligere i alfabetet enn tegnet "I" i ordet "Ivan", vil denne linjen bli plassert tidligere.

Sortering i SQL Query

For å utføre sortering må du legge til ORDER BY-kommandoen til spørringsstrengen. Etter denne kommandoen vises feltet som sorteringen utføres med.

For eksempler bruker vi varetabellen:

num
(Artikkelnummer)
tittel
(Navn)
pris
(pris)
1 Mandarin50
2 Vannmelon120
3 En ananas80
4 Banan40

Dataene her er allerede sortert etter "num"-kolonnen. La oss nå bygge en spørring som viser en tabell med produkter sortert alfabetisk:

PLUKKE UT * FRA varer BESTILL etter tittel

SELECT * FROM varer - spesifiserer å velge alle felt fra varetabellen;

ORDER BY - sorteringskommando;

tittel er kolonnen å sortere etter.

Resultatet av en slik spørring er følgende:

num tittel pris
3 En ananas80
2 Vannmelon120
4 Banan40
1 Mandarin50

Du kan også sortere etter hvilket som helst av feltene i tabellen.

Sorteringsretning

Som standard sorteres ORDER BY-kommandoen i stigende rekkefølge. For å kontrollere sorteringsretningen manuelt, etterfølges kolonnenavnet av nøkkelordet ASC (stigende) eller DESC (synkende). Derfor, for å vise tabellen vår i synkende rekkefølge av priser, må vi sette søket slik:

PLUKKE UT * FRA varer BESTILLE ETTER pris DESK

Sortering i stigende rekkefølge vil være:

PLUKKE UT * FRA varer BESTILLE ETTER pris ASC

Sortering etter flere felt

SQL tillater sortering etter flere felt samtidig. For å gjøre dette, etter ORDER BY-kommandoen, er de nødvendige feltene spesifisert atskilt med komma. Rekkefølgen i søkeresultatet vil bli konfigurert i samme rekkefølge som sorteringsfeltene er spesifisert.

kolonne 1 kolonne 2 kolonne 3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 en
1 3 en
3 4 en

Sorter tabellen i henhold til følgende regler:

PLUKKE UT * FRA mytable ORDER BY column1 ASC, column2 DESC, column3 ASC

De. første kolonne stigende, andre synkende, tredje igjen stigende. Spørringen vil sortere radene etter den første kolonnen, deretter, uten å ødelegge den første regelen, etter den andre kolonnen. Da, på samme måte, uten å bryte de eksisterende reglene, ifølge den tredje. Resultatet er et datasett som dette:

kolonne 1 kolonne 2 kolonne 3
1 3 en
1 3 c
1 2 en
2 2 b
2 1 b
3 1 en
3 1 c

Rekkefølgen av ORDER BY-kommandoen i en spørring

Radsortering utføres oftest sammen med en datavalgbetingelse. ORDER BY-kommandoen plasseres etter WHERE-utvalgsleddet. For eksempel velger vi produkter med en pris på mindre enn 100 rubler, sortert etter navn i alfabetisk rekkefølge:

PLUKKE UT * FRA varer HVOR pris 100,- BESTILL ETTER pris ASC

ORDER BY-leddet i Access sorterer postene som returneres av en spørring i stigende eller synkende rekkefølge etter verdiene til det eller de spesifiserte feltene.

Syntaks

PLUKKE UT Feltliste
FRA bord
HVOR utvalg_tilstand
[, felt2 ][, ...]]]

SELECT-setningen som inneholder ORDER BY-leddet inkluderer følgende elementer:

Merknader

ORDER BY-klausulen er valgfri. Den bør brukes når du skal vise data i sortert form.

Standard sorteringsrekkefølge er stigende (A til Å, 0 til 9). De to eksemplene nedenfor viser sortering av ansattes navn etter etternavn.

VELG Etternavn, Fornavn
FRA ansatte
BESTILL ETTER Etternavn;
VELG Etternavn, Fornavn
FRA ansatte
BESTILL ETTER Etternavn ASC;

For å sortere i synkende rekkefølge (Z til A, 9 til 0), legg til det reserverte ordet DESC på slutten av hvert felt du vil sortere poster etter. Eksemplet nedenfor sorterer etternavnene til ansatte i synkende lønnsrekkefølge.

VELG Etternavn, Lønn
FRA ansatte
BESTILL ETTER lønn DESC, Etternavn;

Hvis du angir et felt i ORDER BY-leddet som inneholder data av typen Memo eller OLE-objekter, vil det oppstå en feil. Kjerne DBMS Microsoft Access støtter ikke sortering på denne typen felt.

ORDER BY-leddet er vanligvis det siste elementet i en SQL-setning.

Ytterligere felt kan inkluderes i ORDER BY-klausulen. Postene blir først sortert etter feltet som er oppført først i ORDER BY-klausulen. Postene med samme verdi i det første feltet sorteres deretter etter feltet som er spesifisert i det andre feltet, og så videre.


Neste loop:

Trinn 8: Enkel sortering

Hvis resultatet av SQL-spørringen din skulle bli kildematerialet til en viss rapport, blir spørsmålet om å sortere dataene i den ekstremt viktig, siden det er veldig vanskelig for en person som leser en rapport som ikke er riktig sortert å raskt finne rapporten en del av informasjonen han trenger i den. For å sortere data etter kolonnene i søkeresultatet (i vårt tilfelle etter feltene i tabellen), bruker SQL nøkkelordet ORDER BY. Et eksempel på den enkleste sorteringen er gitt nedenfor. Basert på spørringen fra trinn 2: «Spørring med et enkelt utvalgskriterium». Vi sorterer ansatte etter S_NAME-feltet (fullt navn).

VELG S_NAME, S_EXPERIENCE FRA D_STAFF WHERE S_EXPERIENCE

Sortering av resultatet av en SQL-spørring etter ett felt.

Trinn 9. Kompleks sortering

Ofte, og nesten alltid, er det nødvendig å sortere data etter mer enn én kolonne, og ikke alltid i stigende rekkefølge. SQL-syntaksen antar, etter nøkkelordet ORDER BY, en kommadelt liste over kolonner, samt en sorteringsmetode for hver kolonne: i stigende rekkefølge av verdier - ASC eller synkende rekkefølge - DESC. I eksemplet nedenfor viser vi poster for alle ansatte i synkende ansiennitetsrekkefølge. Ansatte med samme tjenestetid er sortert alfabetisk.

VELG S_EXPERIENCE, S_NAME FRA D_STAFF BESTILLING AV S_EXPERIENCE DESC, S_NAME ASC


Sortering av SQL-spørringsresultatet etter to felt.

Ganske ofte brukes omvendt sorteringsrekkefølge med [dato]-kolonner. Hvis datoen for eksempel lagrer datoen da informasjonen ble lagt inn, er det ved tilbakesortering helt i begynnelsen av listen de oppføringene som ble lagt til nylig i forhold til resten. Hvis spørringen henter nyhetskunngjøringer fra databasen, får vi en liste over kunngjøringer sortert i synkende rekkefølge etter deres relevans, noe som kan være svært nyttig, siden kunngjøringer vanligvis leses fra topp til bunn, og ikke alle vises på nyheter nettsteder, men bare noen få de mest "ferske".




Topp