Tous les articles par Mr COBOL

La Clause SQL WHERE

La clause WHERE est utilisée pour filtrer les enregistrements.

Récupérer uniquement les données souhaitées implique de spécifier des critères de recherche, également appelés condition de filtre. Dans une instruction SELECT, les données sont filtrées en spécifiant des critères de recherche dans la clause WHERE.

Syntaxe:

SELECT colonne1, colonne2, ...
  FROM nom_table 
 WHERE condition;

La clause WHERE n’est pas seulement utilisée dans l’instruction SELECT, elle est également utilisée dans l’instruction UPDATE, DELETE.

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 dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006STYLO7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple:

L’instruction SQL ci-dessous récupère deux colonnes de la table “Product”, mais au lieu de renvoyer toutes les lignes, seules les lignes avec une valeur SRP de 75,00 sont renvoyées.

SELECT 
ID-Produit, Nom-Produit
  FROM Produit
 WHERE Prix = 75.00;
Résultat:
ID-ProduitNom-Produit
7001Souris
7007Lecteur CD
7008Micro

Champs numériques vs champs de texte

SQL requiert des guillemets simples autour des valeurs de texte (la plupart des systèmes de base de données autorisent également les guillemets doubles). Cependant, les champs numériques ne doivent pas être entourés de guillemets.

SELECT ID-Produit, Nom-Produit, Prix
  FROM Produit
 WHERE Categorie= 'Accessories';
Résultat:
ID-ProduitNom-ProduitPrix
7001Souris75,00
7003Clavier36.00
7007Lecteur CD75,00
7008Micro75,00

Opérateurs de la clause WHERE :

SQL prend en charge toute une gamme d’opérateurs conditionnels dans la clause WHERE, comme indiqué.

OpérateurLa description
=Égalité
<>Non-égalité (diffèrent)
!=Non-égalité (diffèrent)
<Inférieur à
<=Inférieur ou égal à
!<Pas moins que
>Supérieur à
>=Supérieur ou égal à
!>Pas plus grand que
BETWEENEntre deux valeurs spécifiées, y compris les valeurs de début et de fin spécifiées
IS NULLEst une valeur NULL

Exemple 1:

Pour répertorier tous les produits qui coûtent moins de 10 €

SELECT ID-Produit, Nom-Produit 
  FROM Produit 
 WHERE Prix  < 10 ;
Résultat:
ID-ProduitNom-Produit
7006STYLO

Exemple 2 :

Pour répertorier tous les produits de la catégorie autres que “Accessoires”

SELECT ID-Produit, Nom-Produit, Prix 
  FROM Produit 
 WHERE Categorie <> 'Accessoires' ;
Résultat:
ID-ProduitNom-ProduitPrix
7002Disque dur65,00
7004RAM23.50
7005Roue1 200
7006STYLO7.45

Exemple 3 :

Pour récupérer tous les produits dont le prix est compris entre 5 € et 10 €, y compris les valeurs de début et de fin spécifiées.

SELECT ID-Produit, Nom-Produit
  FROM Produit
 WHERE Prix BETWEEN 5 AND 25;
Résultat:
ID-ProduitNom-Produit
7004RAM
7006STYLO

Exemple 4 :

Pour renvoyer une liste de tous les produits qui n’ont pas de catégorie (c’est-à-dire une valeur nulle)

SELECT ID-Produit, Nom-Produit, Prix
  FROM Produit
 WHERE Categorie IS NULL;
Résultat:
ID-ProduitNom-ProduitPrix
7002Disque dur65,00
7006STYLO7.45

Opérateurs SQL AND, OR et NOT

Pour un meilleur contrôle des filtres, DB2 SQL vous permet de spécifier plusieurs clauses WHERE.

Opérateur : un mot-clé spécial utilisé pour joindre ou modifier des clauses dans une clause WHERE. Ceci est également connu sous le nom d’opérateurs logiques.

Les opérateurs AND (et) et OR (ou) sont utilisés pour filtrer les enregistrements en fonction de plusieurs conditions.

  1. L’opérateur AND affiche un enregistrement si toutes les conditions séparées par AND sont TRUE (VRAIE).
  2. L’opérateur OR affiche un enregistrement si l’une des conditions séparées par OR est TRUE (VRAIE).

L’opérateur NOT affiche un enregistrement si la ou les conditions sont NOT TRUE (FAUX).

Syntaxe:

SELECT colonne1, colonne2, ... 
  FROM nom_table 
 WHERE condition1 AND/OR condition2 AND/OR condition3 ...;

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 dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006Stylo7.451074,50
7007Tapis de sourisAccessoires5,00

Exemple 1 : Utilisation de l’opérateur AND :

Pour filtrer sur plusieurs colonnes, nous utilisons l’opérateur AND pour ajouter des conditions à notre clause WHERE. Il s’agit d’un mot clé utilisé dans une clause WHERE pour spécifier que seules les lignes correspondant à toutes les conditions spécifiées doivent être extraites. “AND” indique au DB2 de renvoyer uniquement les lignes qui remplissent toutes les conditions spécifiées.

SELECT ID-Produit, Nom-Produit, Prix 
  FROM Produit 
 WHERE Categorie = 'Accessoires' AND Prix > 10 ;

Cette instruction SQL récupère les ProductId, ProductName et Price pour tous les produits de la catégorie ‘Accessoires’ et le prix est supérieur à 10.

La clause WHERE de cette instruction SELECT est composée de deux conditions et le mot-clé AND est utilisé pour les joindre.

Résultat:
ID-ProduitNom du produitPrix
7001Souris75,00
7003Clavier36.00

Exemple 2 : Utilisation de l’opérateur OR

L’opérateur OR est exactement le contraire de AND.

L’opérateur OR demande au DB2 d’extraire les lignes qui correspondent à une condition ou aux deux.

SELECT Produit, Nom-Produit, Prix 
  FROM Produit 
 WHERE Categorie = 'Accessoires' OR Prix > 10 ;

Cette instruction SQL récupère ProductId, ProductName et Price pour tous les produits de Category = ‘Accessories’ ou Price > 10

Résultat:
ID-ProduitNom-ProduitPrix
7001Souris75,00
7003Clavier36.00
7007Tapis de souris5,00

Ordre d’évaluation :

Les clauses WHERE peuvent contenir n’importe quel nombre d’opérateurs AND et OR.

SQL traite les opérateurs AND avant les opérateurs OR.

Exemple 3 :

Pour obtenir une liste de tous les ID-Produit pour la catégorie ‘Accessoires’ et ‘Composants’ avec un prix de 10 ou plus.

SELECT ID-Produit
    FROM Produit
    WHERE (Categorie = 'Accessories' OR Categorie = 'Composants') AND Prix >= 10;

Si vous n’utilisez pas de parenthèses, vous n’obtiendrez pas la sortie souhaitée.

Chaque fois que vous écrivez des clauses WHERE qui utilisent à la fois les opérateurs AND et OR, utilisez des parenthèses pour regrouper explicitement les opérateurs.

Résultat:
ID-Produit
7001
7003
7004

Exemple 4 : Utilisation de l’opérateur NOT

L’instruction SQL suivante sélectionne tous les champs de “Produit” où Catégorie n’est PAS “Accessoires”.

SELECT * FROM Produit
 WHERE NOT Categorie = 'Accessoires';
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201 300
7004RAMComposants23.5016376,00
7005Rouevélos1 200
7006Stylo7.451074,50

Instruction SQL INSERT INTO

La commande INSERT INTO ajoute de nouvelles lignes à une table.

Il existe deux manières d’écrire l’instruction INSERT INTO.

La première méthode spécifie à la fois les noms de colonne et les valeurs à insérer. La syntaxe est,

INSERT INTO nom_table (colonne1, colonne2, colonne3, ...)  
       VALUES (valeur1, valeur2, valeur3, ...);

Deuxième méthode, si vous ajoutez des valeurs pour toutes les colonnes de la table, vous n’avez pas besoin de spécifier les noms de colonne dans la requête SQL. Cependant, assurez-vous que l’ordre des valeurs est dans le même ordre que celui des colonnes du tableau.

La syntaxe INSERT INTO serait la suivante :

INSERT INTO nom_table 
       VALUES (valeur1, valeur2, valeur3, ...);

Exemple 1:

La table TB_DEPT contient les colonnes suivantes :

  • DEPT_NO
  • DEPT_NOM
  • DEPT_MGR_NO
  • DEPT_ADMR.

Insérez un nouveau département avec les spécifications suivantes dans la table TB_DEPT.

  • Le numéro de département (DEPT_NO) est ‘A31’
  • Le nom du service (DEPT_NOM) est “ARCHITECTURE”
  • Géré par (DEPT_MGR_NO) une personne avec le numéro ‘00123’
  • Relève du département (DEPT_ADMR) ‘A01’.
INSERT INTO TB_DEPT
    VALUES (‘A31’
    , ‘ARCHITECTURE’
    , ‘00123’
    , ‘A01’);

Dans la requête SQL ci-dessus, il n’y a pas de nom de colonne car vous ajoutez des valeurs pour toutes les colonnes de la table.

Comme nous l’avons dit précédemment, si vous ajoutez des valeurs pour toutes les colonnes de la table, vous n’avez pas besoin de spécifier les noms de colonne dans la requête SQL. Cependant, assurez-vous que l’ordre des valeurs est dans le même ordre que celui des colonnes du tableau.

Résultat:

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

DEPT_NODEPT_NOMDEPT_MGR_NODEPT_ADMR
A31ARCHITECTURE00123A01

Exemple 2 :

Pour insérer un nouveau service dans la table TB_DEPT comme dans l’exemple 1, mais sans numéro de responsable au nouveau service.

INSERT INTO TB_DEPT (DEPT_NO
      , DEPT_NAME
      , DEPT_ADMR )
    VALUES (‘A31’
      , ‘ARCHITECTURE’
      , ‘A01’);

Dans cet exemple, vous devez mentionner la colonne. car vous n’insérez les données que dans des colonnes spécifiques.

Résultat:

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

DEPT_NODEPT_NOMDEPT_MGR_NODEPT_ADMR
A31ARCHITECTUREA01

Valeur NULL insérée dans la table “TB_DEPT” pour la colonne DEPT_MGR_NO

Valeurs SQL NULL

Qu’est-ce qu’une valeur NULL ?

Certaines colonnes ne peuvent pas avoir une valeur significative dans chaque ligne. DB2 utilise un indicateur de valeur spécial, la valeur nulle, pour représenter une valeur inconnue ou manquante. Une valeur nulle est une valeur spéciale que DB2 interprète comme signifiant qu’aucune donnée n’est présente.

Une valeur NULL est différente d’une valeur nulle ou d’un champ contenant des espaces. Un champ avec une valeur NULL est un champ qui a été laissé vide lors de la création de l’enregistrement.

Comment les valeurs NULL ont-elles été créées ?

Si un champ d’une table est facultatif, il est possible d’insérer un nouvel enregistrement ou de mettre à jour un enregistrement sans ajouter de valeur à ce champ. Ensuite, le champ sera enregistré avec une valeur NULL.

Si vous ne spécifiez rien d’autre, DB2 autorise n’importe quelle colonne à contenir des valeurs NULL. Les utilisateurs peuvent créer des lignes dans le tableau sans fournir de valeur pour la colonne.

Comment empêcher les valeurs NULL ?

L’utilisation de la clause NOT NULL vous permet d’interdire les valeurs NULL dans la colonne. Les clés primaires doivent être définies comme NOT NULL.

Comment tester les valeurs NULL ?

Les opérateurs IS NULL et IS NOT NULL sont utilisés pour tester les valeurs NULL.

Syntaxe : IS NULL

SELECT nom_colonne 
  FROM nom_table 
  WHERE nom_colonne IS NULL;

Syntaxe :  IS NOT NULL

SELECT nom_colonne 
  FROM nom_table 
  WHERE nom_colonne IS NOT NULL;

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 dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.45dix74,50

Exemple 1:

Le SQL suivant répertorie tous les ID-Produit avec une valeur NULL dans le champ “Categorie”.

SELECT ID-Produit
   FROM Produit
   WHERE Categorie IS NULL;
Résultat:
ID-Produit
7002
7006

Exemple 2 :

Le SQL suivant répertorie tous les ID-Produit avec une valeur dans le champ “Categorie”.

SELECT ID-Produit
  FROM Produit
 WHERE Categorie IS NOT NULL;
Résultat:
ID-Produit
7001
7003
7004
7005

Fonctions SQL COUNT(), AVG() et SUM()

Fonctions SQL COUNT(), AVG() et SUM()

La fonction COUNT() renvoie le nombre de lignes correspondant à un critère spécifié.

La fonction AVG() renvoie la valeur moyenne d’une colonne numérique.

La fonction SUM() renvoie la somme totale d’une colonne numérique.

Voyons ci-dessous la syntaxe de chaque fonction.

Syntaxe : COUNT()

SELECT COUNT(nom_colonne) 
  FROM nom_table 
 WHERE condition ;

Syntaxe : AVG()

SELECT AVG(nom_colonne) 
  FROM nom_table 
 WHERE condition ;

Syntaxe : SUM()

SELECT SUM(nom_colonne) 
  FROM nom_table 
 WHERE condition ;

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 dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006STYLO7.45dix74,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1 : Fonction COUNT

L’instruction SQL suivante trouve le nombre de produits dans la table “Produit”. Les valeurs NULL ne sont pas comptées.

SELECT COUNT(ID_Produit) 
  FROM Produits ;
Résultat:
COUNT(ID_Produit)
8

Exemple 2 : Fonction Avg

L’instruction SQL suivante trouve le prix moyen de tous les produits dans la table “Produit”. Les valeurs NULL sont ignorées.

SELECT AVG(Prix) 
  FROM Produits ;
Résultat:
AVG(Prix)
194.61875

Exemple 3 : Fonction Somme

L’instruction SQL suivante trouve la somme des champs “Stock” dans la table “Produit”. Les valeurs NULL sont ignorées.

SELECT SUM(Stock) 
  FROM Produits ;
Résultat:
SUM(Stock)
79

Fonctions scalaires SQL

Voici la liste des fonctions de manipulation de texte couramment utilisées :

FonctionLa descriptionExemple
LEFT()Renvoie les caractères à partir de la gauche de la chaîneLEFT(cust_firstname, 4)
LENGTH()Renvoie la longueur réelle d’une chaîneLENGTH(cust_firstname)
LOWER()Convertit la chaîne en minusculeLOWER(cust_firstname)
LTRIM()Coupe l’espace blanc à gauche de la chaîneLTRIM(cust_firstname)
RIGHT()Renvoie les caractères à partir de la droite de la chaîneRIGHT(cust_firstname)
RTRIM()Coupe l’espace blanc à droite de la chaîneRTRIM(cust_firstname)
UPPER()Convertit la chaîne en majusculeUPPER(cust_firstname)
SUBSTR()Renvoie une sous-chaîne d’une chaîne.
2e argument – position de départ
3ème argument – longueur
SUBSTR(cust_firstname,3,4)
HEX()Renvoie la représentation hexadécimale de son argumentHEX(cust_firstname)

Exemple 1:

La fonction DB2 SQL LEFT renvoie les caractères entiers les plus à gauche de la chaîne.

SYNTAXE : LEFT(Chaîne, longueur)

SELECT LEFT(Nom_Employe, 4) 
  FROM TB_Employe ;

Supposons que le nom de l’employé (VARCHAR(20)) ait la valeur ‘TWIN BROTHERS’. Ainsi, les 4 premiers caractères “TWIN” seront affichés.

Exemple 2 :

La fonction DB2 SQL SUBSTR renvoie une sous-chaîne d’une chaîne.

SYNTAXE : SUBSTR(chaîne, début, longueur)

SELECT SUBSTR(Nom_Employe, 1, 4) 
  FROM TB_Employe ;

Supposons que le nom de l’employé (VARCHAR(20)) ait la valeur ‘TWIN BROTHERS’. Ainsi, les 4 premiers caractères “TWIN” seront affichés.

Remarque : si la position de départ n’est pas fournie (c’est-à-dire qu’un seul numéro est présent dans la fonction SUBSTR). Il extraira de la colonne 1.

SELECT SUBSTR(Nom_Employe, 4) 
  FROM TB_Employe ;

Renvoie la valeur ‘TWIN’. Résultat identique à la première requête.

Exemple 3 :

La fonction DB2 SQL LENGTH renvoie la longueur d’une valeur.

SYNTAXE : LENGTH(Chaîne)

Le résultat de la fonction est un entier large. Si l’argument peut être nul, le résultat peut être nul ; si l’argument est nul, le résultat est la valeur nulle.

Le résultat est la longueur de l’argument. La longueur des chaînes inclut les blancs. La longueur d’une chaîne de longueur variable est la longueur réelle, pas l’attribut de longueur.

SELECT LENGTH(Nom_Employe) 
  FROM TB_Employe ;

Supposons que le nom de l’employé est une chaîne de caractères de longueur variable avec une valeur de ‘TWIN BROTHERS’.

La requête SQL ci-dessus renvoie la valeur 13.

Exemple 4 :

La fonction DB2 SQL LTRIM supprime tous les caractères spécifiés au début d’une expression.

SYNTAXE : LTRIM(chaîne, chaîne_trim)

La fonction LTRIM supprime tous les caractères contenus dans trim-string depuis le début de string. Si trim-string n’est pas spécifié, seuls les blancs sont supprimés.

SELECT LTRIM(Nom_Employe) 
  FROM TB_Employe ;

Supposons que le nom de l’employé est défini comme CHAR(20) et a une valeur de ‘ TWIN BROTHERS’.

La requête SQL ci-dessus renvoie la valeur ‘TWIN BROTHERS’.

Exemple 5 :

Voyons un autre exemple dans LTRIM.

Utilisez la fonction LTRIM pour supprimer des nombres individuels dans la chaîne de coupe à partir du début (côté gauche) de la chaîne.

SELECT LTRIM ('123DEFG123', '321'),
       LTRIM ('12DEFG123', '321'),
       LTRIM ('123123222XYZ22', '123'),
       LTRIM ('12321', '213'),
       LTRIM ('XYX123 ', '321')
FROM SYSIBM.SYSDUMMY1

Le résultat de la requête sql ci-dessus est,

'DEFG123' 
'DEFG123' 
'XYZ22' 
'' (une chaîne vide - tous les caractères supprimés) 
'XYX123' (aucun caractère supprimé)

La fonction LTRIM ne supprime pas les instances de ‘1’, ‘2’ et ‘3’ sur le côté droit de la chaîne, après les caractères autres que ‘1’, ‘2’ ou ‘3’.

Fonctions numériques SQL

Voici la liste des fonctions numériques SQL couramment utilisées :

FonctionLa descriptionExemple
DECIMALRenvoie une représentation décimale de son argumentDECIMAL(inv_total, 10,3)
DIGITSRenvoie une représentation sous forme de chaîne de caractères de son argumentDIGITS(inv_total)
FLOATRenvoie une représentation en virgule flottanteFLOAT(cust_salary)
INTEGERRenvoie une représentation entièreINTEGER(cust_salary+.5)
ABS()Renvoie la valeur absolue d’un nombreABS(inv_total)
COS()Renvoie le cosinus trigonométrique d’un angle spécifiéCOS(inv_total)
EXP()Renvoie la valeur exponentielle d’un nombre spécifiqueEXP(inv_total)
PI()Renvoie la valeur de PIPI(inv_total)
SIN()Renvoie le sinus trigonométrique d’un angle spécifiéSIN(inv_total)
SQRT()Renvoie la racine carrée d’un nombre spécifiéSQRT(inv_total)
TAN()Renvoie la tangente trigonométrique d’un angle spécifiéTAN(inv_total)

Opérateur SQL LIKE

Les caractères génériques sont des caractères spéciaux utilisés pour faire correspondre des parties d’une valeur dans la clause WHERE.

Pour utiliser des caractères génériques dans les clauses de recherche, l’opérateur LIKE doit être utilisé.

La recherche par caractères génériques ne peut être utilisée qu’avec des champs de texte (chaînes).

Deux caractères génériques sont souvent utilisés conjointement avec l’opérateur LIKE :

  • %” – Signifie correspondre à n’importe quel nombre d’occurrences de n’importe quel caractère.
  • _ ” – Le trait de soulignement représente un seul caractère

Syntaxe:

SELECT colonne1, colonne2, ... 
  FROM nom_table 
 WHERE colonneN LIKE modèle ;

Vous pouvez également combiner n’importe quel nombre de conditions à l’aide des opérateurs AND ou OR.

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 ‘b%’Recherche toutes les valeurs qui commencent par “b”
WHERE Nom_Etudiant LIKE ‘%ed%’Trouve toutes les valeurs qui ont “ed” dans n’importe quelle position
WHERE Nom_Etudiant LIKE ‘a_%’Recherche toutes les valeurs commençant par “a” et comportant au moins 2 caractères
WHERE Nom_Etudiant LIKE ‘b%t’Recherche toutes les valeurs qui commencent par “b” et se terminent par “t”
WHERE Nom_Etudiant LIKE ‘%t’Recherche toutes les valeurs qui se terminent par “t”
WHERE Nom_Etudiant LIKE ‘_a%’Recherche toutes les valeurs qui ont “a” en deuxième position
WHERE Nom_Etudiant LIKE ‘s__%’Recherche toutes les valeurs commençant par “s” et comportant au moins 3 caractères

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 dur65,00201 300,00
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006Stylo7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1:

L’instruction SQL suivante sélectionne tous les produits dont le Nom_Produit commence par “S” :

SELECT * FROM Produit 
 WHERE Nom_Produit LIKE 'S%' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,001 300,00
7005Stylo7,451074,50

Exemple 2 :

L’instruction SQL suivante sélectionne tous les produits dont le Nom_Produit se termine par “r” :

SELECT * FROM Produit 
 WHERE Nom_Produit LIKE '%r' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201 300,00
7003ClavierAccessoires36,00331118,00

Exemple 3 :

L’instruction SQL suivante sélectionne tous les produits avec un Nom_Produit qui ont “ur” à n’importe quelle position :

SELECT * FROM Produit 
 WHERE Nom_Produit LIKE '%ur%' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7007Lecteur CDAccessoires75,00

Exemple 4 :

L’instruction SQL suivante sélectionne tous les produits avec un Nom_Produit qui ont “i” en deuxième position :

SELECT * FROM Produit 
 WHERE Nom_Produit LIKE '_i%' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201 300
7008MicroAccessoires75,00

Exemple 5 :

L’instruction SQL suivante sélectionne tous les produits dont le Nom_Produit commence par “D” et se termine par “r” :

SELECT * FROM Produit 
 WHERE Nom_Produit LIKE 'D%r';
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201 300,00

Exemple 6 :

L’instruction SQL suivante sélectionne tous les produits avec un Nom_Produit qui ne commence PAS par “S” :

SELECT * FROM Produit 
 WHERE Nom_Produit NOT LIKE 'S%' ;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201300,00
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Opérateur SQL IN

L’opérateur IN vous permet de spécifier plusieurs valeurs dans une clause WHERE.

L’opérateur IN accomplit le même objectif que OR. Mais IN a les avantages suivants.

  • Pour les longues listes d’options valides, la syntaxe de l’opérateur IN est beaucoup plus propre et plus facile à lire.
  • L’ordre d’évaluation est plus facile à gérer.
  • Le plus grand avantage de IN est que l’opérateur IN peut contenir une autre instruction SELECT.

Syntaxe:

SELECT nom_colonne(s) 
  FROM nom_table 
 WHERE nom_colonne [NOT] IN (valeur1, valeur2, ...);

ou:

SELECT nom_colonne(s) 
  FROM nom_table 
 WHERE nom_colonne [NOT] IN (SELECT instruction );

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 l’opérateur IN :

L’instruction SQL suivante sélectionne tous les produits avec la catégorie “Accessoires”, “Composants” et “Vélos”.

SELECT * 
  FROM Produit 
 WHERE Categorie IN ('Accessoires', 'Composants', 'Vélos');
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005Hondavélos1 200
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 2 : Utilisation de l’opérateur NOT

NOT est un mot clé utilisé dans une clause WHERE pour annuler une condition.

L’instruction SQL suivante sélectionne tous les produits qui ne sont pas dans la catégorie comme “Accessoires”, “Composants” et “Vélos”.

Exemple:

SELECT * 
  FROM Product 
 WHERE Categorie NOT IN ('Accessoires', 'Composants', 'Vélos');
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7002Disque dur65,00201 300
7006STYLO7.451074,50

Exemple 3 : Utilisation de l’opérateur IN avec SELECT

L’instruction SQL suivante sélectionne tous les étudiants issus des mêmes villes que les enseignants :

Exemple:

SELECT * FROM Etudiants 
    WHERE Ville IN (SELECT Ville FROM Enseignants);

Présentation de DB2

DB2 ou Database 2 est un système de gestion de base de données relationnelle proposé par IBM qui s’exécute sur IBM Mainframe, AS/400 et sur PC. Une base de données DB2 peut passer d’une petite application mono-utilisateur à un grand système multi-utilisateurs.

DB2 est conçu pour stocker, analyser et récupérer efficacement les données. Le produit DB2 est étendu avec la prise en charge des fonctionnalités orientées objet et des structures non relationnelles avec XML.

Quels sont les avantages?

  • Il est facile à comprendre. Les données des bases de données Db2 sont présentées aux utilisateurs sous forme de tableau. C’est l’une des manières les plus courantes d’afficher des données, telles que les annuaires téléphoniques et les horaires des transports publics.
  • Il permet une flexibilité de conception. Comme vous pouvez l’imaginer, un tableau de données est relativement facile à concevoir. Tout ce que vous devez savoir, ce sont les éléments clés de votre base de données, tels que le nom, l’adresse et le numéro de téléphone.
  • Il fournit une facilité d’accès. L’utilisateur est protégé du fonctionnement interne de Db2. Par conséquent, l’utilisateur n’a pas besoin de connaître les relations physiques de la base de données à laquelle il accède.

Qu’est-ce que la base de données ?

Une base de données est une collection de données stockées de manière organisée. La façon la plus simple d’y penser est d’imaginer une base de données comme un classeur. Le classeur est simplement un emplacement physique pour stocker des données, quelles que soient ces données ou leur organisation.

DATABASE – Un conteneur (généralement un fichier ou un ensemble de fichiers) pour stocker des données organisées.

Qu’est-ce qu’une base de données relationnelle ?

Toute base de données dont l’organisation logique est basée sur un modèle de données relationnel (Relation – Terme mathématique pour Table).

Db2 lui-même est une base de données relationnelle, qui est essentiellement une collection de données connexes stockées dans plusieurs tables qui peuvent être réassemblées pour former des données utilisateur significatives.

Chaque table est divisée en entités plus petites appelées champs. Un champ est une colonne dans une table conçue pour conserver des informations spécifiques sur chaque enregistrement de la table.

Un enregistrement, également appelé ligne, est chaque entrée individuelle qui existe dans une table. Une colonne est une entité verticale dans une table qui contient toutes les informations associées à un champ spécifique dans une table.

Groupe de stockage

Un groupe de stockage DB2 (STOGROUP) est un ensemble de volumes sur des périphériques de stockage à accès direct (DASD). Les volumes contiennent les ensembles de données VSAM dans lesquels les tables et les index sont réellement stockés.

Le nombre maximum de volumes par groupe de stockage est de 133 (idéalement 3 ou 4). Tous les volumes d’un groupe de stockage donné doivent avoir le même type de périphérique (3380, 3390, etc.). Cependant, des parties d’une même base de données peuvent être stockées dans différents groupes de stockage. Si les volumes d’un groupe de stockage sont de types différents ou si un volume n’est pas monté ou n’est pas valide, une erreur se produit lorsque vous essayez de créer un espace table ou un index. Essayez d’affecter les objets fréquemment consultés (index, par exemple) aux périphériques rapides et les tables rarement utilisées aux périphériques plus lents ; ce choix de groupes de stockage améliore les performances.

Une fois que vous avez défini un groupe de stockage, DB2 stocke les informations le concernant dans le catalogue DB2. (Ce catalogue n’est pas le même que le catalogue de l’utilitaire de catalogue intégré qui décrit les ensembles de données DB2 VSAM). La table de catalogue SYSIBM.SYSSTOGROUP a une ligne pour chaque groupe de stockage et SYSIBM.SYSVOLUMES a une ligne pour chaque volume.

Lors de l’installation, le groupe de stockage par défaut du système est défini. Ce groupe de stockage est nommé SYSDEFLT. Si vous ne gérez pas explicitement votre stockage, DB2 utilise le groupe de stockage par défaut pour allouer de l’espace.

Hiérarchie des objets DB2 

La figure suivante représente la hiérarchie des objets DB2 :

hiérarchie des objets DB2
hiérarchie des objets DB2

Nous verrons chaque objet DB2 de cette figure dans le chapitre “DB2 – Détails de la base de données“.