SQL-Abfragen
SQL („Structured Query Language“) verwaltet in relationalen Datenbanken gespeicherte Daten durch einfache, deklarative Anweisungen. Verwenden Sie den ANSI SQL-92-Standard für die Abfrage von ODBC-Datenbanken und eingebetteten Datenbanken.
SQL-Grammatik
Der Top-Down-SQL-Parser basiert auf einer vereinfachten Version der Standard-SQL-Grammatik, denn:
- FactoryTalk Optix unterstützt nur eine Teilgruppe von Standard-SQL.
- Die vereinfachte Standard-SQL-Grammatik eignet sich am besten für die Top-Down-Parser-Implementierung.
- Die vereinfachte Standard-SQL-Grammatik erleichtert die Lesbarkeit des resultierenden AST.
Anweisungen
FactoryTalk Optix Studio
unterstützt diese Anweisungen in SQL-Abfragen:- Verwenden Sie dieSELECT-Anweisung, um Daten aus einer Datenbank auszuwählen. Diese Anweisung unterstützt sowohl Spaltennamen und Wertausdrücke als auch die MengenquantifiziererALLundDISTINCT.Beispiele: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 Table1NOTIZ: Die AusdrückeCASEundWHENwerden nicht unterstützt.WICHTIG:Der SQL-Standard erlaubt keine Kombination von*mit abgeleiteten Spalten.SELECT *, Timestamp FROM Table1SELECT *, ROW_NUMBER() OVER (ORDER BY Timestamp) FROM DataLoggerFactoryTalk Optixunterstützt diesen Standard, um jede Abfragemanipulation für Sparkline-Diagramme zu ermöglichen.
- Verwenden Sie dieDELETE-Anweisung, um vorhandene Datensätze in einer Tabelle zu löschen.Beispiele:SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
- Verwenden Sie dieUPDATE-Anweisung, um vorhandene Datensätze in einer Tabelle zu ändern.Beispiele:SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
FactoryTalk Optix Studio
unterstützt diese Anweisungen in SQL-Abfragen teilweise:- Verwenden Sie dieCREATE-Anweisung, um Tabellen oder Tabellen in Datenbanken zu erstellen. Diese Anweisung unterstützt teilweiseTABLEundINDEX.Beispiele: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 > 5CREATE TEMPORARY TABLE Table2 AS SELECT Column1 FROM Table1 WHERE Column1 > 5 CREATE UNIQUE INDEX Column1_Index ON Table1 (Column1) DROP TABLE Table1
- DieDROP-Anweisung löscht vorhandene Datenbanken oder Tabellen in Datenbanken.Beispiele:DROP TABLE TemporaryTable DROP TABLE Table1
Literale Werte
Literaler Werttyp | Beispiel | Hinweise |
---|---|---|
Integral | 1520 | Verwenden Sie keine Tausendertrennzeichen. Verwenden Sie den Typ Int32. |
Real | 15.025 | Verwenden Sie . als Dezimaltrennzeichen.Verwenden Sie den Typ Doppel. |
Real wissenschaftlich | 2.7000001072883606E-1 | |
Boolesch |
| Verwenden Sie Kleinbuchstaben für boolesche Werte. |
Zeichenfolge | 'string value' | Verwenden Sie einzelne Anführungszeichen zur Abgrenzung von Text. Fügen Sie ein einzelnes Anführungszeichen ( ' ) in eine Textzeichenfolge ein, indem Sie das einzelne Anführungszeichen durch ein weiteres einzelnes Anführungszeichen escapen. Um zum Beispiel 'string' zu schreiben, verwenden Sie zwei einfache Anführungszeichen ''string'' in den Zeichenfolgen. |
Datum und Uhrzeit | "2004-05-23T14:25:10.487" | Verwenden Sie das ISO8601-Format, das durch doppelte Anführungszeichen begrenzt ist. Bei der Datums- und Zeitschreibweise handelt es sich um nicht standardisiertes ANSI-SQL, das verwendet wird, um die Schlüsselwörter DATE , TIME und TIMESTAMP unmissverständlich zu vermeiden. |
Regulärer Bezeichner |
| Verwenden Sie keine Leerzeichen. Beginnen Sie mit einem Großbuchstaben oder einem Kleinbuchstaben. Sie können numerische Ziffern, Buchstaben und den Unterstrich _ verwenden. |
Begrenzter Bezeichner |
| Verwenden Sie doppelte Anführungszeichen ( " ) als Trennzeichen.Verwenden Sie im Bezeichner beliebige Zeichen außer dem Zeichen " .Etwaige Leerzeichen am Ende des Bezeichners werden ignoriert. |
Join
Alle Arten von Joins wie
INNER
, UNION
, LEFT
, RIGHT
, FULL
, NATURAL
und CROSS
werden unterstützt.
NOTIZ:
Einige Joins werden nicht von jedem DBMS vollständig unterstützt.
Aliasse
Sie können Aliase in den Bezeichnern, abgeleiteten Spaltenunterabfragen und Tabellen verwenden.
Im Folgenden finden Sie Beispiele für Abfragen mit Aliasen:
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
Tabellenreferenzen
Die
FROM
-Klausel unterstützt die folgenden Tabellenreferenzen.Referenz | Beispiel |
---|---|
Vollständig qualifizierter Verweis | ... FROM table_name ... FROM schema_name.table_name ... FROM database_name.schema.name.table_name |
Unterabfrage | ... FROM (SELECT * FROM Table2) WHERE ... |
NOTIZ:
Vollständig qualifizierte Namen werden auch als Spaltenreferenzen unterstützt.
Beispiele:
... 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
Operatoren
Operator | Beispiel |
---|---|
IN |
|
BETWEEN |
|
LIKE |
|
EXISTS |
|
IS |
|
NOT |
Der Operator NOT gilt für alle anderen Operatoren. |
NOTIZ:
Die Operatoren
ANY
und ALL
werden nicht unterstützt.Fensterfunktionen
Funktion | Beispiel |
---|---|
ROW_NUMBER |
|
RANK |
|
DENSE_RANK |
|
AVG |
|
SUM , MIN , MAX |
|
COUNT |
|
NOTIZ:
Die
PARTITION BY
-Klausel unterstützt nur IDs von Spalten.Token
Token | Regulärer Ausdruck |
---|---|
regular_identifier | [a-zA-Z][a-zA-Z0-9_]* |
delimited_identifier | ".*?" |
real | |
boolean | |
Andere triviale Token | Regex für einzelne Zeichen oder Einzelwort-Token |
NOTIZ:
Der Lexer erkennt Datums- und Zeitwerte nicht als Token: Sie werden als
delimited_identifier
geparst. Der semantische Analysator extrahiert alle Datums- und Zeitwerte aus delimited_identifier
entsprechend dem regulären Ausdruck r
.Rückmeldung geben