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’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 Table1SELECT *, Timestamp AS T FROM Table1SELECT Column1 FROM Table1SELECT *, 10 FROM Table1SELECT 10, * FROM Table1SELECT *, 'text value' FROM Table1SELECT COUNT(*) FROM Table1SELECT DINSTINCT Column1 FROM Table1CREATE TEMPORARY TABLE "##TempTable" AS SELECT Column1 FROM MyTable WHERE Column1 > 5NOTE: 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 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 |
| 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
.sql
query
Fournir une réponse