OPALE - 10.0 - Utilisation - Opérateur SQL
Différence entre versions
imported>Admin |
|||
(10 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | CONNECT permet d'utiliser les opérateurs SQL suivants : | ||
− | |||
* '''Avg''' | * '''Avg''' | ||
Ligne 57 : | Ligne 57 : | ||
Delete From Nom_Table | Delete From Nom_Table | ||
− | |||
[condition Where] | [condition Where] | ||
Ligne 116 : | Ligne 115 : | ||
<u>Exemple</u>: Création d'une vue à partir des tables PRODUIT et DETAIL de la bibliothèque MAP400. Ces deux tables ont le champ REF en commun. | <u>Exemple</u>: Création d'une vue à partir des tables PRODUIT et DETAIL de la bibliothèque MAP400. Ces deux tables ont le champ REF en commun. | ||
+ | |||
<code>Select PRODUIT.REF, NAME, TEXT From MAP400.PRODUIT Leftjoin MAP400.DETAIL ON (PRODUIT.REF=DETAIL.REF)</code> | <code>Select PRODUIT.REF, NAME, TEXT From MAP400.PRODUIT Leftjoin MAP400.DETAIL ON (PRODUIT.REF=DETAIL.REF)</code> | ||
+ | |||
+ | |||
+ | * '''Max''' | ||
+ | La fonction Max renvoie la valeur maximum d'un champ parmi une série d'enregistrements. | ||
+ | |||
+ | <u>Exemple</u> : sélectionner le produit le plus cher dans la table PRODUIT.<code>Select Max(produit.unitpx) From mylib.produit</code> | ||
+ | |||
+ | |||
+ | * '''Min''' | ||
+ | La fonction Min renvoie la valeur minimum d'un champ parmi une série d'enregistrements. | ||
+ | |||
+ | <u>Exemple</u> : sélectionner la facture qui présente le plus petit montant parmi toutes les factures de la table MYTABLE.<code>Select Min(MYTABLE.AMOUNT) From MYLIB.MYTABLE</code> | ||
+ | |||
+ | |||
+ | * '''On''' | ||
+ | La clause On est à utiliser avec la jointure Leftjoin et sert à préciser sur quel champ se fait la jointure. | ||
+ | |||
+ | |||
+ | |||
+ | * '''Select''' | ||
+ | L'instruction Select s'utilise avec la clause From afin d'extraire les données de la base. La partie Select de la requête sert à sélectionner les données à afficher et s'adresse aux champs dans lesquels sont stockées les données dans la table. | ||
+ | Select [* | ALL | DISTINCT CHAMP1, CHAMP2 ] From TABLE1 [ , TABLE2]; | ||
+ | |||
+ | Remarque : L'astérisque (*) indique que tous les champs de la table doivent être sélectionnés.L'option ALL permet d'afficher toutes les valeurs d'un champ (option par défaut, non obligatoire donc l'option DISTINCT sert à éliminer les doublons. | ||
+ | |||
+ | <u>Exemple</u> : Affichage de tous les enregistrements de la table MYTABLE de la bibliothèque MYLIB.<code>Select * From MYLIB.MYTABLE</code> | ||
+ | |||
+ | |||
+ | * '''SelectXML''' | ||
+ | L'opérateur SelectXML est utilisé avec From et permet d'extraire des données à partir d'un fichier XML via une requête de type Xpath. | ||
+ | |||
+ | <u>Exemple</u>:<code>SelectXML "@ID_PRODUCT,@QTY,@NAME,@UNITPX" From "/Invoices/Invoice[" $DB.Number_of_invoices "]/product"</code> | ||
+ | |||
+ | Les données sélectionnées sont stockées dans les champs de la table correspondante. | ||
+ | |||
+ | |||
+ | * '''Set''' | ||
+ | La commande Set est utilisée en combinaison avec la commande Update. | ||
+ | |||
+ | |||
+ | * '''Sum''' | ||
+ | La fonction Sum permet de calculer la somme des valeurs de plusieurs enregistrements. | ||
+ | |||
+ | <u>Exemple</u> : pour calculer le total de toutes les factures contenues dans MYTABLE. <code>Select Sum(MYTABLE.AMOUNT) From MYLIB.MYTABLE</code> | ||
+ | |||
+ | |||
+ | *'''Update''' | ||
+ | La commande Update permet de mettre à jour des données existantes au sein d'une table. Elle s'utilise avec la commande Set. | ||
+ | |||
+ | Update Nom_Table | ||
+ | Set Col_1 = Nouv_Val_1[, Col_2 = Nouv_Val_2[, ..., Col_N = Nouv_Val_N]] | ||
+ | [Where Condition] | ||
+ | |||
+ | La commande Update peut mettre à jour les données de manières différentes :La valeur d'une seule colonne en ne citant qu'une colonne associée à sa nouvelle valeur. | ||
+ | |||
+ | Plusieurs colonnes simultanément en citant plusieurs colonnes avec leurs valeurs respectives. Par l'intermédiaire d'une clause conditionnelle affectant quelques lignes de données, les valeurs de plusieurs enregistrements en même temps. | ||
+ | |||
+ | Une opération de mise à jour peut être effectuée sur un jeu d'enregistrements en utilisant une sous-requête de sélection. | ||
+ | |||
+ | Update nom_table1 AS tab1 | ||
+ | Set tab1.nom_champ = valeur | ||
+ | Where tab1.nom_champ opérateur (Select tab2.nom_champ From nom_table2 AS tab2 Where Condition) | ||
+ | |||
+ | |||
+ | *'''Where''' | ||
+ | La clause Where permet d'ajouter des conditions à une requête. La valeur d'une condition peut-être Vrai ou Faux. | ||
+ | |||
+ | Select [* | ALL | DISTINCT CHAMP1, CHAMP2 ] From TABLE1 [ , TABLE2] Where [ CONDITION1 | EXPRESSION 1 ] [And | ||
+ | CONDITION2 |EXPRESSION 2 ] | ||
+ | |||
+ | <u>Exemple</u> : | ||
+ | |||
+ | Affichage des enregistrements de la table MYTABLE de la bibliothèque MYLIB pour lesquels le prix est inférieur à 10. | ||
+ | |||
+ | Select * From MYLIB.MYTABLE Where (Valeur de PRICE < 10) | ||
+ | |||
+ | |||
+ | *'''Xml''' | ||
+ | Cette fonction permet de créer des index XML pour améliorer la performance lorsque le fichier XML n'est pas bien structuré. | ||
+ | |||
+ | L'index est créé sous forme d'un calcul qui commence par le mot clé XML et contient le chemin des noeuds et attributs à indexer. | ||
+ | |||
+ | L'exemple suivant indexe les attributs "@id" des noeuds "Packages" : | ||
+ | |||
+ | Xml "create_index myindex on @id From @PrintData/PrintData/Content/Booking/Packages" |
Version actuelle datée du 9 mai 2019 à 08:28
CONNECT permet d'utiliser les opérateurs SQL suivants :
- Avg
La fonction Avg permet de calculer la valeur moyenne de plusieurs expressions.
Exemple : Pour calculer le prix moyen des articles de la table PRODUIT.
Select Avg(PRODUIT.UNITPX) From MAP400.PRODUIT
- Count
La fonction Count permet de comptabiliser le nombre d'enregistrements dans une table donnée.
Exemple : Pour comptabiliser le nombre de produits dans la table PRODUIT.
Select Count(PRODUIT.NOM) From MAP400.PRODUIT
- Create
La commande Create permet de créer toutes sortes d'objets SQL : TABLE, USER, VIEW ...
Exemple : Create TABLE
La commande Create TABLE permet de créer une table avec des colonnes d'un type de données spécifique.
Syntaxe :
Create TABLE nom_table ( nom_col type [ NULL | NOT NULL | PRIMARY KEY | UNIQUE ], [ nom_colN type [ NULL | NOT NULL | PRIMARY KEY | UNIQUE ] ] );
Avant d'exécuter une telle commande, il est nécessaire de rassembler certains éléments indispensables. Un nom de table unique doit être précisé afin de l'identifier dans la base de données.
Pour chaque colonne à créer à l'intérieur de la table, il faut spécifier des noms de colonnes distincts. Chaque colonne nécessitant un type de donnée, il faut indiquer le type de données à assigner à chacune des colonnes à créer.
Toute table nécessitant une colonne faisant office de clé primaire, il faut impérativement en déterminer une avec une contrainte d'unicité UNIQUE.
Des contraintes peuvent être également spécifiées pour les valeurs d'une colonne lors de la création de la table.
Contrainte Description
NULL indique que la colonne peut contenir des valeurs nulles. NOT NULL indique que la colonne ne peut contenir de valeurs nulles. PRIMARY KEY indique que la colonne constitue la clé primaire de la table. UNIQUE impose que chaque valeur de la colonne doit être unique.
- Delete
L'instruction Delete s'utilise avec la clause From afin de supprimer des enregistrements au sein d'une table.
Delete From Nom_Table [condition Where]
La clause conditionnelle Where détermine les enregistrements à sélectionner pour effectuer leur suppression complète de la table.
Une sous-requête peut être utilisée pour sélectionner des enregistrements à supprimer.
Si aucune condition n'est spécifiée, alors tous les enregistrements de la table seraient purement et simplement supprimés.
Exemple : Suppression de l'enregistrement qui porte la référence n°10 dans la table PRODUIT de la bibliothèque MAP400.Delete From MAP400.PRODUIT Where REF=10
- Drop
La commande Drop table est une requête permettant la suppression complète d'une table. Elle n'est utilisable que sous Oracle.
Drop table Nom_Table [RESTRICT | CASCADE]
La clause RESTRICT restreint la suppression aux enregistrements de la seule table et retourne une erreur si la table est référencée par une vue ou une contrainte.
La clause CASCADE provoque la suppression de la table et de toutes ses références.Suite à l'exécution d'une telle commande, plus aucune requête ne pourra être appliquée sur cette table.
- From
La clause From intervient toujours en association avec l'instruction Select. Il s'agit d'un élément obligatoire de toute requête. Son objectif est d'indiquer à la base de données la ou les tables à affecter pour récupérer les données recherchées par le biais de la requête.
From TABLE1 [ , TABLE2]
- Insert
La commande Insert into permet d'ajouter des données dans une table.
Insert into Nom_Table (Champ_1, Champ_2, ..., Champ_N) VALUES (Valeur_1, Valeur_2, ..., Valeur_N)
L'ajout de données dans une table demande évidemment, la parfaite connaissance de la structure de la table, puisqu'il est nécessaire de fournir le nom des champs dans le bon ordre et des informations correspondant à leur type de données respectif.
Les valeurs de colonnes doivent être encadrées par des guillemets simples (') s'il s'agit de chaîne de caractères, les nombres ne nécessitant pas de guillemets :
VALUES ('Chaîne de caractères', 100)
Il est possible de ne pas énumérer les noms de colonnes si l'ajout de données concerne un enregistrement complet de la table :
Insert into Nom_Table VALUES (Valeur_1, Valeur_2, ..., Valeur_N)
En général, la citation des noms de colonnes est pertinente pour un ajout de données limité à certains champs de la table.
Insert into Nom_Table (Champ_1, Champ_2) VALUES (Valeur_1, Valeur_2)
- Leftjoin
La jointure externe Leftjoin (aussi appelée Outerjoin) est employée pour retourner toutes les lignes d'une table, même si celles-ci ne possèdent pas de correspondance dans la table jointe.
Elle permet en fait de créer une seule vue à partir de deux tables ayant un champ commun (les deux champs ne doivent pas obligatoirement porter le même nom).
Exemple: Création d'une vue à partir des tables PRODUIT et DETAIL de la bibliothèque MAP400. Ces deux tables ont le champ REF en commun.
Select PRODUIT.REF, NAME, TEXT From MAP400.PRODUIT Leftjoin MAP400.DETAIL ON (PRODUIT.REF=DETAIL.REF)
- Max
La fonction Max renvoie la valeur maximum d'un champ parmi une série d'enregistrements.
Exemple : sélectionner le produit le plus cher dans la table PRODUIT.Select Max(produit.unitpx) From mylib.produit
- Min
La fonction Min renvoie la valeur minimum d'un champ parmi une série d'enregistrements.
Exemple : sélectionner la facture qui présente le plus petit montant parmi toutes les factures de la table MYTABLE.Select Min(MYTABLE.AMOUNT) From MYLIB.MYTABLE
- On
La clause On est à utiliser avec la jointure Leftjoin et sert à préciser sur quel champ se fait la jointure.
- Select
L'instruction Select s'utilise avec la clause From afin d'extraire les données de la base. La partie Select de la requête sert à sélectionner les données à afficher et s'adresse aux champs dans lesquels sont stockées les données dans la table.
Select [* | ALL | DISTINCT CHAMP1, CHAMP2 ] From TABLE1 [ , TABLE2];
Remarque : L'astérisque (*) indique que tous les champs de la table doivent être sélectionnés.L'option ALL permet d'afficher toutes les valeurs d'un champ (option par défaut, non obligatoire donc l'option DISTINCT sert à éliminer les doublons.
Exemple : Affichage de tous les enregistrements de la table MYTABLE de la bibliothèque MYLIB.Select * From MYLIB.MYTABLE
- SelectXML
L'opérateur SelectXML est utilisé avec From et permet d'extraire des données à partir d'un fichier XML via une requête de type Xpath.
Exemple:SelectXML "@ID_PRODUCT,@QTY,@NAME,@UNITPX" From "/Invoices/Invoice[" $DB.Number_of_invoices "]/product"
Les données sélectionnées sont stockées dans les champs de la table correspondante.
- Set
La commande Set est utilisée en combinaison avec la commande Update.
- Sum
La fonction Sum permet de calculer la somme des valeurs de plusieurs enregistrements.
Exemple : pour calculer le total de toutes les factures contenues dans MYTABLE. Select Sum(MYTABLE.AMOUNT) From MYLIB.MYTABLE
- Update
La commande Update permet de mettre à jour des données existantes au sein d'une table. Elle s'utilise avec la commande Set.
Update Nom_Table Set Col_1 = Nouv_Val_1[, Col_2 = Nouv_Val_2[, ..., Col_N = Nouv_Val_N]] [Where Condition]
La commande Update peut mettre à jour les données de manières différentes :La valeur d'une seule colonne en ne citant qu'une colonne associée à sa nouvelle valeur.
Plusieurs colonnes simultanément en citant plusieurs colonnes avec leurs valeurs respectives. Par l'intermédiaire d'une clause conditionnelle affectant quelques lignes de données, les valeurs de plusieurs enregistrements en même temps.
Une opération de mise à jour peut être effectuée sur un jeu d'enregistrements en utilisant une sous-requête de sélection.
Update nom_table1 AS tab1 Set tab1.nom_champ = valeur Where tab1.nom_champ opérateur (Select tab2.nom_champ From nom_table2 AS tab2 Where Condition)
- Where
La clause Where permet d'ajouter des conditions à une requête. La valeur d'une condition peut-être Vrai ou Faux.
Select [* | ALL | DISTINCT CHAMP1, CHAMP2 ] From TABLE1 [ , TABLE2] Where [ CONDITION1 | EXPRESSION 1 ] [And CONDITION2 |EXPRESSION 2 ]
Exemple :
Affichage des enregistrements de la table MYTABLE de la bibliothèque MYLIB pour lesquels le prix est inférieur à 10.
Select * From MYLIB.MYTABLE Where (Valeur de PRICE < 10)
- Xml
Cette fonction permet de créer des index XML pour améliorer la performance lorsque le fichier XML n'est pas bien structuré.
L'index est créé sous forme d'un calcul qui commence par le mot clé XML et contient le chemin des noeuds et attributs à indexer.
L'exemple suivant indexe les attributs "@id" des noeuds "Packages" :
Xml "create_index myindex on @id From @PrintData/PrintData/Content/Booking/Packages"