Query SQL - singola tabella

Documenti analoghi
SQL - Elementi più avanzati

Structured Query Language

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Manuale SQL. Manuale SQL - 1 -

Laboratorio di Basi di Dati

Caratteristiche dei linguaggi per Database

Laboratorio di Basi di Dati

Basi di Dati: Corso di laboratorio

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

PROGETTAZIONE DI DATABASE Linguaggio SQL

Interrogazioni in SQL

DATABASE PER IL WEB. Programmazione Web 1

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

SQL (STRUCTURED QUERY LANGUAGE)

Basi di Dati. Esercitazione 3: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Laboratorio di Basi di Dati Per Bioinformatica

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Linguaggio SQL seconda parte

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

Laboratorio di Basi di Dati e Web

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

SQL. Storia e standard

Interrogazioni nidificate

Elena Baralis 2007 Politecnico di Torino 1

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Soluzione esercitazione 01

Laboratorio di Basi di Dati

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Esercitazione 3 SQL.

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Alessandra Raffaetà. Esercizio: Cinema

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati: Corso di laboratorio

CORSO ACCESS 2000 PARTE VI

SQL - Structured Query Language

Interrogazioni nidificate

ESERCITAZIONI ACCESS

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

Corso di Basi di Dati

SQL QUERY: Le interrogazioni del database

Basi di Dati: Corso di laboratorio

Esempio di database relazionale con l utilizzo del prodotto MySQL

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

SQL e algebra relazionale

<Nome Tabella>.<attributo>

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Il programma di oggi. Gli indici. Ottimizzazione. Metodi per la Gestione dei Dati (lezioni di laboratorio)

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Interrogazioni semplici

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

DUE GRUPPI DI COMANDI

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Elena Baralis 2007 Politecnico di Torino 1

Lezione 4. Dallo schema ER al relazionale

Introduzione a MySQL. Definizione SQL. Esempio


SQL - Sottointerrogazioni

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

SQL aspetti essenziali

Esercitazione: Interrogazioni SQL

2011 Politecnico di Torino 1

Estensioni del linguaggio SQL per interrogazioni OLAP

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

SQL. SQL (Structured Query Language) è un linguaggio di interrogazione per basi di dati relazionali

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

LABORATORIO di INFORMATICA

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di Dati. Esercitazione 2: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

SQL Sintassi Dei Comandi

VARIABILI, ASSEGNAZIONE, DECISIONI

SQL (STRUCTURED QUERY LANGUAGE)

Istruzioni DML di SQL

SQL: DDL, VI, Aggiornamenti e Viste

GESTIONE ASSICURAZIONI AUTO

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Access. P a r t e t e r z a

User Tools: DataBase Manager

Il linguaggio SQL: le basi

Introduzione a MySQL

ESERCIZI SQL. Esercizio 1

Esame di Basi di Dati, SOLUZIONE APPELLO 09/06/2009

Il linguaggio SQL: DML di base. Versione elettronica: 04.2.SQL.DMLbase.pdf

Esercitazione: Il DBMS MySQL

Il linguaggio SQL: DML di base

Transcript:

Query SQL - singola tabella Informatica@SEFA 07/08 - Lezione 9 Massimo Lauria <massimo.lauria@uniroma.it> http://massimolauria.net/courses/infosefa07/ Mercoledì, 6 Dicembre 07

Tabelle in SQL

Tabelle nel database relazionale Un DB relazionale è costituito da una serie di tabelle. Ogni colonna ha un nome e un tipo di dato Ogni riga contiene un valore per ogni colonna, del tipo di dato indicato. Il comando select permette vederne il contenuto select * from Combustibili; Cod_Combustibile Descrizione_Combustibile Benzina Gasolio 3 GPL 4 Metano 3

Terminologia: database VS algebra Algebra Database Relazione Tabella Attributo Colonna Tupla Riga 4

Tipi di dato delle colonne Testi (non unicode): char, varchar Testi (unicode): nchar, nvarchar Numeri interi: integer Numeri decimali esatti: decimal, numeric Numeri reali approssimati: real, float Date/Orari: date, time Alcuni dei tipi richiedono dei parametri E.g. nchar(0) un testo di 0 caratteri. E.g. nvarchar(00) un testo di al più 00 caratteri. 5

SQLite e tipi di dati In SQL ogni colonna/attributo ha un tipo di dato, ma in SQLite ogni cella ha il suo tipo e SQLite si occupa delle convesioni. drop table if exists A; create table if not exists A ( Numeri integer, Caratteri nvarchar(4) ); insert into A values ('0','0'),('BBB','BBB'), (,), (.33,.33); select * from A; 3 4 5 6 7 8 9 Numeri Caratteri ---------- ---------- 0 BBB BBB.33.33 6

Lo schema di una tabella Lo schema viene descritto da SQLite come la sequenza di istruzioni SQL usate per generare le tabelle..schema Veicoli CREATE TABLE Veicoli ( Targa nvarchar(0) primary key, Cilindrata integer, Cavalli_Fiscali integer, Velocità integer, Posti integer, Immatricolazione date, [...omissis...] ); 3 4 5 6 7 8 9 0 7

Creazione di una tabella create table if not exists NomeTabella ( descrizione_colonna, descrizione_colonna, descrizione_colonna3,... vincolo_di_integrità, vincolo_di_integrità,... ); 3 4 5 6 7 8 9 0 Questo comando crea la tabella NomeTabella se questa non esiste. La prima riga sarebbe anche potuta essere create table NomeTabella ( ma in questo caso se la tabella fosse esistita si sarebbe verificato un errore. 8

Descrizione di una colonna La descrizione più semplice di una colonna è <NoneColonna> <TipoColonna> ad esempio le due colonne Nome nvarchar(0), Cognome nvarchar(30) esistono molte altre cose che possono essere specificate per ogni colonna (e.g. se la colonna accetta valori NULL, se è parte di una chiave, ecc ). 9

Colonne a valori non nulli Le celle di una tabella possono avere un valore nullo. Il significato di un valore nullo non è specificato. dato non valido dato assente dato ignoto Delle colonne possono avere il vincolo di non nullità create table DatiAnagrafici ( CodFiscale char(5) not null, Nome nvarchar(30) not null, Cognome nvarchar(30) not null, Indirizzo nvarchar(00) -- può essere nullo ); 3 4 5 6 0

Valori unici É possibile definire il vincolo che il valore contenuto in una o più colonne appaia al massimo su un unica riga. create table DatiAnagrafici ( CodFiscale char(5) not null unique, Nome nvarchar(30) not null, Cognome nvarchar(30) not null, Indirizzo nvarchar(00), unique(nome,cognome) -- non associato ad un attributo ); 3 4 5 6 7 8 La coppia Nome,Cognome non può essere ripetuta. Il codice fiscale non può essere ripetuto.

Osservazione Notate la differenza tra i due comandi SQL create table A ( Nome nvarchar(30) not null, Cognome nvarchar(30) not null, unique(nome,cognome) ); 3 4 5 create table B ( Nome nvarchar(30) not null unique, Cognome nvarchar(30) not null unique ); 3 4 Nella tabella B non sono permesse neppure persone con lo stesso nome (E.g. Marco Bianchi e Marco Rossi).

Valori unici e NULL Se si usa unique senza not null si permettono comunque più righe con elementi nulli. Due valori nulli sono considerati differenti. create table T ( campo integer, campo integer, unique(campo,campo) ); insert into T values (,),(,NULL),(NULL,NULL),(NULL,NULL); select * from T; 3 4 5 campo campo NULL NULL NULL NULL NULL 3

Chiavi della tabella Attributi che siano simultaneamente not null collettivamente unique formano una superchiave della tabella. Ovvero ogni riga della tabella è identificata univocamente da questi valori. 4

Chiave primaria Una tabella può avere una chiaveprimaria, ovvero un identificatore principale per le righe di una tabella. Molteplicichiavi con unique e not null, ma solo una chiave primaria. ); create table Studente ( Matricola integer primary key, Nome nvarchar(60), Cognome nvarchar(60) 3 4 5 Il vincolo primary key implica not null e unique. 5

Chiave primaria (II) La chiave primaria può essere costituita da più attributi. ); create table Studente ( Matricola integer, CodUniversità nchar(5) Nome nvarchar(60), Cognome nvarchar(60), primary key(matricola,coduniversità) 3 4 5 6 7 8 Con i seguenti vincoli implicati. Matricola integer not null, CodUniversità nchar(5) not null, unique (Matricola,CodUniversità) 3 6

Vincoli intrarelazionali I vincoli di chiave primaria unicità non nullità riguardano una singola tabella (i.e. intrarelazionali). Quando vedremo query SQL che coinvolgono più tabelle allora discuteremo di vincoliinterrelazionali. 7

Eliminazione di una tabella drop table NomeTabella; oppure drop table if exists NomeTabella; La prima variante solleva un errore se la tabella non esiste. 8

Comando select 9

Le tre parti principali Il comando select è lo strumento principale per eseguire query (i.e. interrogazioni) in un database. select <ListaColonne > from <Tabella > where <Condizione > -- clausola select -- clausola from -- clausola where (opzionale) 3 La clausola select seleziona una lista di colonne <ListaColonne> dalla tabella <Tabella>. La clausola where <Condizione> filtra le righe della tabella prima di selezionare colonne. 0

Stampa di una tabella Se l argomento della clausola select è * allora stampa tutte le colonne. select * from Modelli; Cod_Modello Nome_Modello Numero_Versioni Cod_Fabbrica Panda 3 Vespa 4 4 3 Brava 4 Mondeo 3 3 5 V-0 5 6 Ducato 5 7 Clio 6 5 8 Corolla 7 4 9 Coupè 0 Golf 8 4 Megane 6 Seicento 3 Laguna 6 4 Civic 9 3

Proiezione (selezione colonne) select Cod_Modello,Nome_Modello from Modelli; Cod_Modello Nome_Modello Panda Vespa 3 Brava 4 Mondeo 5 V-0 6 Ducato 7 Clio 8 Corolla 9 Coupè 0 Golf Megane Seicento 3 Laguna 4 Civic

Scelta dell ordine delle colonne select Nome_Modello,Cod_Modello from Modelli; Nome_Modello Cod_Modello Panda Vespa Brava 3 Mondeo 4 V-0 5 Ducato 6 Clio 7 Corolla 8 Coupè 9 Golf 0 Megane Seicento Laguna 3 Civic 4 3

Ridenominare e/o ripetere le colonne select Nome_Modello as 'Nome del Modello', Cod_Modello as [Codice del Modello], Nome_Modello, Nome_Modello from Modelli; 3 4 Nome del Modello Codice del Modello Nome_Modello Nome_Modello Panda Panda Panda Vespa Vespa Vespa Brava 3 Brava Brava Mondeo 4 Mondeo Mondeo V-0 5 V-0 V-0 Ducato 6 Ducato Ducato Clio 7 Clio Clio Corolla 8 Corolla Corolla Coupè 9 Coupè Coupè Golf 0 Golf Golf Megane Megane Megane Seicento Seicento Seicento Laguna 3 Laguna Laguna Civic 4 Civic Civic 4

Parentesi quadre o apici Servono per i nomi che contengono spazi o parole speciali. Possono essere omesse altrimenti. select Nome_Modello as 'select', Cod_Modello as Codice from Modelli; select Codice Panda Vespa Brava 3 Mondeo 4 V-0 5 Ducato 6 Clio 7 Corolla 8 Coupè 9 Golf 0 Megane Seicento Laguna 3 Civic 4 5

Espressioni La clausola select accetta cose anche più articolate del nome di una colonna. Anche espressioni e costanti. select Targa,Velocità as 'Vel. km/h', Velocità*000/3600 as 'Vel. m/s', 'noia' as 'Commento' from Veicoli; Targa Vel. km/h Vel. m/s Commento A3456X 95 54 noia B56787Y 0 33 noia C76589AG 30 36 noia C78905GT 58 noia C845905Z NULL NULL noia CFT340VB 70 47 noia D39765W NULL NULL noia DD4567XX NULL NULL noia DGH789JC 70 47 noia DH79567H 70 47 noia ERG567NM 75 48 noia F9654NH 85 5 noia FGH673FV 40 38 noia XCH56GJK 0 58 noia XF5789CY 75 48 noia 6

Espressioni (II) L uso principale della select è di selezionare colonne, tuttavia potere vedere la cosa più in generale: ogni riga è in effetti la sequenza del valore di funzioni f, f, f 3,... calcolate sulle righe della tabella. drop table if exists Demo; create table Demo ( x integer, y integer ); insert into Demo values (,),(,-3),(7,); select *,x,*,y,x+y,x-y,x*y,- from Demo; 3 4 5 6 x y x x y y x+y x-y x*y - 0 9-3 -3-3 - 5-6 9 7 7 7 8 6 7 9 7

Senza clausola from Se l espressione non contiene riferimenti alla tabella possiamo anche omettere la clausola from. select 0 as 'Prima colonna', 0 as 'Seconda colonna'; Prima colonna Seconda colonna 0 0 8

Modificatore distinct L opzione distinct elimina le righe doppie dall output, che di default sono mantenute. La tabella Veicoli ha 5 righe, ma la query successiva ne produce 4. select distinct Cod_Modello as Modelli from Veicoli; Modelli 4 9 6 7 3 4 3 0 5 8 9

Clausola where 30

Selezione di righe Si possono filtrare le righe in base ad una condizione sui valori delle colonne. select Targa,Immatricolazione,Velocità as 'km/h' from Veicoli where Cilindrata > 000; Targa Immatricolazione km/h A3456X 998--30 95 C76589AG 998-08-3 30 C78905GT 994--06 CFT340VB 995-0- 70 DD4567XX 997-06-05 NULL DGH789JC 995-0-05 70 DH79567H NULL 70 ERG567NM 997--8 75 F9654NH 99-03-08 85 XCH56GJK 998-09-04 0 XF5789CY 996-05-05 75 3

Condizione della clausola where La clausola where vuole una espressione a valori booleani.. Operatori di confronto tra costanti, attributi, espressioni. =, <>, >, <, <=, >=. Connettori logici AND, OR, NOT 3. Operatore BETWEEN 4. Operatore IN 5. Operatore LIKE (pattern matching) 6. Test di valore nullo IS NULL, IS NOT NULL 3

Risultato vuoto Una selezione può produrre una tabella senza righe. select Targa,Immatricolazione,Velocità as 'km/h' from Veicoli where Posti = 6; Targa Immatricolazione km/h 33

Selezione di una riga attraverso una chiave Qui la clausola where chiede che gli attributi chiave siano uguale ad uno specifico valore. select * from Veicoli where Targa = 'A3456X'; Targa Cilindrata Cavalli_Fiscali Velocità Posti Immatricolazione Cod_Cat A3456X 796 85 95 5 998--30 34

Confronto tra due colonne della tabella select Targa,Velocità,Posti, Cavalli_Fiscali as CF,Cilindrata from Veicoli where Cilindrata >CF*0; -- Cilindrata > Cavalli_Fiscali*0 sarebbe stato lo stesso 3 4 Targa Velocità Posti CF Cilindrata A3456X 95 5 85 796 B56787Y 0 5 0 708 C76589AG 30 5 54 06 DD4567XX NULL 5 7 58 FGH673FV 40 5 39 899 35

Uso di operatori logici select Targa, Velocità, Cod_Categoria, Cod_Modello,Cilindrata from Veicoli where not Cod_Categoria='0'; Targa Velocità Cod_Categoria Cod_Modello Cilindrata C845905Z NULL 4 6 NULL D39765W NULL 3 NULL 36

NOT precede AND che precede OR select Targa, Velocità, Cod_Categoria, Cilindrata from Veicoli where not (Cod_Categoria='0' and Cilindrata > 500); Targa Velocità Cod_Categoria Cilindrata B56787Y 0 708 C76589AG 30 06 C845905Z NULL 4 NULL CFT340VB 70 390 D39765W NULL 3 NULL FGH673FV 40 899 select Targa, Velocità, Cod_Categoria, Cilindrata from Veicoli where not Cod_Categoria='0' and Cilindrata > 500; Targa Velocità Cod_Categoria Cilindrata 37

BETWEEN <min> AND <max> Un espressione compresa in un intervallo. select Targa,Velocità,Cod_Combustibile, Cilindrata from Veicoli where Cilindrata between 500 and 800; Targa Velocità Cod_Combustibile Cilindrata A3456X 95 796 DD4567XX NULL 58 DGH789JC 70 590 DH79567H 70 4 589 ERG567NM 75 4 598 F9654NH 85 3 78 XF5789CY 75 587 38

Realizzazione alternativa di BETWEEN L operatore BETWEEN può essere realizzato con confronti e operatori booleani, ma è meno leggibile. select Targa,Velocità,Cod_Combustibile, Cilindrata from Veicoli where Cilindrata >= 500 and Cilindrata <=800; Targa Velocità Cod_Combustibile Cilindrata A3456X 95 796 DD4567XX NULL 58 DGH789JC 70 590 DH79567H 70 4 589 ERG567NM 75 4 598 F9654NH 85 3 78 XF5789CY 75 587 39

Operatore IN Un espressione inclusa in una lista di valori. select Targa,Velocità,Cod_Combustibile, Cilindrata from Veicoli where Targa in ('A3456X','XCH56GJK','D39765W'); Targa Velocità Cod_Combustibile Cilindrata A3456X 95 796 D39765W NULL NULL XCH56GJK 0 98 40

Realizzazione alternativa di IN select Targa,Velocità,Cod_Combustibile, Cilindrata from Veicoli where Targa = 'A3456X' or Targa = 'XCH56GJK' or Targa = 'D39765W'; 3 4 Targa Velocità Cod_Combustibile Cilindrata A3456X 95 796 D39765W NULL NULL XCH56GJK 0 98 4

Algebra dei valori NULL Velocità < 80 or Velocità >= 80 sembrerebbe essere sempre vera, è invece restituisce delle 5 righe. select Targa, Velocità, Cilindrata from Veicoli where Velocità < 80 or Velocità >= 80; Targa Velocità Cilindrata A3456X 95 796 B56787Y 0 708 C76589AG 30 06 C78905GT 998 CFT340VB 70 390 DGH789JC 70 590 DH79567H 70 589 ERG567NM 75 598 F9654NH 85 78 FGH673FV 40 899 XCH56GJK 0 98 XF5789CY 75 587 4

Valori NULL e logica a tre valori Espressioni che contengo attributi NULL sono unknown. Gli operatori logici seguono una logica a 3 valori. X Y not X X and Y X or Y V V F V V V U F U V V F F F V U V U U V U U U U U U F U F U F V V F V F U V F U F F V F F La riga viene inclusa solo se la condizione è vera. 43

IS NULL e IS NOT NULL Testano se un attributo ha valore NULL o meno. La query restituisce tutte le 5 righe. select Targa, Velocità, Cilindrata from Veicoli where Velocità < 80 or Velocità >= 80 or Velocità is null; Targa Velocità Cilindrata A3456X 95 796 B56787Y 0 708 C76589AG 30 06 C78905GT 998 C845905Z NULL NULL CFT340VB 70 390 D39765W NULL NULL DD4567XX NULL 58 DGH789JC 70 590 DH79567H 70 589 ERG567NM 75 598 F9654NH 85 78 FGH673FV 40 899 XCH56GJK 0 98 XF5789CY 75 587 44

Ordinamento dell output Non esiste un ordine predefinito per l output delle righe. Possiamo ordinare rispetto ad una colonna ascendente (dal più piccolo al più grande) discendente (dal più grande al più piccolo) utilizzando la clausola ORDER BY 45

Esempio: ordinamento ascendente select Targa,Cilindrata,Velocità from Veicoli where Velocità is not null order by Velocità; 3 Targa Cilindrata Velocità B56787Y 708 0 C76589AG 06 30 FGH673FV 899 40 CFT340VB 390 70 DGH789JC 590 70 DH79567H 589 70 ERG567NM 598 75 XF5789CY 587 75 F9654NH 78 85 A3456X 796 95 XCH56GJK 98 0 C78905GT 998 46

Parola chiave ASC L ordinamento di default è ascendente, ma può essere specificato dalla parola chiave ASC select Targa,Cilindrata,Velocità from Veicoli where Velocità is not null order by Velocità asc; 3 Targa Cilindrata Velocità B56787Y 708 0 C76589AG 06 30 FGH673FV 899 40 CFT340VB 390 70 DGH789JC 590 70 DH79567H 589 70 ERG567NM 598 75 XF5789CY 587 75 F9654NH 78 85 A3456X 796 95 XCH56GJK 98 0 C78905GT 998 47

Esempio: ordinamento discendente select Targa,Cilindrata,Velocità from Veicoli where Velocità is not null order by Velocità desc; 3 Targa Cilindrata Velocità C78905GT 998 XCH56GJK 98 0 A3456X 796 95 F9654NH 78 85 ERG567NM 598 75 XF5789CY 587 75 CFT340VB 390 70 DGH789JC 590 70 DH79567H 589 70 FGH673FV 899 40 C76589AG 06 30 B56787Y 708 0 48

Ordinamenti a catena select Targa,Cilindrata,Velocità from Veicoli order by Velocità desc, Targa asc; Targa Cilindrata Velocità C78905GT 998 XCH56GJK 98 0 A3456X 796 95 F9654NH 78 85 ERG567NM 598 75 XF5789CY 587 75 CFT340VB 390 70 DGH789JC 590 70 DH79567H 589 70 FGH673FV 899 40 C76589AG 06 30 B56787Y 708 0 C845905Z NULL NULL D39765W NULL NULL DD4567XX 58 NULL 49