Home / SQL Server 2016 / #1 T-SQL: Istruzione SELECT e Ordine Logico esecuzione Query

#1 T-SQL: Istruzione SELECT e Ordine Logico esecuzione Query

Oggi inizieremo il percorso di esplorazione delle query in T-SQL partendo dall’istruzione SELECT.

Cos’è l’istruzione SELECT?

L’istruzione SELECT rappresenta la modalità attraverso la quale possiamo interrogare le tabelle del nostro database.

In questo articolo cercheremo di illustrare le varie fasi dell’elaborazione logica delle query. Questo perchè, in T-SQL, esiste un ordine logico di elaborazione delle diverse clausole delle query .

La nostra tabella ordini.

Per semplificare la comprensione delle varie fasi dell’elaborazione logica di una query partiamo da un esempio.

Qui sotto riportiamo la struttura della tabella Sales.Orders, una delle tabelle del nostro database TSQLV4 .

database

 

E questo è il contenuto della nostra tabella ordini: la tipica tabella che riporta tutti i dettagli degli ordini ricevuti una compagnia.

2 esempio tabella 1

Query di esempio.

Poniamo il caso di voler interrogare la tabella Sales.Orders e di voler ottenere l’elenco degli impiegati che hanno evaso più di un ordine per ciascun anno.

Questa la nostra query di interrogazione del db:

3 Query

Il nostro script inizia con l’istruzione USE: questo comando definisce il contesto di database da utilizzare. Se la sessione di SSMS si trova già nel contesto di database desiderato il comando può essere omesso. Noi consigliamo di abituarsi ad utilizzare questa istruzione in modo da evitare spiacevoli inconvenienti (es: esecuzione di un comando su un database sbagliato).

Nella maggior parte dei linguaggi di programmazione le istruzioni vengono eseguite nell’ordine in cui vengono scritte. In T-SQL l’ordine di esecuzione dei comandi è diverso dall’ordine in cui le varie istruzioni vengono riportate.

In SQL le istruzioni vengono elaborate in questo ordine:

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

Questo significa che dovremo rileggere la nostra query in questo modo:

  1. FROM: interroga le righe della tabella [Sales].[Orders]
  2. WHERE: filtra le righe per cui la colonna custid=71
  3. GROUP BY: raggruppa le righe per empid (id dipendente) e Year(Orderdate) (anno dell’ordine)
  4. HAVING: Filtra solo i gruppi di empid & Year(Orderdate) che hanno più di un ordine
  5. SELECT: per le righe ottenute restituiscimi i seguenti campi: empid, OrderYear, NumberOrders
  6. ORDER BY: ordina le righe per empid ed OrderYear

Ecco il risultato della nostra query:

4 Risultato Query

Quesito per voi lettori.

Stando a quanto spiegato precedentemente… Sapreste dirmi per quale ragione nella clausole di GROUP BY ho scritto YEAR(orderdate) mentre nella ORDER BY ho scritto OrderYear?

Scrivetemi la risposta sotto nei commenti

About Lara

Mi chiamo Lara (perché mia mamma guardava il film de Il dottor Živago), ho 35 anni e sono nata e cresciuta nell'entroterra marchigiano. Amo la mia terra, che è un pezzo del mio cuore. Gli altri pezzi sono a Madrid, Parigi (dove ho vissuto 3 anni per lavoro) e a Milano. Curiosità, passione, creatività, pragmaticità e problem solving mi contraddistinguono (i difetti non li scrivo mica pubblicamente!!!). Fotografia, tecnologia, arte, film, gialli, cibo ... e molto altro! Sono Co-founder di Geekotech.it e Geekotech.fr

Check Also

SQL Server 2016 : Come impostare invio mail in caso di fallimento del Job? (SSMS)

Ciao a tutti!! Oggi inauguriamo una nuova sezione del sito che si occuperà di SQL …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *