Introduzione
Quando recuperi i dati in PostgreSQL, probabilmente vorrai che i tuoi risultati siano ordinati in un certo modo. In PostgreSQL, è possibile specificare l’ordinamento dei risultati con la clausola ORDER BY
. Questa clausola consente di specificare la colonna in base alla quale si desidera ordinare i risultati e consente inoltre di scegliere tra ordine crescente e ordine decrescente. In questo articolo, daremo un’occhiata più da vicino alle opzioni di ordine crescente e ordine decrescente di PostgreSQL.
Prerequisiti
Per seguire gli esempi che vedremo in questo tutorial, è necessario assicurarsi che il server PostgreSQL sia installato e configurato correttamente. Il servizio deve essere in esecuzione in background.
Se stai lavorando in un ambiente Linux o Windows, puoi scaricare PostgreSQL qui.
Qual è la clausola ORDER BY di PostgreSQL?
Ogni volta che vogliamo recuperare i dati da una tabella PostgreSQL, creiamo un’istruzioneSELECT
. Per impostazione predefinita, PostgreSQL restituirà le righe nello stesso ordine in cui sono state inserite. Tuttavia, possiamo modificare i nostri risultati per renderli più leggibili ordinandoli. Ci sono due modi in cui i risultati possono essere ordinati: ordine crescente e ordine decrescente. Usiamo la clausola PostgreSQL ORDER BY
nella nostra istruzioneSELECT
per specificare le nostre preferenze di ordinamento.
Di seguito è mostrata la sintassi per la clausola PostgreSQL ORDER BY
:
1
2 3 4 5 6 |
SELEZIONARE
name_of_the_column DA target_table ORDINE name_of_the_column ASC |
andiamo a discutere questa sintassi un po ‘ più nel dettaglio:
- Primo, dobbiamo specificare il nome della colonna da utilizzare per l’ordinamento nel
ORDER BY
clausola. Se vogliamo ordinare per un numero di colonne, le separiamo usando una virgola. - Dopo aver specificato il nome della colonna, usiamo
ASC
per specificare l’ordine crescente oDESC
per l’ordine decrescente. Il valore predefinito della clausolaORDER BY
ASC
o ordine crescente se non viene fornito alcun valore.
Creazione di un set di dati di esempio
Dovremo creare un set di dati di esempio da utilizzare nei nostri esempi. Iniziamo creando una tabella denominata client_info
:
1
2 3 4 5 6 7 |
CREATE TABLE client_info(
client_id INT PRIMARY KEY NOT NULL, client_firstname TEXT NOT NULL, client_lastname TEXT NOT NULL, client_age INT NOT NULL, client_email TEXT NOT NULL ); |
Now, let’s put some records in the table:
1
2 3 4 5 6 7 |
INSERT INTO client_info(client_id,client_firstname, client_lastname, client_age, client_email)
VALUES (1,’John’,’Turf’,17,’[email protected]’), (2,’Raizel’,’Mendez’,16,’[email protected]’), (3,’Gwyneth’,’Damon’,16,’[email protected]’), (4,’Yeshua’,’Galisanao’,8,’[email protected]’), (5,’Dereck’,’Scott’,10,’[email protected]’); |
We can verify that our INSERT
was successful with a SELECT
query statement:
1
2 3 4 5 6 7 8 9 |
testdatabase=# SELECT * FROM client_info;
client_id | client_firstname | client_lastname | client_age | client_email ———–+——————+—————–+————+———————— 1 | John | Turf | 17 | [email protected] 2 | Raizel | Mendez | 16 | [email protected] 3 | Gwyneth | Damon | 16 | [email protected] 4 | Yeshua | Galisanao | 8 | [email protected] 5 | Dereck | Scott | 10 | [email protected] (5 RIGHE) |
Un Esempio di Utilizzo di PostgreSQL ORDINE ASC
Ora che abbiamo imparato come PostgreSQL ORDER BY
istruzione, proviamo a usare per ordinare i record che abbiamo creato nella sezione precedente.
usiamo la seguente dichiarazione:
1
|
SELECT * FROM client_info ORDINE client_firstname ASC;
|
Questa istruzione istruire PostgreSQL per selezionare tutte le righe della tabella client_info
e li ordina in base al tag client_firstname
colonna in ordine crescente.
I risultati di questa query saranno simili ai seguenti:
1
2 3 4 5 6 7 8 |
client_id | client_firstname | client_lastname | client_age | client_email
———–+——————+—————–+————+———————— 5 | Dereck | Scott | 10 | [email protected] 3 | Gwyneth | Damon | 16 | [email protected] 1 | John | Turf | 17 | [email protected] 2 | Raizel | Mendez | 16 | [email protected] 4 | Yeshua | Galisanao | 8 | [email protected] (5 RIGHE) |
Possiamo vedere che i valori nel campo client_firstname
sono ordinati in ordine alfabetico crescente– la nostra query ha avuto successo.
Un esempio Usando PostgreSQL ORDER BY DESC
Nell’esempio precedente, abbiamo usato la clausolaORDER BY
con l’opzioneASC
per l’ordine crescente. Ora, faremo il contrario e useremo ORDER BY
con DESC
per ordinare in ordine decrescente.
Per fare questo, si utilizzerà la seguente dichiarazione:
1
|
SELECT * FROM client_info ORDINE client_age DESC;
|
Il codice mostrato sopra ordinare le righe recuperate in ordine decrescente in base a client_age
.
I risultati saranno simili a questo:
1
2 3 4 5 6 7 8 |
client_id | client_firstname | client_lastname | client_age | client_email
———–+——————+—————–+————+———————— 1 | John | Turf | 17 | [email protected] 2 | Raizel | Mendez | 16 | [email protected] 3 | Gwyneth | Damon | 16 | [email protected] 5 | Dereck | Scott | 10 | [email protected] 4 | Yeshua | Galisanao | 8 | [email protected] (5 RIGHE) |
Come ci aspettavamo, i valori nella colonna client_age
vengono ordinati e restituiti in ordine decrescente.
Conclusione
L’ordinamento dei risultati può portare ordine e leggibilità ai dati disorganizzati ed è importante sapere come specificare le preferenze di ordinamento nelle query del database. In questo tutorial, abbiamo parlato della clausola PostgreSQL ORDER BY
, che consente di scegliere tra ordine crescente e ordine decrescente come opzioni di ordinamento. Con gli esempi che abbiamo discusso in precedenza come guida, sarete in grado di specificare l’ordinamento nelle vostre query di database.
Solo il codice
Mostrato di seguito sono tutti i frammenti di codice che abbiamo esaminato durante il nostro tutorial. Sentiti libero di copiarli e modificarli per adattarli ai tuoi casi d’uso.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
SELECT * FROM client_info ORDINE client_age DESC;
CREATE TABLE client_info( client_id INT PRIMARY KEY NOT NULL, client_firstname TEXT NOT NULL, client_lastname TEXT NOT NULL, client_age INT NOT NULL, client_email TEXT NOT NULL ); INSERT INTO client_info(client_id,client_firstname, client_lastname, client_age, client_email) VALUES (1,’John’,’Turf’,17,’[email protected]’), (2,’Raizel’,’Mendez’,16,’[email protected]’), (3,’Gwyneth’,’Damon’,16,’[email protected]’), (4,’Yeshua’,’Galisanao’,8,’[email protected]’), (5,’Dereck’,’Scott’,10,’[email protected]’); SELEZIONARE * DA client_info ORDINE PER client_firstname ASC; SELEZIONARE * DA client_info ORDINE PER client_age DESC; |