Query SQL

Query SQL

SQL (Structured Query Language) gestisce i dati memorizzati nei database relazionali attraverso semplici istruzioni dichiarative.

Grammatica SQL

Il parser SQL
FactoryTalk Optix
si basa su una versione semplificata della grammatica 2003 SQL standard. Non sono supportati dialetti specifici, ad esempio comandi specifici della piattaforma per MySQL, SQL Server o InfluxDB.
SUGGERIMENTO:
Per sfruttare le query avanzate o le procedure archiviate, prendere in considerazione l'uso del pacchetto NuGet Microsoft.Data.SqlClient nelle NetLogic personalizzate.
Rockwell Automation
non è responsabile di alcun software di terze parti, inclusi, a titolo esemplificativo ma non esaustivo, le prestazioni, la sicurezza, gli aggiornamenti o la compatibilità con i nostri prodotti. Qualsiasi utilizzo di software di terze parti è a rischio dell'utente e non forniamo supporto, garanzie o assicurazioni per tale software. Gli utenti devono fare riferimento ai rispettivi fornitori di terze parti per assistenza e termini di licenza.
Per ulteriori informazioni, vedere NetLogic.

Istruzioni

SUGGERIMENTO: Eseguire l'escape dei nomi delle colonne con caratteri speciali in questo modo:
SELECT MAX(
"/Variable1"
) FROM mystore.recipeschema1;
FactoryTalk Optix Studio
supporta queste istruzioni in query SQL:
  • Utilizzare l'istruzione
    SELECT
    per selezionare dati da un database. Questa istruzione supporta sia i nomi di colonna che le espressioni di valore, nonché i quantificatori di insiemi
    ALL
    e
    DISTINCT
    .
    Esempi:
    SELECT *, FROM Table1
    SELECT *, Timestamp AS T FROM Table1
    SELECT Column1 FROM Table1
    SELECT *, 10 FROM Table1
    SELECT 10, * FROM Table1
    SELECT *, 'text value' FROM Table1
    SELECT COUNT(*) FROM Table1
    SELECT DINSTINCT Column1 FROM Table1
    CREATE TEMPORARY TABLE "##TempTable" AS SELECT Column1 FROM MyTable WHERE Column1 > 5
    NOTA: Le espressioni
    CASE
    e
    WHEN
    non sono supportate.
    IMPORTANTE:
    Lo standard SQL non consente la combinazione di
    *
    con colonne derivate.
    SELECT *, Timestamp FROM Table1
    SELECT *, ROW_NUMBER() OVER (ORDER BY Timestamp) FROM DataLogger
    FactoryTalk Optix
    supporta questo standard per consentire qualsiasi manipolazione delle query per i grafici sparkline.
  • Utilizzare l'istruzione
    DELETE
    per eliminare tutti i record esistenti in una tabella.
    Esempi:
    SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
  • Utilizzare l'istruzione
    UPDATE
    per modificare tutti i record esistenti in una tabella.
    Esempi:
    SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
FactoryTalk Optix Studio
supporta parzialmente queste istruzioni in query SQL:
  • Utilizzare l'istruzione
    CREATE
    per creare tabelle o tabelle nei database. Questa istruzione supporta parzialmente
    TABLE
    e
    INDEX
    .
    Esempi:
    CREATE UNIQUE INDEX Table_Index ON Table1 (Column1) CREATE INDEX IF NOT EXISTS Table_Index ON Table1 (Column1)
    CREATE TABLE TempTable AS SELECT Column1 FROM MyTable WHERE Column1 > 5 CREATE TEMPORARY TABLE TempTable AS SELECT Column1 FROM MyTable WHERE Column1 > 5
    CREATE TEMPORARY TABLE Table2 AS SELECT Column1 FROM Table1 WHERE Column1 > 5 CREATE UNIQUE INDEX Column1_Index ON Table1 (Column1) DROP TABLE Table1
  • L'istruzione
    DROP
    elimina tutti i database o le tabelle esistenti nei database.
    Esempi:
    DROP TABLE TemporaryTable DROP TABLE Table1

Valori letterali

Valori letterali supportati
Tipo di valore letterale
Esempio
Note
Integrale
1520
Non utilizzare separatori delle migliaia.
Utilizzare il tipo Int32.
Reale
15.025
Utilizzare
.
come separatore decimale.
Utilizzare il tipo Doppio.
Reale scientifica
2.7000001072883606E-1
Boolean
  • true
  • false
Usare caratteri minuscoli per valori booleani.
Stringa
'string value'
Utilizzare le virgolette singole per delimitare il testo.
Inserire una virgoletta singola (
'
) in una stringa di testo utilizzando un carattere di escape a virgoletta singola per una virgoletta singola. Ad esempio, per scrivere
'string'
, usare due virgolette singole
''string''
nelle stringhe.
Data e ora
"2004-05-23T14:25:10.487"
Utilizzare il formato ISO8601 delimitato da virgolette doppie.
La notazione per data e ora è ANSI SQL non standard, utilizzata per evitare le parole chiave
DATE
,
TIME
e
TIMESTAMP
senza ambiguità.
Identificatore regolare
  • Column1
  • Grüße
Non usare spazi.
Iniziare con una lettera maiuscola o minuscola.
È possibile utilizzare cifre, lettere e il carattere di sottolineatura
_
.
Identificatore delimitato
  • "Water level"
  • "SELECT"
Utilizzare virgolette doppie (
"
) come delimitatore.
Nell'identificatore, utilizzare qualsiasi carattere, ad eccezione del carattere
"
.
Eventuali spazi in coda dell'identificatore vengono ignorati.

Join

È supportato qualsiasi tipo di join, ad esempio
INNER
,
UNION
,
LEFT
,
RIGHT
,
FULL
,
NATURAL
e
CROSS
.
NOTA: Alcuni join non sono completamente supportati da tutti i DBMS.

Alias

È possibile usare alias negli identificatori, nelle sottoquery delle colonne derivate e nelle tabelle.
Di seguito sono riportati alcuni esempi di query con alias:
SELECT Timestamp AS T FROM Table1 WHERE ...
SELECT * FROM Table1 AS T WHERE ...
SELECT * FROM (SELECT * FROM Table1) AS SubQuery WHERE ...
CREATE TABLE Table1 AS SELECT Timestamp, Column1 FROM Table2

Riferimenti tabella

La clausola
FROM
supporta i riferimenti tabella riportati di seguito.
Riferimenti tabella supportati
Riferimento
Esempio
Riferimento completo
... FROM table_name
... FROM schema_name.table_name
... FROM database_name.schema.name.table_name
Sottoquery
... FROM (SELECT * FROM Table2) WHERE ...
NOTA: I nomi pienamente qualificati sono supportati anche come riferimenti colonna.
Esempi:
... WHERE Table1.Column1 > 10... WHERE Table1."order id" > 10 SELECT * FROM Table1 AS T WHERE T."order id" > 10 ... WHERE "my table"."order id" > 10

Operatori

Operatori supportati
Operatore
Esempio
IN
SELECT * FROM Table1 WHERE Column1 IN (10, 20, 30)
BETWEEN
SELECT * FROM Table1 WHERE Column1 BETWEEN 100 AND 200
LIKE
... WHERE column1 LIKE '%a'
... WHERE column1 LIKE '%a%'
... WHERE column1 LIKE '%bbpi!%ppo%' ESCAPE '!'
EXISTS
... WHERE EXISTS (SELECT Table1.Column1 FROM Table2)
IS
... WHERE column1 IS NULL
NOT
... WHERE column1 IS NOT NULL
... WHERE column1 NOT IS (10, 20)
... WHERE column1 NOT BETWEEN 100 AND 200
L'operatore
NOT
si applica a tutti gli altri operatori.
NOTA: Gli operatori
ANY
e
ALL
non sono supportati.

Funzioni della finestra

Funzioni della finestra supportate
Funzione
Esempio
ROW_NUMBER
ROW_NUMBER() OVER (ORDER BY Column2)
ROW_NUMBER() OVER (PARTITION ON Column1 ORDER BY Column2)
ROW_NUMBER() OVER (window_name PARTITION ON Column1 ORDER BY Column2)
RANK
RANK() OVER (PARTITION ON Column1 ORDER BY Column2)
DENSE_RANK
DENSE_RANK() OVER (PARTITION ON Column1 ORDER BY Column2)
AVG
AVG(Column1) OVER (PARTITION BY Column2)
SUM
,
MIN
,
MAX
SUM(Column1) OVER (PARTITION BY Column2)
COUNT
COUNT(Column1) OVER (PARTITION BY Column2)
COUNT(*) OVER (PARTITION BY Column2)
NOTA: La clausola
PARTITION BY
supporta solo identificatori di colonna.

Token

Token supportati
Token
Espressione regolare
regular_identifier
[a-zA-Z][a-zA-Z0-9_]*
delimited_identifier
".*?"
real
boolean
Altri token facili
Espressione regolare per token a carattere singolo o a parola singola
NOTA: Il lexer non riconosce i valori di data e ora come token: vengono analizzati come
delimited_identifier
. L'analizzatore semantico estrae tutti i valori di data e ora dal
delimited_identifier
in base all'espressione regolare
r
.
Fornire un feedback
Hai domande o feedback su questa documentazione? invia il tuo feedback qui.
Normal