Ordonați după descriere. Lucrul cu baza de date. Sortarea datelor ca rezultat al unei interogări SQL. Ordinea comenzii ORDER BY într-o interogare

Adesea este nevoie să afișați rezultatul unei interogări într-o anumită ordine, de exemplu, alfabetic. Pentru aceasta, DBMS are functie speciala pe Limbajul SQL- sortarea. În același timp, programatorul poate alege ce câmpuri și în ce ordine vor apărea pentru a obține rezultatul dorit fără a utiliza abilități serioase de programare.

Ce este sortarea într-o bază de date?

Lucrul cu baze de date este asociat în mod constant cu o cantitate mare de informații care trebuie comandate. În prezent, există o serie de SGBD care au o gamă largă de funcții, dintre care cele mai populare sunt Oracle și MS SQL. Sortarea informațiilor, ca una dintre principalele proceduri în lucrul cu baza de date, este asigurată de o funcție specială încorporată în fiecare dintre ele.

Clasificarea datelor vă permite să simplificați procesul de căutare și, în unele cazuri, ajută la rezolvarea unor probleme sau la optimizarea programului. Sortarea SQL se realizează printr-un câmp selectat separat și, dacă este necesar, dacă există valori identice în elementele acestui câmp, puteți specifica Opțiuni suplimentare, definind aranjarea rândurilor.

Comanda de sortare

Sortarea SQL în baza de date este furnizată prin utilizarea funcției ORDER BY. Așadar, la afișarea informațiilor din baza de date, după specificarea coloanelor și tabelelor din care se va face citirea, este necesar să specificați comanda de sortare în interogare, iar apoi să determinați câmpul sau câmpurile după care se va efectua sortarea.

De exemplu, dacă trebuie să obțineți date din câmpurile Nume și Vârstă din tabelul Persoane, în timp ce afișați rezultatul în ordine alfabetică după coloana Nume, atunci următoarea interogare vă va ajuta: SELECTAȚI Nume, Vârsta FROM Persoane ORDEREAȚI DUPĂ Nume.

Cum se stabilesc ordinea de sortare?

Condițiile moderne pun diverse sarcini pentru programatori și, uneori, este necesar să se predetermina în ce ordine va fi afișat rezultatul - în ordine descrescătoare sau crescătoare, în ordine alfabetică sau inversă? Și pentru aceasta, în SQL, ordinea de sortare este determinată prin adăugarea unui cuvânt cheie la interogare. După ce ați selectat câmpurile și tabelele din care se vor obține informațiile dorite, trebuie să adăugați ORDER BY, apoi să specificați numele coloanei după care doriți să sortați.

Pentru a obține ordinea inversă, trebuie să specificați parametrul DESC după nume. Dacă este necesară sortarea elementelor după două sau mai multe criterii, atunci coloanele sunt separate prin virgule, iar prioritatea de clasare va fi dată câmpului care se află primul în listă. Este de remarcat faptul că ordonarea elementelor în ordine inversă, parametrul DESC prevede doar un câmp fiecare, după numele căruia este indicat acest cuvânt cheie, prin urmare, dacă este necesar, trebuie specificat în toate coloanele selectate.

Metode alternative de sortare

Dacă nu este posibilă utilizarea funcției de sortare SQL încorporată, se poate scrie unul dintre algoritmii cunoscuți. Dacă este necesar să se obțină cea mai rapidă ordonare a elementelor, merită să utilizați o metodă bazată pe ruperea pe jumătate a unei serii de elemente. De asemenea, foarte populare sunt metodele de clasare „bubble”, în care două elemente adiacente sunt schimbate în cazul unei poziții incorecte, „heap sort”, care trimite cel mai mare element la sfârșitul listei și „insert sort”, care predetermina amplasarea fiecărui element pe rând.

Scrierea automată a algoritmului nu va crește semnificativ viteza de sortare, cu toate acestea, va contribui la dezvoltarea abilităților de programare și, de asemenea, vă va permite să modificați procesul prin ajustarea schemei de clasare pentru o anumită bază de date pentru a crește eficiența. a programului.

La preluarea datelor, este important să le obțineți într-o anumită ordine. Sortarea se poate face pe orice câmp cu orice tip de date. Acesta poate fi sortat în ordine crescătoare sau descrescătoare pentru câmpurile numerice. Pentru câmpurile de caractere (text), acestea pot fi sortate în ordine alfabetică, deși de fapt se sortează și în ordine crescătoare sau descrescătoare. De asemenea, poate fi efectuat în orice direcție - de la A la Z și invers de la Z la A.

Esența procesului de sortare este de a aduce secvența într-o anumită ordine. Puteți afla mai multe despre sortare în articolul „Algoritmi de sortare” De exemplu, sortarea unei secvențe numerice arbitrare în ordine crescătoare:

2, 4, 1, 5, 9

ar trebui să rezulte o secvență ordonată:

1, 2, 4, 5, 6

În mod similar, atunci când sortați în ordine crescătoare a valorilor șirurilor:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

rezultatul ar trebui să fie:

Ivanov Andrei, Ivanov Ivan, Petrov Petr

Aici șirul „Ivanov Andrey” sa mutat la început, deoarece compararea șirurilor se realizează caracter cu caracter. Ambele rânduri încep cu aceleași personaje „Ivanov”. Deoarece caracterul „A” din cuvântul „Andrey” apare mai devreme în alfabet decât caracterul „I” din cuvântul „Ivan”, această linie va fi plasată mai devreme.

Sortare în SQL Query

Pentru a efectua sortarea, trebuie să adăugați comanda ORDER BY la șirul de interogare. După această comandă este indicat câmpul prin care se realizează sortarea.

De exemplu, folosim tabelul de mărfuri:

num
(Numărul de articol)
titlu
(Nume)
Preț
(Preț)
1 Mandarin50
2 Pepene120
3 Un ananas80
4 Banană40

Datele de aici sunt deja ordonate după coloana „num”. Acum, să construim o interogare care va afișa un tabel cu produse sortate alfabetic:

SELECTAȚI * DIN mărfuri COMANDĂ PENTRU titlu

SELECT * FROM goods - specifică selectarea tuturor câmpurilor din tabelul mărfuri;

ORDER BY - comanda sortare;

titlul este coloana după care trebuie sortată.

Rezultatul unei astfel de interogări este următorul:

num titlu Preț
3 Un ananas80
2 Pepene120
4 Banană40
1 Mandarin50

De asemenea, puteți sorta pentru oricare dintre câmpurile din tabel.

Direcția de sortare

În mod implicit, comanda ORDER BY sortează în ordine crescătoare. Pentru a controla manual direcția de sortare, numele coloanei este urmat de cuvântul cheie ASC (crescător) sau DESC (descendent). Astfel, pentru a afișa tabelul nostru în ordinea descrescătoare a prețurilor, trebuie să punem interogarea astfel:

SELECTAȚI * DIN marfa COMANDA DUPA pret DESC

Sortarea în ordine crescătoare ar fi:

SELECTAȚI * DIN mărfuri COMANDĂ PENTRU preț ASC

Sortare după mai multe câmpuri

SQL permite sortarea după mai multe câmpuri simultan. Pentru a face acest lucru, după comanda ORDER BY, câmpurile obligatorii sunt specificate separate prin virgule. Ordinea în rezultatul interogării va fi configurată în aceeași ordine în care sunt specificate câmpurile de sortare.

coloana 1 coloana2 coloana3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 A
1 3 A
3 4 A

Sortați tabelul după următoarele reguli:

SELECTAȚI * FROM mytable ORDER BY coloana1 ASC, coloana2 DESC, coloana3 ASC

Acestea. prima coloană ascendentă, a doua descendentă, a treia din nou ascendentă. Interogarea va ordona rândurile după prima coloană, apoi, fără a distruge prima regulă, după a doua coloană. Apoi, în același mod, fără a încălca regulile existente, conform celei de-a treia. Rezultatul este un set de date ca acesta:

coloana 1 coloana2 coloana3
1 3 A
1 3 c
1 2 A
2 2 b
2 1 b
3 1 A
3 1 c

Ordinea comenzii ORDER BY într-o interogare

Sortarea rândurilor se realizează cel mai adesea împreună cu o condiție de selecție a datelor. Comanda ORDER BY este plasată după clauza de selecție WHERE. De exemplu, selectăm produse cu un preț mai mic de 100 de ruble, sortând după nume în ordine alfabetică:

SELECTAȚI *DIN marfa UNDE pret 100 COMANDA DUPA pret ASC

Clauza ORDER BY din Access sortează înregistrările returnate de o interogare în ordine crescătoare sau descrescătoare după valorile câmpurilor specificate.

Sintaxă

SELECTAȚI listă_câmpuri
DIN masa
UNDE stare_selecție
[, câmpul2 ][, ...]]]

Instrucțiunea SELECT care conține clauza ORDER BY include următoarele elemente:

Remarci

Clauza ORDER BY este opțională. Ar trebui să fie utilizat atunci când trebuie să afișați datele în formă sortată.

Ordinea implicită de sortare este crescătoare (de la A la Z, de la 0 la 9). Cele două exemple de mai jos arată sortarea numelor angajaților după nume.

SELECTAȚI Nume, Prenume
DE LA Angajati
COMANDA PENTRU Nume;
SELECTAȚI Nume, Prenume
DE LA Angajati
COMANDA PENTRU Nume ASC;

Pentru a sorta în ordine descrescătoare (Z la A, 9 la 0), adăugați cuvântul rezervat DESC la sfârșitul fiecărui câmp după care doriți să sortați înregistrările. Exemplul de mai jos sortează numele de familie ale angajaților în ordinea descrescătoare a salariului.

SELECTAȚI Nume, Salariu
DE LA Angajati
COMANDA DUPA Salariu DESC, Prenume;

Dacă specificați un câmp în clauza ORDER BY care conține date de tip Memo sau obiecte OLE, va apărea o eroare. Miez DBMS Microsoft Access nu acceptă sortarea pe aceste tipuri de câmpuri.

Clauza ORDER BY este de obicei ultimul element dintr-o instrucțiune SQL.

Câmpuri suplimentare pot fi incluse în clauza ORDER BY. Înregistrările sunt mai întâi sortate după câmpul listat primul în clauza ORDER BY. Înregistrările cu aceeași valoare în primul câmp sunt apoi sortate după câmpul specificat în al doilea câmp și așa mai departe.


Următoarea buclă:

Pasul 8: Sortare simplă

Dacă rezultatul interogării dvs. SQL ar trebui să devină materialul sursă al unui anumit raport, atunci problema sortării datelor din acesta devine extrem de importantă, deoarece este foarte dificil pentru o persoană care citește un raport care nu este sortat corespunzător să găsească rapid parte din informațiile de care are nevoie în ea. Pentru a sorta datele după coloanele rezultatului interogării (în cazul nostru, după câmpurile tabelului), SQL folosește cuvântul cheie ORDER BY. Un exemplu de cea mai simplă sortare este prezentat mai jos. Pe baza interogării de la pasul 2: „Interogare cu un criteriu de selecție simplu”. Sortăm angajații după câmpul S_NAME (nume complet).

SELECTAȚI S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Sortarea rezultatului unei interogări SQL după un câmp.

Pasul 9. Sortare complexă

Adesea, și aproape întotdeauna, este necesar să sortați datele după mai mult de o coloană și nu întotdeauna în ordine crescătoare. Sintaxa SQL presupune, după cuvântul cheie ORDER BY, o listă de coloane separate prin virgulă, precum și o metodă de sortare pentru fiecare coloană: în ordinea crescătoare a valorilor - ASC sau în ordine descrescătoare - DESC. În exemplul de mai jos, arătăm înregistrările pentru toți angajații în ordinea descrescătoare a vechimii. Angajații cu aceeași vechime în muncă sunt sortați alfabetic.

SELECTAȚI S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Sortarea rezultatului interogării SQL după două câmpuri.

Destul de des, ordinea de sortare inversă este utilizată cu coloanele [date]. Dacă data stochează, de exemplu, data la care au fost introduse informații, atunci când sortați înapoi, chiar la începutul listei sunt acele intrări care au fost adăugate recent în raport cu restul. Dacă interogarea preia anunțuri de știri din baza de date, atunci obținem o listă de anunțuri sortate în ordinea descrescătoare a relevanței lor, ceea ce poate fi extrem de util, deoarece anunțurile sunt de obicei citite de sus în jos și nu toate sunt afișate în știri. site-uri, dar doar câteva cele mai „proaspete”.




Top