OPALE - 10.0 - Utilisation

SQL

De MappingDoc

Requêtes SQL

CONNECT permet de construire des requêtes SQL, des calculs et des conditions. Tous les éléments (opérateurs SQL, mathématiques, champs ...) apparaissent exactement comme ils sont entrés dans la requête.

Pour construire une requête, double-cliquer sur un élément pour l'ajouter directement, sinon le taper à la main. Dans ce cas, la fonction Auto-complete s'active automatiquement. Cette fonction affiche une liste de valeurs possibles en fonction des lettres déjà tapées basées sur les mots entrés précédemment. Il est possible de construire des segments SQL en utilisant l'une ou l'autre des méthodes, ou les deux en même temps.


Liste des opérateurs SQL compatibles

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 ...

Pour plus d'informations, consultez la documentation SQL.

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.


Exemple :

Create TABLE "Fiche_Personne"
 (ID NUMBER(8) UNIQUE,
  Sexe VARCHAR(50) NOT NULL,
  Nom VARCHAR(50) NOT NULL,
  Prenom VARCHAR(50) NOT NULL,
  Snd_Prenom VARCHAR(50) NULL,
  Adresse VARCHAR(100) NOT NULL,
  Code_Postal NUMBER(5) NOT NULL,
  Ville VARCHAR(30) NOT NULL,
  Telephone NUMBER(10) NULL,
  eMail VARCHAR(30) NULL)
Delete

L'instruction Delete s'utilise avec la clause From afin de supprimer des enregistrements au sein d'une table.

Syntaxe :

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.

Syntaxe :

From TABLE1 [ , TABLE2]

Exemple :

Affichage de tous les enregistrements de la table PRODUIT de la bibliothèque MAP400.

Select * From MAP400.PRODUIT


Insert

La commande Insert into permet d'ajouter des données dans une table.

Syntaxe :

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)

Exemple :

Suppression de l'enregistrement qui porte la référence n°10 dans la table PRODUIT de la bibliothèque MAP400.

Insert Into MAP400.PRODUIT (REF, NAME, PRICE, QTY, DISCSTD, DISCQTY) VALUES (16, Table, 200.00, 2, 10.00, 12.00)


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.


Syntaxe :

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.

Syntaxe :

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)

Exemple :

Mise à jour dans la table PRODUIT de la bibliothèque MAP400 de la quantité du produit Lecteur DVD.

Update MAP400.PRODUIT
Set QTY = 4
Where NAME = "Lecteur DVD"


Where

La clause Where permet d'ajouter des conditions à une requête. La valeur d'une condition peut-être Vrai ou Faux.

Syntaxe :

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"