Tous les articles par Mr COBOL

Opérateur SQL LIKE (suite)

Un caractère générique est utilisé pour remplacer un ou plusieurs caractères dans une chaîne.

Les caractères génériques sont utilisés avec l’opérateur SQL LIKE. L’opérateur LIKE est utilisé dans une clause WHERE pour rechercher un modèle spécifié dans une colonne.

Utilisez les caractères génériques suivants pour rechercher et répertorier les objets DB2 :

  • _ (trait de soulignement) correspond à n’importe quel caractère unique.
  • % (signe de pourcentage) ou * (astérisque) correspond à une chaîne de zéro caractère ou plus.

Les caractères génériques peuvent également être utilisés dans des combinaisons.

Voici quelques exemples montrant différents opérateurs LIKE avec les caractères génériques ‘%’ et ‘_’ :

Opérateur LIKELa description
WHERE Nom_Etudiant LIKE ‘s%’Recherche toutes les valeurs qui commencent par “s”
WHERE Nom_Etudiant LIKE ‘%i’Recherche toutes les valeurs qui se terminent par “i”
WHERE Nom_Etudiant LIKE ‘%sp%’Trouve toutes les valeurs qui ont “sp” dans n’importe quelle position
WHERE Nom_Etudiant LIKE ‘_v%’Trouve toutes les valeurs qui ont “v” en deuxième position
WHERE Nom_Etudiant LIKE ‘s_%_%’Recherche toutes les valeurs commençant par “s” et comportant au moins 3 caractères
WHERE Nom_Etudiant LIKE ‘s%p’Recherche toutes les valeurs qui commencent par “s” et se terminent par “p”

Le prédicat suivant est vrai lorsque la chaîne à tester dans NAME a la valeur SMITH, NESMITH, SMITHSON ou NESMITHY. Ce n’est pas vrai lorsque la chaîne a la valeur SMYTHE :

Nom_Etudiant LIKE '%SMITH%'

Les deux prédicats suivants sont équivalents ; trois des signes à quatre pour cent du premier prédicat sont redondants.

Nom_Etudiant LIKE 'SP%%%%AN'
Nom_Etudiant LIKE 'SP%AN'

Base de données DB2 :

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

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1 : utilisation du caractère générique %

L’instruction SQL suivante sélectionne tous les produits avec une catégorie commençant par “Acc”:

SELECT * FROM Produit 
 WHERE Categorie LIKE 'Acc%' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7003ClavierAccessoires36.00331 118,00
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 2 : utilisation du caractère générique %

L’instruction SQL suivante sélectionne tous les produits avec une catégorie contenant le modèle “oir”:

SELECT * FROM Produit 
 WHERE Categorie LIKE '%oir%' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7003ClavierAccessoires36.00331 118,00
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 3 : Utilisation du caractère générique _

L’instruction SQL suivante sélectionne tous les produits avec une catégorie commençant par n’importe quel caractère, suivi de “élos” :

SELECT * FROM Produit 
 WHERE Categorie LIKE '_élos' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur totale
7005VTTvélos1 200

Exemple 4 : Utilisation du caractère générique _

L’instruction SQL suivante sélectionne tous les produits avec une catégorie commençant par “Accessoire” et se terminant par n’importe quel caractère.

SELECT * FROM Produit 
 WHERE Categorie LIKE 'Accessoire_' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7003ClavierAccessoires36.00331 118,00
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Clause SQL SELECT LIMIT

On peut limiter le nombre de résultat avec l’aide de la clause SQL SELECT LIMIT.

Comment limiter les résultats des requêtes pour les bases de données DB2 ?

Il existe deux façons de limiter le résultat.

  1. LIMIT / OFFSET
  2. FETCH FIRST

Pourquoi avons-nous besoin de limiter les résultats de la requête ?

Supposons que vous écriviez une application qui nécessite des informations uniquement sur les 10 étudiants ayant obtenu les notes totales les plus élevées. Pour renvoyer uniquement les lignes de la table Students pour ces 20 étudiants, cela peut être réalisé par la clause Fetch First ou Limit.

De plus, cette clause est utile sur les grandes tables avec des milliers d’enregistrements. Le renvoi d’un grand nombre d’enregistrements peut avoir un impact sur les performances.

Clause DB2 LIMIT :

La clause LIMIT permet de limiter le nombre de lignes renvoyées par la requête.

Syntaxe:

SELECT select_list FROM nom_table
       LIMIT n [OFFSET m];

Où,

  • ‘m’ est le nombre de lignes à ignorer avant de renvoyer les n lignes.
  • ‘n’ est le nombre de lignes à renvoyer.

Vous pouvez également écrire la syntaxe LIMIT comme ci-dessous,

LIMITE m, n ;

Cette syntaxe représente le saut de m lignes et le renvoi des n lignes suivantes à partir du jeu de résultats.

Base de données DB2 :

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

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006STYLO7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1:

Utilisation de la syntaxe LIMIT pour récupérer les 4 premières lignes d’une table “Produit”.

SELECT *
  FROM Produit
       LIMIT 4;
Résultat :
ID-ProduitNom-ProduitCategoriePrisStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00

Exemple 2 :

Pour ignorer les 2 premiers produits et retourner les 3 produits suivants, nous utilisons la clause LIMIT OFFSET comme suit :

SELECT *
  FROM Produit
      LIMIT 3 OFFSET 2;
Résultat :
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200

Fonctions SQL MIN() & MAX()

La fonction MIN() renvoie la plus petite valeur de la colonne sélectionnée.

La fonction MAX() renvoie la plus grande valeur de la colonne sélectionnée.

Voyons ci-dessous la syntaxe de chaque fonction.

Syntaxe : MIN()

SELECT MIN(nom_colonne)
  FROM nom_table 
 WHERE condition;

Syntaxe : MAX()

SELECT MAX(nom_colonne)
  FROM nom_table 
 WHERE condition;

Base de données DB2 :

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

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006STYLO7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1 : Fonction Min

L’instruction SQL suivante trouve le prix du produit le moins cher dans la table “Produit”.

SELECT MIN(Prix) AS Moins_Cher
  FROM Produits;
Résultat:
Moins-Cher
7.45

Exemple 2 : Fonction Max

L’instruction SQL suivante trouve le prix du produit le plus cher dans la table “Produit”.

SELECT MAX(Prix) AS Plus_Cher
  FROM Produits;
Résultat:
Plus-Cher
1 200

Instruction SQL UPDATE

L’instruction UPDATE met à jour les valeurs des colonnes spécifiées dans les lignes d’une table.

Il permet de modifier les enregistrements existants dans une table.

UPDATE nom_table 
   SET colonne1 = valeur1, colonne2 = valeur2, ... 
 WHERE condition ;

Soyez prudent lorsque vous mettez à jour un enregistrement dans une table. Avez-vous remarqué la clause WHERE dans l’instruction UPDATE ? La clause WHERE spécifie les enregistrements qui doivent être mis à jour. Si vous omettez la clause WHERE, tous les enregistrements de la table seront mis à jour.

Base de données DB2 :

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

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1 : Mise à jour d’une seule ligne

L’instruction SQL suivante met à jour le premier ID_Produit (ID_Produit = 7001) avec un nouveau Nom_Produit et Stock.

UPDATE Produit 
   SET Nom_Produit = 'Clé USB', Stock = 30 
 WHERE ID_Produit = 7001;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001Clé USBAccessoires75,0030
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 2 : mise à jour de plusieurs lignes

L’instruction SQL suivante mettra à jour Nom_Produit en ‘Clé USB’ pour tous les enregistrements où Categorie est ‘Accessoires’.

UPDATE Produit 
   SET Nom_Produit = 'Clé USB' 
 WHERE Categorie = 'Accessories';
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001Clé USBAccessoires75,00
7002Disque dur65,00201 300
7003Clé USBAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50
7007Clé USBAccessoires75,00
7008Clé USBAccessoires75,00

Des astuces:

Si vous omettez la clause WHERE, TOUS les enregistrements seront mis à jour. voyons un exemple ci-dessous,

La requête SQL ci-dessous est identique à l’exemple 2, mais nous avons omis la clause WHERE.

UPDATE Produit 
  SET Nom_Produit = 'Clé USB' 
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001Clé USBAccessoires75,00
7002Clé USB65,00201 300
7003Clé USBAccessoires36.00331 118,00
7004Clé USBComposants23.5016376,00
7005Clé USBvélos1 200
7006Clé USB7.451074,50
7007Clé USBAccessoires75,00
7008Clé USBAccessoires75,00

TOUS les enregistrements seront mis à jour avec Nom_Produit est ‘Clé USB’. Soyez donc prudent lors de la mise à jour des enregistrements.

Instruction SQL DELETE 

L’instruction DELETE supprime les lignes d’une table.

Syntaxe:

DELETE FROM nom_table WHERE condition ;

Remarque : S’il n’y a pas de clause « where » dans l’instruction Delete, SQL supprimera toutes les données de la table. Vous devez donc être très prudent lors de l’exécution de l’instruction Delete et vous assurer qu’il existe une clause Where.

Base de données DB2 :

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

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50

Exemple 1 : supprimer un enregistrement

Supprimez ‘ID_Produit’ 7003 de la table ‘Produit’.

DELETE FROM Produit WHERE ID_Product = ‘7003’;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50

Exemple 2 : Supprimer tous les enregistrements

Supprimez tous les départements de la table ‘Produit’ (c’est-à-dire videz la table).

L’instruction SQL suivante supprime toutes les lignes de la table “Produit”, sans supprimer la table.

DELETE FROM Produit;
Résultat:

Tableau vide

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale

Instruction SQL SELECT

L’instruction SELECT est utilisée pour récupérer des données d’une base de données.

Pour utiliser SELECT, au minimum, spécifiez deux éléments d’information, ce que vous voulez sélectionner et d’où vous voulez le sélectionner.

Syntaxe:

SELECT colonne1, colonne2, ... 
  FROM nom_table ;

Ici, colonne1, colonne2, … sont les noms de champ de la table à partir de laquelle vous souhaitez sélectionner des données. Si vous souhaitez sélectionner tous les champs disponibles dans le tableau, utilisez la syntaxe suivante :

SELECT * FROM nom_table ;

Base de données DB2 :

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

ID-produitNom-ProduitCatégoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006STYLO7.451074,50

Exemple 1 : Récupération Simple

SELECT Nom-Produit FROM Produit ;

Cette instruction SELECT récupère une seule colonne appelée Nom-Produit à partir de la table Product.

Résultat:
Nom-Produit
Souris
Disque dur
Clavier
RAM
Roue
STYLO

Exemple 2 : Récupération de plusieurs colonnes

Pour récupérer plusieurs colonnes d’une table, plusieurs noms de colonne doivent être spécifiés après le mot-clé SELECT et chaque colonne doit être séparée par une virgule.

SELECT ID-Produit, Nom-Produit, Prix FROM Produit ;

Cette instruction SELECT récupère les données de plusieurs colonnes de la table Produit.

Résultat:
ID-ProduitNom-ProduitPrix
7001Souris75,00
7002Disque dur65,00
7003Clavier36.00
7004RAM23.50
7005Roue1 200
7006STYLO7.45

Exemple 3 : Récupération de toutes les colonnes

En plus de pouvoir spécifier les colonnes souhaitées (une ou plusieurs, comme vu précédemment), les instructions SELECT peuvent également demander toutes les colonnes sans avoir à les répertorier individuellement. Pour ce faire, utilisez le caractère générique astérisque (*) à la place des noms de colonne réels, comme suit.

SELECT * FROM Produit ;
Résultat:
ID-ProduitNom-ProduitCatégoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006STYLO7.451074,50

Instruction SQL ORDER BY

Pour trier explicitement les données extraites à l’aide d’une instruction SELECT, la clause ORDER BY est utilisée.

Le mot-clé ORDER BY trie les enregistrements par ordre croissant par défaut. Pour trier les enregistrements par ordre décroissant, utilisez le mot-clé DESC.

Syntaxe:

SELECT colonne1, colonne2, ... 
  FROM nom_table 
  ORDER BY colonne1, colonne2, ... ASC|DESC;

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-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque durAccessoires65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006StyloPapeterie7.45dix74,50
7007Clé USBAccessoires65,00201 300

Exemple 1 : tri par colonnes simples

SELECT ID-Produit, Nom-Produit, Categorie, Prix
  FROM Produit
  ORDER BY Prix;

Cette instruction trie les données par ordre alphabétique dans l’ordre croissant de la colonne Prix.

Résultat:
ID-ProduitNom-ProduitCategoriePrix
7006StyloPapeterie7.45
7004RAMComposants23.50
7003ClavierAccessoires36.00
7002Disque durAccessoires65,00
7007Clé USBAccessoires65,00
7001SourisAccessoires75,00
7005VTTvélos1 200

Exemple 2 : tri sur plusieurs colonnes

Pour trier sur plusieurs colonnes, spécifiez simplement les noms de colonne séparés par des virgules dans la clause ORDER BY.

SELECT ID-Produit, Nom-Produit, Prix
  FROM Produit
  ORDER BY Prix, Nom-Produit;

Ce code récupère trois colonnes et trie les résultats par deux d’entre eux, d’abord par Price puis par ProductName (c’est-à-dire si plusieurs enregistrements sont présents avec le même prix, ces enregistrements seront à nouveau triés en fonction du nom).

Résultat:
ID-ProduitNom-ProduitPrix
7006Stylo7.45
7004RAM23.50
7003Clavier36.00
7002Disque dur65,00
7007Clé USB65,00
7001Souris75,00
7005VTT1 200

Exemple 3 : Trier par position de colonne

ORDER BY prend également en charge le classement spécifié par la position relative des colonnes.

SELECT ID-Produit, Prix, Nom-Produit
  FROM Produit
 ORDER BY 2, 3;

ORDER BY 2 signifie trier par la deuxième colonne de la liste SELECT, la colonne Prix. ORDER BY 2, 3 signifie trier par Price puis par ProductName.

Résultat:
ID-ProduitPrixNom-Produit
70067.45Stylo
700423.50RAM
700336.00Clavier
700265,00Disque dur
700765,00Clé USB
700175,00Souris
70051 200VTT

Exemple 4 : Spécification du sens de tri

Le tri des données ne se limite pas aux ordres de tri croissants (de A à Z). Bien qu’il s’agisse de l’ordre de tri par défaut, la clause ORDER BY peut également être utilisée pour trier par ordre décroissant (de Z à A).

Pour trier par ordre décroissant, le mot-clé DESC doit être spécifié.

SELECT ProductID, ProductName, Price FROM Product ORDER BY Price DESC ;

Ce SQL trie les produits par prix dans l’ordre décroissant (produit le plus cher présent en premier).

Résultat:
ID-ProduitNom-ProduitPrix
7005VTT1 200
7001Souris75,00
7002Disque dur65,00
7007Clé USB65,00
7003Clavier36.00
7004RAM23.50
7006Stylo7.45

Instruction SQL VIEW

Une vue offre une manière différente d’examiner les données dans une ou plusieurs tables. L’instruction VIEW (vue) est une table virtuelle constituée d’une instruction SQL SELECT qui accède aux données d’une ou plusieurs tables ou vues.

Une vue contient des lignes et des colonnes, tout comme une vraie table. Les champs d’une vue sont des champs d’une ou plusieurs tables réelles de la base de données.

Voici la syntaxe de création de vue :

CREATE VIEW nom-view
       AS requete 

Où, requete signifie n’importe quelle instruction SQL SELECT.

Exemple:

Créez une vue nommée VW_PROJET sur la table TB_PROJET qui contient uniquement les lignes avec un numéro de projet (PROJET_NO) commençant par les lettres “SP”.

CREATE VIEW VW_PROJET
    AS SELECT *
      FROM TB_PROJET
        WHERE SUBSTR(PROJET_NO, 1, 2) = 'SP'

Nous pouvons interroger la vue ci-dessus comme suit :

SELECT * FROM [VW_PROJET];

Instruction SQL ALIAS

L’instruction CREATE ALIAS définit un alias pour un module, un surnom, une séquence, une table, une vue ou un autre alias. Les alias sont également appelés synonymes.

Voici la syntaxe de création d’alias :

CREATE[REPLACE] ALIAS nom-alias
         FOR TABLE nom-table
         [FOR MODULE nom-module]
         [FOR SEQUENCE nom-séquence]

Exemple:

L’instruction SQL suivante crée un alias pour une table TB_TABLE.

CREATE ALIAS SP_TAB
   FOR TB_TABLE;