Query SQL

Introduzione

Gli oggetti Database interno e Database ODBC supportano lo standard ANSI SQL-92 per le query di interrogazione ai relativi database. È inoltre possibile eseguire query di tipo DELETE per eliminare record. Tutte le altre operazioni, come l’aggiunta/rimozione/rinomina, si eseguono tramite i metodi OPC UA esposti dagli stessi oggetti.

Nota

per i dettagli su dichiarazioni e clausole SQL fare riferimento allo standard.

Dichiarazioni supportate

  • SELECT

  • DELETE

  • UPDATE

Clausole supportate per la dichiarazione SELECT

  • FROM

  • JOIN

  • AS (alias per tabelle e colonne, ammette identificatori regolari e delimitati)

  • WHERE

  • GROUP BY

  • ORDER BY

  • Set function (COUNT, MAX, MIN, AVG, SUM)

  • HAVING

  • LIMIT

    Nota

    è supportata la variante LIMIT OFFSET per limitare il numero di record restituiti, ad esempio SELECT * FROM Table1 LIMIT 1000 OFFSET 10 restituisce 1000 record a partire dal record numero 10. L’offset è opzionale e il suo valore di default è 0.

Sono inoltre supportate le sub query ammesse per la clausola FROM e per il predicato IN

Importante

la clausola FROM è obbligatoria, le altre sono opzionali.

Importante

le clausole devono sempre rispettare il seguente ordine: FROM, WHERE, GROUP, HAVING, ORDER, LIMIT.

Clausola JOIN

Sono supportati tutti i tipi di JOIN:

  • cross

  • inner

  • outer (left outer, oright outer, full outer)

Nota

Il DBMS su cui si esegue la query può prevedere limitazioni.

Clausola WHERE

La clausola WHERE supporta i seguenti operatori:

  • operatori di confronto <, <=, >, >=, =, <>

  • operatori logici AND, OR e NOT

  • operatori IN, LIKE, BETWEEN, IS NULL

Clausola EXTRACT

La clausola EXTRACT estrae una componente di Data/Ora da una colonna di tipo DateTime. Di seguito alcuni esempi:

SELECT EXTRACT(DAY FROM Time) AS "Day" FROM ...

SELECT EXTRACT(YEAR FROM Time) AS "Year" FROM ...

SELECT EXTRACT(MONTH FROM Time) AS "Month" FROM ...

SELECT EXTRACT(HOUR FROM Time) AS "Hour" FROM ...

SELECT EXTRACT(MINUTE FROM Time) AS "Minute" FROM ...

SELECT EXTRACT(SECOND FROM Time) AS "Second" FROM ...

Clausola CHAR_LENGTH

La clausola CHAR_LENGTH ottiene la lunghezza di una colonna di tipo String. Di seguito un esempio:

SELECT CHAR_LENGTH(Column1) AS Column1Length FROM ...

Valori letterali ammessi in una query

Sono ammessi i seguenti valori letterali:

  • booleani true e false

  • numeri interi, decimali (il separatore dei decimali è il punto “.”) e decimali in notazione scientifica (es.: -1.034E3)

  • stringhe di testo delimitate da apici (es.: 'string')

    Nota

    per inserire l’apice ' in una stringa di testo è necessario raddoppiarlo (ad esempio, per scrivere 'string' è necessario scrivere ''string'')

  • date e ore in notazione ISO 8601 delimitate da doppi apici (es.: "2004-05-23T14:25:10.487").

    Nota

    la notazione per data e ora è non standard ANSI SQL e consente di evitare le keyword DATE, TIME e TIMESTAMP senza ambiguità.

Convenzioni sui tipi di dati in una query

Valgono le seguenti convenzioni:

  • I numeri interi sono di tipo Int32.

  • I numeri decimali sono di tipo Double.

  • I letterali true e false sono interpretati come dati di tipo Boolean

Identificatori

Sono ammessi i seguenti identificatori:

  • regolari: non contengono spazi, iniziano con una lettera maiuscola o minuscola e possono contenere cifre numeriche, lettere e il carattere underscore “_”.

  • delimitati: sono delimitati doppi apici “"” e possono contenere qualsiasi carattere (tranne il carattere “"”). Eventuali spazi alla fine vengono ignorati.

Vedi anche

Concetti correlati

DataStore (database)

Procedure correlate

Lavorare con i database