Tous les articles par Mr COBOL

Opérateur SQL UNION

À l’aide d’UNION, plusieurs instructions SELECT peuvent être spécifiées et leurs résultats peuvent être combinés en un seul ensemble de résultats.

Une UNION doit être composée de deux ou plusieurs instructions SELECT, chacune séparée par le mot-clé UNION.

Chaque requête dans une UNION doit contenir les mêmes colonnes, expressions ou fonctions d’agrégation Les types de données des colonnes doivent être compatibles

Les noms de colonne dans le jeu de résultats sont généralement égaux aux noms de colonne dans la première instruction SELECT de l’UNION.

Syntaxe : UNION

SELECT Nom_Colonne(s) FROM table1
  UNION
SELECT Nom_Colonne(s) FROM table2;

L’UNION supprime automatiquement toutes les lignes en double du jeu de résultats de la requête.

Si vous voulez que toutes les occurrences de toutes les correspondances soient renvoyées, vous pouvez utiliser UNION ALL.

Syntaxe : UNION ALL

SELECT Nom_Colonne(s) FROM table1
  UNION ALL
SELECT Nom_Colonne(s) FROM table2;

Base de données DB2 :

Examinons les données du tableau “Commandes” ci-dessous :

Numéro-CommandeNuméro-ClientDate-CommandeVille
1001102020-09-08Londres
1002992020-09-01New York
1003172020-08-25Paris
1004762020-09-19Dubai
1005442020-09-25Sidney

Examinons les données du tableau “Clients” ci-dessous :

Numéro-ClientNom-CientPaysVille
76JackAmériqueNew York
17JancyAllemagneCalifornie
20CarmenRussieLondres
10robertIndeNew Delhi
99BrianChineChennai

Exemple 1:

L’instruction SQL suivante renvoie les villes (uniquement des valeurs distinctes) des tables “Commandes” et “Clients”.

SELECT Ville FROM Commandes
  UNION ALL
SELECT Ville FROM Clients
  ORDER BY Ville ;

Si “Commandes” ou “Clients” ont la même ville, chaque ville ne sera listée qu’une seule fois, car UNION ne sélectionne que des valeurs distinctes. Utilisez UNION ALL pour inclure les valeurs en double.

Résultat:

Ville
Californie
Chennai
Dubai
Londres
New Delhi
New York
Paris
Sidney

Si vous souhaitez que toutes les occurrences de toutes les correspondances soient renvoyées, vous pouvez utiliser UNION ALL au lieu de UNION.

Exemple 2 :

L’instruction SQL suivante renvoie les villes (avec des doublons) des tables “Commandes” et “Clients”.

SELECT Ville FROM Commandes
  UNION 
SELECT Ville FROM Clients
  ORDER BY Ville ;

Si “Commandes” ou “Clients” ont la même ville, chaque ville ne sera listée qu’une seule fois, car UNION ne sélectionne que des valeurs distinctes. Utilisez UNION ALL pour sélectionner également les valeurs en double

Résultat:

Ville
Californie
Chennai
Dubai
Londres
Londres
New Delhi
New York
New York
Paris
Sidney

Instruction SQL GROUP BY

L’instruction GROUP BY est utilisée pour regrouper les lignes qui ont les mêmes valeurs dans la table.

Le regroupement vous permet de diviser les données en ensembles logiques afin que vous puissiez effectuer des calculs agrégés sur chaque groupe. Les groupes sont créés à l’aide de la clause GROUP BY dans l’instruction SELECT.

La clause GROUP BY demande au DB2 de regrouper les données, puis d’effectuer l’agrégation sur chaque groupe plutôt que sur l’ensemble des résultats.

Syntaxe:

SELECT nom_colonne(s)
  FROM nom_table 
  WHERE condition
  GROUP BY nom_colonne(s);

Base de données DB2 :

Vous trouverez ci-dessous une sélection de la table “Product” de la base de données DB2.

ID-ProduitNom-ProduitCatégoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque durAccessoires65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006StyloPapeterie7.451074,50
7007Clé USBAccessoires65,00201 300

Exemple 1:

L’instruction SQL suivante répertorie le nombre de catégories différentes dans la table “Produit”.

SELECT Categorie, COUNT(Categorie) As "Nombre_de_Produit"
    FROM Produit
    GROUP BY Categorie;

La clause GROUP BY demande à DB2 de trier les données et de les regrouper par catégorie. Ainsi, “Number_of_Products” est calculé une fois par catégorie plutôt qu’une fois pour l’ensemble du tableau.

Le résultat de cette requête est le suivant.

CatégorieNombre_de_Produit
Accessoires4
Composants1
vélos1
Papeterie1

Clause SQL HAVING

En plus de pouvoir regrouper des données à l’aide de GROUP BY, SQL vous permet également de filtrer les groupes à inclure et ceux à exclure.

Par exemple, vous pouvez souhaiter une liste de tous les clients qui ont passé au moins deux commandes. Pour obtenir ces données, vous devez filtrer en fonction du groupe complet, et non des lignes individuelles.

HAVING est très similaire à WHERE. La seule différence est que WHERE filtre les lignes et HAVING filtre les groupes. WHERE filtre avant que les données ne soient regroupées et HAVING filtre après que les données soient regroupées.

De plus, la clause HAVING a été ajoutée à SQL car le mot-clé WHERE ne pouvait pas être utilisé avec les fonctions d’agrégation.

Base de données DB2 :

Vous trouverez ci-dessous une sélection de la table “Commandes” de la base de données DB2.

Numéro-CommandeNuméro-ClientDate-Commande
1001102020-09-08
1002992020-09-01
1003172020-08-25
1004762020-07-19
1005992020-09-21
1006172020-08-25
1007762020-05-19
1008992020-03-01
1009302020-06-25
1010402020-09-19
1011762020-05-19
1011992020-05-19

Exemple 1:

L’instruction SQL suivante sélectionne la liste de tous les clients qui ont passé au moins deux commandes.

SELECT Numero_Client, COUNT(*) AS Commandes
   FROM Commandes
   GROUP BY Numero_Client
   HAVING COUNT(Numero_Client) >= 2;

Dans cette instruction, la clause GROUP BY est utilisée pour regrouper les données par numéro de client afin que la fonction COUNT(*) puisse renvoyer le nombre de commandes passées par chaque numéro de client.

La clause HAVING filtre les données afin que seules les commandes avec deux éléments ou plus soient renvoyées.

Résultat:

Numéro-ClientCommandes
172
763
994

Exemple 2 : Regroupement et tri

Pour trier la sortie de GROUP BY, vous devez utiliser ORDER BY.

SELECT Numero_Client, COUNT(*) AS Commandes
    FROM Commandes
    GROUP BY Numero_Client
    HAVING COUNT(Numero_Client) >= 2;
     ORDER BY COUNT(Numero_Client) DESC;

Dans cette instruction, la clause GROUP BY est utilisée pour regrouper les données par numéro de client afin que la fonction COUNT(*) puisse renvoyer le nombre de commandes passées par chaque numéro de client.

La clause HAVING filtre les données afin que seules les commandes avec deux éléments ou plus soient renvoyées. Enfin, la sortie est triée à l’aide de la clause ORDER BY.

Résultat:

Numéro-ClientCommandes
994
763
172

Opérateur SQL EXISTS 

L’opérateur EXISTS teste l’existence de certaines lignes dans une sous-requête.

L’opérateur EXISTS renvoie true si la sous-requête renvoie un ou plusieurs enregistrements.

Le résultat de l’opérateur EXISTS :

  1. Est vrai uniquement si le nombre de lignes spécifié par la sous-requête est différent de zéro.
  2. Est faux uniquement si le nombre de lignes spécifié par la sous-requête est zéro.
  3. Ne peut pas être inconnu.

Syntaxe:

SELECT nom_colonne(s)
    FROM nom_table 
    WHERE EXISTS
    (SELECT nom_colonneFROM nom_table WHERE condition);

Examinons les données du tableau “Commandes” ci-dessous :

Numéro-CommandeNuméro-ClientDate-Commande
1001102020-09-08
1002992020-09-01
1003172020-08-25
1004762020-09-19
1005702020-09-19

Examinons les données du tableau “Clients” ci-dessous :

Numéro-ClientNom-ClientPays
76JackAmérique
17JancyAllemagne
20CarmenPakistan
10robertInde
99BrianChine
70AvrilAmérique

Exemple 1

L’instruction SQL suivante renvoie TRUE et répertorie les clients qui ont passé une commande.

SELECT Nom_Client
  FROM Clients
  WHERE EXISTS (SELECT Numero_Commande
                  FROM Commandes
                 WHERE Commandes.Numero_Commande = Clients.Numero_Commande
);
Résultat:
Nom-Cient
Jack
Jancy
robert
Brian
Avril

Exemple : 2

L’instruction SQL suivante renvoie TRUE et répertorie les clients qui ont passé une commande à la date ‘2020-09-19’.

SELECT Nom_Client
  FROM Clients
  WHERE EXISTS (SELECT Numero_Commande
                  FROM Clients
                  WHERE Clients.Numero_Commande = Client.Numero_Commande
                    AND Date_Commande='2020-09-19');
Résultat:
Nom-Client
Brian
Avril

Instruction SQL CASE 

L’instruction CASE passe par des conditions et renvoie une valeur lorsque la première condition est remplie (comme une instruction COBOL Evaluate). Ainsi, si une condition est vraie, elle arrêtera de lire et renverra le résultat. Si aucune condition n’est vraie, elle renvoie la valeur dans la clause ELSE.

Si la partie ELSE n’est pas ajoutée dans l’instruction CASE et qu’aucune condition n’est vraie, elle renvoie la valeur NULL.

syntaxe:

CASE
    WHEN condition1 THEN resultat1 
    WHEN condition2 THEN resultat2
    WHEN conditionN THEN résultatN 
    ELSE resultat
END;

Base de données DB2 :

Vous trouverez ci-dessous une sélection de la table “Employé” de la base de données DB2.

ID-EmployéNom-EmployéServiceÂgePaysVille
7001robertADM25IndeChennai
7002JancyHUM35AmériqueNew York
7003BrianOPE40Chine
7004PhilDES50AmériqueBoston
7005CarmenADM47Russie
7006HélèneOPE39AngleterreLondres

Exemple 1:

Supposons que dans la table “Employé”, le premier caractère d’un numéro de service représente la division de l’organisation. Utilisez une expression CASE pour répertorier le nom complet de la division à laquelle appartient chaque employé.

SELECT ID_Employe, Nom_Employe,
       CASE SUBSTR(Service,1,1)
          WHEN 'A' THEN 'Administration'
          WHEN 'H' THEN 'Resources Humaines'
          WHEN 'D' THEN 'Design'
          WHEN 'O' THEN 'Operations'
       END AS "Departement"
   FROM Employe;
Résultat:
ID-EmployéNom-EmployéDépartement
7001robertAdministration
7002JancyRessources humaines
7003BrianOpérations
7004PhilConcevoir
7005CarmenAdministration
7006HélèneOpérations

Exemple 2 :

L’instruction SQL suivante ordonnera l’employé par Ville. Cependant, si Ville est NULL, alors trier parPays :

SELECT ID_Employe, Nom_Employe, Ville, Pays
    FROM Employe
    ORDER BY
    (CASE
        WHEN Ville IS NULL THEN Pays
        ELSE Ville
    END);
Résultat:
ID-EmployéNom-EmployéVillePays
7004PhilBostonAmérique
7001robertChennaiInde
7006HélèneLondresAngleterre
7002JancyNew YorkAmérique
7003BrianChine
7005CarmenRussie

Commentaires SQL

A quoi servent les commentaires ?

Les commentaires sont utilisés pour expliquer des sections d’instructions SQL ou pour empêcher l’exécution d’instructions SQL.

Comment ajouter des commentaires dans le code SQL ?

Il existe deux manières de commenter une ligne.

  1. Commentaires sur une seule ligne
  2. Commentaires multi-lignes

Voyons chaque type ci-dessous :

Commentaires sur une seule ligne :

Les commentaires sur une seule ligne commencent par “–” .

Tout texte entre “–” et la fin de la ligne sera ignoré (ne sera pas exécuté).

Exemple 1:

--Sélectionner toutes les colonnes:
SELECT * FROM Employe;

Exemple 2 :

Vous pouvez également utiliser un commentaire sur une seule ligne comme ci-dessous.

SELECT * FROM Employe;   --Sélectionner toutes les colonnes:

Commentaires multi-lignes :

Les commentaires multi-lignes commencent par /* et se terminent par */. Tout texte entre /* et */ sera ignoré.

Exemple 2 :

/*Sélectionner toutes les colonnes
de la table Employe:*/
SELECT * FROM Employe;

Vous pouvez également utiliser un commentaire multi-lignes comme ci-dessous.

SELECT Nom_Employe, /*Age,*/ Ville FROM Employe;

Présentation de SQL

SQL est un langage standard pour accéder et manipuler des bases de données. SQL est utilisé pour obtenir et manipuler des données stockées dans des tables Db2. SQL se compose de plus de 100 instructions différentes qui peuvent être utilisées pour insérer, interroger, mettre à jour, supprimer et autoriser l’accès aux données Db2.

L’une des instructions SQL les plus couramment utilisées est SELECT. Cette instruction est utilisée pour interroger une table et produire des résultats sous forme de tableau.

Il existe un certain nombre de fonctions intégrées et définies par l’utilisateur disponibles dans SQL.


Que peut faire SQL ?

  1. Exécuter des requêtes sur une base de données
  2. Récupérer des données d’une base de données
  3. Insérer des enregistrements dans une base de données
  4. Mettre à jour des enregistrements dans une base de données
  5. Supprimer des enregistrements d’une base de données
  6. Créer de nouvelles bases de données
  7. Créer de nouvelles tables dans une base de données
  8. Créer des procédures stockées dans une base de données
  9. Créer des vues dans une base de données
  10. Définir des autorisations sur les tables, les procédures et les vues

Instructions SQL :

La plupart des actions que vous devez effectuer sur une base de données sont effectuées avec des instructions SQL.

L’instruction SQL suivante sélectionne tous les enregistrements de la table “ETUDIANTS” :

SELECT *
FROM ETUDIANTS;

Le symbole ‘*‘ indique que toutes les colonnes doivent être sélectionnées dans la table ETUDIANTS.

Remarque : les mots-clés SQL ne sont PAS sensibles à la casse : select est identique à SELECT.

Avons-nous besoin d’un point-virgule (;) à la fin de l’instruction SQL ?

Le point-virgule est le moyen standard de séparer chaque instruction SQL dans les systèmes de base de données qui permettent d’exécuter plusieurs instructions SQL dans le même appel au serveur.


Commandes SQL importantes répertoriées ci-dessous :

  1. SELECT – Extrait les données d’une base de données
  2. UPDATE – Met à jour les données d’une base de données
  3. DELETE – Supprime les données d’une base de données
  4. INSERT INTO – Insère de nouvelles données dans une base de données
  5. CREATE DATABASE – Crée une nouvelle base de données
  6. ALTER DATABASE – Modifie une base de données
  7. CREATE TABLE – Crée une nouvelle table
  8. ALTER TABLE – Modifie une table
  9. DROP TABLE – Supprime une table
  10. CREATE INDEX – Crée un index (clé de recherche)
  11. DROP INDEX – Supprime un index

Types de langage de requête structuré (SQL)

SQL (Structured Query Language) est un langage conçu spécifiquement pour communiquer avec les bases de données et est un outil puissant pour manipuler les données. C’est le langage de requête standard pour les systèmes de gestion de bases de données relationnelles (RDBMS).

Il s’agit d’un langage indépendant de la base de données qui vous permet d’interroger des données et d’effectuer des opérations CRUD (Create, Update, and Delete = créer, mettre à jour et supprimer). SQL est facile à apprendre. Les déclarations sont toutes composées de mots anglais descriptifs.

SQL se compose de trois sous-langages comme suit :

  1. DDL : langage de définition de données
  2. DML : langage de manipulation de données
  3. DCL : langage de contrôle des données
SQL : Schéma sur les types de langages
Schéma sur les types de langages

DDL (Data Definition Language) 

Il crée et maintient des structures de données physiques à l’aide des instructions suivantes :

  • Create : Création des objets.
  • Alter : Modification des caractéristiques des objets existants.
  • Drop : suppression des objets.

DML (Data Manipulation Language)

Il effectue les opérations suivantes :

  • Insert : Insérer
  • Update : Mise à jour
  • Delete : Effacer
  • Retrieval : Récupération (Simple, plusieurs colonnes, toutes les colonnes)
  • Sorting the retrieved data : Trier les données récupérées
  • Filtering the data : Filtrer les données
  • Concatenation : Enchaînement
  • Using alias : Utilisation d’alias
  • Removing duplicates : Suppression des doublons
  • Functions : Les fonctions
  • Grouping : Regroupement
  • Subquery : Sous-requête
  • Join : Jointure
  • Union : Union

DCL (Data Control Language) 

Il effectue les opérations suivantes :

  • Grant : Accorder
  • Revoke : Révoquer

La sécurité de la base de données est gérée via les instructions SQL GRANT et REVOKE.

Instruction SQL ALTER DATABASE

L’instruction SQL ALTER DATABASE est utilisée pour modifier la description d’une base de données.

La syntaxe de modification de la base de données est la suivante :

ALTER



DATABASE nom-database
BUFFERPOOL nom-bp

INDEXBP nom-bp
STOGROUP nom-stockgroup
CCSID ASCII/EBCDIC/UNICODE

Exemple 1:

Remplacez le pool de mémoire tampon par défaut des espaces table et des index de la base de données ABCDE par BP2.

ALTER

DATABASE ABCDE
BUFFERPOOL BP2
INDEXBP BP2;

Instruction SQL ALTER TABLESPACE

La syntaxe de modification de l’espace table (ALTER TABLESPACE) est la suivante :

ALTER   TABLESPACE [database-name.]tablespace-name 
        using-block 
        free-block 
        LOGGED | NOT LOGGED 
        TRACKMOD YES/NO 
        BUFFERPOOL bp-name 
        CCSID ASCII/EBCDIC/UNICODE 
        CLOSE YES/NO 
        COMPRESS YES/NO 
        LOCKMAX integer 
        LOCKSIZE ANY/TABLESPACE/TABLE/PAGE/ROW 
        MAXROWS integer 
        MAXPARTITIONS integer
using-block:




USING
VCAT catalog-name
STOGROUP stogroup-name
PRIQTY integer
SECQTY integer
ERASE YES/NO
free-block:
FREEPAGE integer
PCTFREE integer

Example 1:

Modifiez l’espace table DSN8S91D dans la base de données DSN8D91A. BP2 est le pool de mémoire tampon associé à l’espace table. PAGE est le niveau auquel le verrouillage doit avoir lieu.

ALTER

TABLESPACE DSN8D91A.DSN8S91D
BUFFERPOOL BP2
LOCKSIZE PAGE;
.