Quando inserisci la tua query nell'Editor SQL o crei un calcolo, utilizzi la sintassi Presto SQL. Ad esempio, nell'editor SQL puoi comporre una query SELECT completa per trovare le fonti da includere e poi filtrare i loro dati:
SELECT DISTINCT column, AGG_FUNC(column_or_expression), ... FROM source JOIN another_source ON source.column = another_source.WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count OFFSET COUNT
Nota: Per garantire l'integrità dei dati, l'editor SQL supporta istruzioni di sola lettura come SELECT, ma non istruzioni di lettura/scrittura come INSERT o DELETE.
Oltre a queste clausole e dichiarazioni, la sintassi SQL può contenere diverse funzioni e operatori per definire ulteriormente i risultati ed eseguire calcoli:
- Funzioni per le stringhe di testo
- Funzioni di data e ora
- Funzioni di conversione
- Espressioni condizionali
- Funzioni e operatori aggregati e matematici
- Funzioni JSON
- Funzioni e operatori di confronto
Ordine delle operazioni
Sebbene non tutte le query includano tutte le clausole, ogni parte dell'istruzione SQL viene eseguita in una particolare sequenza:
-
FROMeJOIN, per determinare le fonti dei dati da interrogare -
WHERE, per includere solo i dati che soddisfano criteri specifici -
GROUP BY, per riassumere i dati in base ai valori comuni -
HAVING, per includere solo i dati delle righe aggregate che soddisfano criteri specifici -
SELECToSELECT DISTINCT, per specificare ulteriormente quali dati di origine includere -
ORDER BY, per specificare come ordinare i dati nei risultati -
LIMITeOFFSET, per specificare quanti e quali record della query includere
Capire l'ordine in cui la query esegue la sintassi SQL può aiutarti a identificare i risultati disponibili a ogni passo.
FROM e JOIN
Per determinare i dati da interrogare, la query esegue prima il comando FROM, che specifica la fonte da cui selezionare i dati.
Per includere dati da più fonti, includi una clausola JOIN per combinare le righe delle fonti in base a una colonna correlata:
-
INNER JOINseleziona i record corrispondenti alle fonti e. -
LEFT JOINseleziona tutti i record della fonte sinistra e anche quelli corrispondenti alla fonte destra. -
RIGHT JOINseleziona tutti i record della fonte destra e anche quelli corrispondenti nella fonte sinistra. -
FULL JOINseleziona tutti i record della fonte o.
Per raccogliere i dati da più di due fonti, puoi applicare più clausole JOIN per combinare le fonti in ordine. Ad esempio, per combinare gli ordini con i dati relativi ai clienti e agli spedizionieri:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID)
Nota: In Query Builder, si crea una clausola JOIN come una relazione .
DOVE
Dopo che la query ha determinato le sue fonti in base alle clausole FROM e JOIN, esegue la clausola WHERE per filtrare i risultati solo sui dati che soddisfano criteri specifici.
GRUPPO PER
Se la query contiene funzioni aggregate, può includere un'istruzione GROUP BY per riassumere le righe in base ai valori comuni della colonna specificata, come GROUP BY column name(s).
AVERE
Se la query include un'istruzione GROUP BY, applica i vincoli della clausola HAVING. Simile a WHERE, HAVING include solo i dati delle righe aggregate che soddisfano i criteri specifici e scarta quelle che non lo sono.
SELECT o SELECT DISTINCT
Dopo che la query ha applicato i vincoli della clausola WHERE alle fonti determinate dalle clausole FROM e JOIN e ha raggruppato le righe in base all'istruzione GROUP BY e alla clausola HAVING, applica le espressioni dell'istruzione SELECT per specificare ulteriormente i dati da includere. Ad esempio:
-
SELECT column1, column2 FROM sourcerestituisce solo i campicolumn1ecolumn2dasource. -
SELECT * FROM sourcerestituisce tutti i campi della fonte.
Se la query include un'istruzione SELECT DISTINCT, esclude le righe con valori duplicati in ogni colonna.
ORDINA PER
Se la query include la parola chiave ORDER BY, ordina i risultati in ordine crescente o decrescente -ASC o DESC- in base alla colonna specificata. Ad esempio, ORDER BY field_header ASC.
Per ordinare in base a più campi, separali con una virgola, ad esempio ORDER BY field_header1 ASC, field_header2 DESC.
Nota: Il valore predefinito di ORDER BY è ASC. Se non specifichi ASC o DESC dopo il nome del campo nell'istruzione ORDER BY, l'ordinamento avviene automaticamente in ordine crescente.
LIMIT e OFFSET
Infine, la query scarta tutte le righe che non rientrano nell'intervallo delle clausole LIMIT e OFFSET.
- Per restituire un numero specifico di record nei risultati, includi una clausola
LIMIT. Ad esempio, per restituire i primi 30 record di una fonte,SELECT * FROM source LIMIT 30. - Per restituire un numero specifico di record ma non iniziare dal primo record della fonte, aggiungi una clausola
OFFSETcon il numero di record da saltare. Ad esempio, per restituire dieci record a partire dal 16°,SELECT * FROM source LIMIT 10 OFFSET 15.