L’instruction ALTER VIEW régénère une vue existante en modifiant une colonne de type référence pour ajouter une portée. L’instruction ALTER VIEW active ou désactive également une vue à utiliser dans l’optimisation des requêtes.
Voici la syntaxe de modification de la vue :
ALTER VIEW nom_vue
ALTER colonne nom-colonne ADD SCOPE nom-table
[ENABLE/DISABLE QUERY OPTIMIZATION]
Vous utilisez la commande ALTER VIEW pour régénérer une vue non valide après avoir modifié l’une des tables de base afin de vous assurer que la vue reste valide.
L’instruction DROP supprime un objet du serveur actuel.
L’instruction DROP DATABASE est utilisée pour supprimer un groupe de stockage existant, une base de données, un tablespace, une table, un index, une vue, un alias, un synonyme.
Database:
Chaque fois qu’une base de données est supprimée, tous ses tablespaces, tables, espaces d’index et index sont également supprimés.
Tablespace :
Chaque fois qu’un tablespace est supprimé, toutes les tables du tablespace sont également supprimées.
Table:
Chaque fois qu’une table est supprimée, toutes les contraintes référentielles dans lesquelles la table est parente ou dépendante, ainsi que tous les synonymes, vues et index définis sur la table sont également supprimés. Si l’espace table de la table a été implicitement créé, il est également supprimé. L’alias n’est pas supprimé.
DROP STOGROUP nom-stogroup
DATABASE nom-database
TABLESPACE nom-table-space
TABLE nom-table
INDEX nom-index
VIEW nom-view
ALIAS nom-alias
SYNONYM nom-synonym
Exemple 1:
L’instruction DROP DATABASE est utilisée pour supprimer une base de données SQL existante.
Soyez prudent lorsque vous supprimez une base de données. La suppression d’une base de données entraînera la perte de toutes les informations stockées dans la base de données.
L’instruction SQL suivante supprime la base de données existante “IBM_DB” :
DROP DATABASE IBM_DB;
Une fois qu’une base de données est supprimée, vous pouvez la vérifier dans la liste des bases de données avec la commande SQL suivante : SHOW DATABASES.
Exemple 2 :
Voyons comment déposer une table dans une base de données.
L’instruction SQL DROP TABLE suivante pour supprimer la table Table_Etudiants :
DROP TABLE Table_Etudiants
La plupart du temps, les développeurs n’ont pas accès pour exécuter les instructions SQL DROP. Seul l’administrateur a le privilège d’utiliser l’instruction SQL DROP.
SQL utilise DISTINCT pour supprimer les lignes en double du jeu de résultats.
Syntaxe:
SELECT DISTINCT colonne1, colonne2, ...
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-Produit
Nom-Produit
Catégorie
Prix
Stock
Valeu-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
Roue
vélos
1 200
7006
STYLO
7.45
10
74,50
7007
Clavier
Accessoires
40.00
33
1 118,00
7008
RAM
Composants
23.50
16
376,00
Exemple:
Pour obtenir le Nom-Produit unique, vous devez utiliser la requête suivante :
SELECT DISTINCT Nom-Produit FROM Produit ;
L’instruction SQL ci-dessus répertorie le nombre de Nom-Produit différents (distincts) dans la table “Produit”.
Résultat:
ID-Produit
Nom-Produit
Catégorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
Roue
vélos
1 200
7006
STYLO
7.45
10
74,50
Remarque : Si vous avez plusieurs noms de colonne répertoriés après le mot clé DISTINCT, le mot clé DISTINCT est appliqué à toutes les colonnes. Cela signifie que la requête utilisera la combinaison de valeurs dans toutes les colonnes pour évaluer la distinction.
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-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
Roue
vélos
1 200
7006
STYLO
7.45
10
74,50
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,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-Produit
Nom-Produit
7001
Souris
7007
Lecteur CD
7008
Micro
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-Produit
Nom-Produit
Prix
7001
Souris
75,00
7003
Clavier
36.00
7007
Lecteur CD
75,00
7008
Micro
75,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érateur
La 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
BETWEEN
Entre deux valeurs spécifiées, y compris les valeurs de début et de fin spécifiées
IS NULL
Est 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-Produit
Nom-Produit
7006
STYLO
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-Produit
Nom-Produit
Prix
7002
Disque dur
65,00
7004
RAM
23.50
7005
Roue
1 200
7006
STYLO
7.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-Produit
Nom-Produit
7004
RAM
7006
STYLO
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;
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.
L’opérateur AND affiche un enregistrement si toutes les conditions séparées par AND sont TRUE (VRAIE).
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-Produit
Nom -Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
Roue
vélos
1 200
7006
Stylo
7.45
10
74,50
7007
Tapis de souris
Accessoires
5,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-Produit
Nom du produit
Prix
7001
Souris
75,00
7003
Clavier
36.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-Produit
Nom-Produit
Prix
7001
Souris
75,00
7003
Clavier
36.00
7007
Tapis de souris
5,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';
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’
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_NO
DEPT_NOM
DEPT_MGR_NO
DEPT_ADMR
A31
ARCHITECTURE
00123
A01
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.
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-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
dix
74,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;
Voici la liste des fonctions de manipulation de texte couramment utilisées :
Fonction
La description
Exemple
LEFT()
Renvoie les caractères à partir de la gauche de la chaîne
LEFT(cust_firstname, 4)
LENGTH()
Renvoie la longueur réelle d’une chaîne
LENGTH(cust_firstname)
LOWER()
Convertit la chaîne en minuscule
LOWER(cust_firstname)
LTRIM()
Coupe l’espace blanc à gauche de la chaîne
LTRIM(cust_firstname)
RIGHT()
Renvoie les caractères à partir de la droite de la chaîne
RIGHT(cust_firstname)
RTRIM()
Coupe l’espace blanc à droite de la chaîne
RTRIM(cust_firstname)
UPPER()
Convertit la chaîne en majuscule
UPPER(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 argument
HEX(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.