Requêtes SQL
SQL (Structured Query Language) gère les données stockées dans les bases de données relationnelles par le biais d’instructions simples et déclaratives. Utilisez la norme SQL-92 ANSI pour interroger les bases de données ODBC et les bases de données intégrées.
Grammaire SQL
L’analyseur SQL descendant est basé sur une version simplifiée de la grammaire SQL standard, car :
- FactoryTalk Optix prend uniquement en charge un sous-ensemble du code SQL standard.
- La grammaire SQL standard simplifiée est la mieux adaptée à l’implémentation de l’analyseur descendant.
- La grammaire SQL standard simplifiée améliore la lisibilité de l’AST résultant.
Instructions
FactoryTalk Optix Studio
prend en charge les instructions suivantes dans les requêtes SQL :- Utilisez l’instructionSELECTpour sélectionner des données dans une base de données. Cette instruction prend en charge les noms de colonnes et les expressions de valeurs, ainsi que les quantificateurs d’ensembleALLetDISTINCT.Exemples :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 Table1NOTE: Les expressionsCASEetWHENne sont pas prises en charge.IMPORTANT:La norme SQL ne permet pas de combiner*avec des colonnes dérivées.SELECT *, Timestamp FROM Table1SELECT *, ROW_NUMBER() OVER (ORDER BY Timestamp) FROM DataLoggerFactoryTalk Optixprend en charge cette norme pour permettre toute les manipulations de requête pour les graphiques Sparkline.
- Utilisez l'instructionDELETEpour supprimer tous les enregistrements existants dans une table.Exemples :SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
- Utilisez l'instructionUPDATEpour modifier les enregistrements existants dans une table.Exemples :SELECT * FROM Table1 WHERE ... DELETE FROM Table1 WHERE ... UPDATE Table1 SET column1 = 10 WHERE column2 > 20 ...
FactoryTalk Optix Studio
prend partiellement en charge les instructions suivantes dans les requêtes SQL :- Utilisez l’instructionCREATEpour créer des tables ou des tables dans des bases de données. Cette instruction prend partiellement en chargeTABLEetINDEX.Exemples :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
- L’instructionDROPsupprime toutes les bases de données ou tables existantes dans les bases de données.Exemples :DROP TABLE TemporaryTable DROP TABLE Table1
Valeurs littérales
Type de valeur littérale | Exemple | Remarques |
---|---|---|
Intégrale | 1520 | N’utilisez pas de séparateurs des milliers. Utilisez le type Int32. |
Real | 15.025 | Utilisez . comme séparateur décimal.Utilisez le type Double. |
Scientifique réel | 2.7000001072883606E-1 | |
Boolean |
| Utilisez des minuscules pour les valeurs booléennes. |
Chaîne | 'string value' | Utilisez des guillemets simples pour délimiter le texte. Insérez une apostrophe ( ' ) dans une chaîne de texte en utilisant une autre apostrophe comme caractère d’échappement. Par exemple, pour écrire 'string' , utilisez deux guillemets simples ''string'' dans les chaînes. |
Date et heure | "2004-05-23T14:25:10.487" | Utilisez le format ISO8601 délimité par des guillemets doubles. La notation de date et d’heure est du SQL ANSI non standard qui permet d’éviter les mots-clés DATE , TIME et TIMESTAMP sans ambiguïté. |
Identificateur régulier |
| N’utilisez pas d’espaces. Commencez par une lettre majuscule ou minuscule. Vous pouvez utilisez des chiffres, des lettres et des traits de soulignement _ . |
Identificateur délimité |
| Utilisez des guillemets doubles ( " ) comme séparateur.Dans l’identificateur, utilisez n’importe quel caractère à l’exception du caractère " .Toute espace à la fin de l’identificateur sera ignoré. |
Jointure
Tous les types de jointures tels que
INNER
, UNION
, LEFT
, RIGHT
, FULL
, NATURAL
et CROSS
sont pris en charge.
NOTE:
Certaines jointures ne sont pas entièrement prises en charge par tous les SGBD.
Alias
Vous pouvez utiliser des alias dans les identificateurs, les sous-requêtes de colonnes dérivées et les tables.
Voici des exemples de requêtes avec des 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
Références de tables
La clause
FROM
prend en charge les références de tables suivantes.Référence | Exemple |
---|---|
Référence complète | ... FROM table_name ... FROM schema_name.table_name ... FROM database_name.schema.name.table_name |
Sous-requête | ... FROM (SELECT * FROM Table2) WHERE ... |
NOTE:
Les noms complets sont également pris en charge comme références de colonnes.
Exemples :
... 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
Opérateurs
Opérateur | Exemple |
---|---|
IN |
|
BETWEEN |
|
LIKE |
|
EXISTS |
|
IS |
|
NOT |
L’opérateur NOT s’applique à tous les autres opérateurs. |
NOTE:
Les opérateurs
ANY
et ALL
ne sont pas pris en charge.Fonctions de la fenêtre
Fonction | Exemple |
---|---|
ROW_NUMBER |
|
RANK |
|
DENSE_RANK |
|
AVG |
|
SUM , MIN , MAX |
|
COUNT |
|
NOTE:
La clause
PARTITION BY
prend uniquement en charge les identificateurs de colonnes.Jetons
Jeton | Expression régulière |
---|---|
regular_identifier | [a-zA-Z][a-zA-Z0-9_]* |
delimited_identifier | ".*?" |
real | |
boolean | |
Autres jetons triviaux | Expression régulière pour les jetons d’un seul caractère ou d’un seul mot |
NOTE:
Le lexer ne reconnaît pas les valeurs de date et d’heure en tant que jetons : elles sont analysées comme
delimited_identifier
. L’analyseur sémantique extrait toutes les valeurs de date et d’heure du delimited_identifier
selon l’expression régulière r
.Fournir une réponse