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.

Grammaire SQL

L’analyseur SQL
FactoryTalk Optix
est basé sur une version simplifiée de la grammaire SQL 2003 standard. Certains dialectes, par exemple des commandes spécifiques aux plateformes MySQL, SQL Server ou InfluxDB, ne sont pas pris en charge.
CONSEIL:
Pour tirer parti des requêtes avancées ou des procédures stockées, envisagez d’utiliser le package NuGet Microsoft.Data.SqlClient dans les NetLogics personnalisés.
Rockwell Automation
n’est pas responsable des logiciels tiers, y compris, mais sans s’y limiter, de leurs performances, de leur sécurité, de leurs mises à jour ou de leur compatibilité avec nos produits. Toute utilisation d’un logiciel tiers se fait à vos propres risques, et nous ne fournissons pas d’assistance, de garantie ou d'assurance pour ces logiciels. Les utilisateurs doivent se référer aux fournisseurs tiers respectifs pour obtenir de l’aide et consulter les conditions de licence.
Pour plus d’informations, consultez NetLogic.

Instructions

CONSEIL: Noms de colonnes d’échappement comportant des caractères spéciaux comme suit :
SELECT MAX(
"/Variable1"
) FROM mystore.recipeschema1;
FactoryTalk Optix Studio
prend en charge les instructions suivantes dans les requêtes SQL :
  • Utilisez l’instruction
    SELECT
    pour 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’ensemble
    ALL
    et
    DISTINCT
    .
    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 Table1
    CREATE TEMPORARY TABLE "##TempTable" AS SELECT Column1 FROM MyTable WHERE Column1 > 5
    NOTE: Les expressions
    CASE
    et
    WHEN
    ne sont pas prises en charge.
    IMPORTANT:
    La norme SQL ne permet pas de combiner
    *
    avec des colonnes dérivées.
    SELECT *, Timestamp FROM Table1
    SELECT *, ROW_NUMBER() OVER (ORDER BY Timestamp) FROM DataLogger
    FactoryTalk Optix
    prend en charge cette norme pour permettre toute les manipulations de requête pour les graphiques Sparkline.
  • Utilisez l'instruction
    DELETE
    pour 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'instruction
    UPDATE
    pour 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’instruction
    CREATE
    pour créer des tables ou des tables dans des bases de données. Cette instruction prend partiellement en charge
    TABLE
    et
    INDEX
    .
    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 > 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’instruction
    DROP
    supprime 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

Valeurs littérales prises en charge
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
  • true
  • false
Utilisez des minuscules pour les valeurs booléennes.
Chaîne
'string value'
Utilisez des guillemets simples pour délimiter le texte.
Insérez un guillemet simple (
'
) dans une chaîne de texte en utilisant un autre guillemet simple 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
  • Column1
  • Grüße
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é
  • "Water level"
  • "SELECT"
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érences de tables prises en charge
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érateurs pris en charge
Opérateur
Exemple
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’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

Fonctions de la fenêtre prises en charge
Fonction
Exemple
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)
NOTE: La clause
PARTITION BY
prend uniquement en charge les identificateurs de colonnes.

Jetons

Jetons pris en charge
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
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal