preloader

DML : (Data Manipulation Language)

Le DML inclut les commandes SQL utilisées pour récupérer et manipuler les données d’une base de données. Cette catégorie inclut la plupart des commandes SQL, par exemple :

·       SELECT : sélection et récupération de données dans une structure de données

·       INSERT : insertion de données dans une table ;

·       DELETE : suppression de données d’une table ;

·       UPDATE : mise à jour de données d’une table ;

I.1.1        La commande SELECT

L’utilisation la plus courante de SQL consiste à lire des données issues de la base de données. Cela s’effectue grâce à la commande SELECT, qui retourne des enregistrements dans un tableau de résultat. Cette commande peut sélectionner une ou plusieurs colonnes d’une table.

La structure générale de la commande SQL est mentionnée dans la figure suivante (en respectant l’ordre d’apparition) :

·       SELECT spécifie les colonnes qui doivent apparaitre dans les résultats

·       La clause FROM spécifie la table ou les tables à utiliser

·       WHERE filtre les lignes selon une condition donnée

·       GROUP BY forme des groupes de lignes de même valeur de colonne

·       HAVING filtre les groupes sujets à une certaine condition

·       ORDER BY spécifie l’ordre d’apparition des données dans le résultat

Exemple : SELECT nom, ville FROM employes

Le résultat de la requête est la suivante :

·        DISTINCT

L’utilisation de la commande SELECT en SQL permet de lire toutes les données d’une ou plusieurs colonnes. Cette commande peut potentiellement afficher des lignes en doubles. Pour éviter des redondances dans les résultats il faut simplement ajouter DISTINCT après le mot SELECT.

L’utilisation basique de cette commande consiste alors à effectuer la requête suivante:

SELECT DISTINCT ma_colonne

FROM nom_du_tableau ;

Cette requête sélectionne le champ “ma_colonne” de la table “nom_du_tableau” en évitant de retourner des doublons.

·        WHERE

La commande SELECT WHERE dans une requête SQL permet d’extraire les lignes d’une base de données qui respectent une condition. Cela permet d’obtenir uniquement les informations désirées. La façon la plus simple de l’utiliser est la suivante:

SELECT nom_colonnes FROM nom_table WHERE condition ;

Les opérateurs suivants peuvent être utilisé pour former des conditions dans la clause WHERE :

Exemple :

·        Pour faire une comparaison

SELECT nom, ville FROM employes WHERE  salaire  > 10000 ;

·        Pour exprimer un intervalle

SELECT nom, ville FROM employes WHERE  salaire BETWEEN 5000 AND 9000 ;

·        Pour exprimer une appartenance à un ensemble

SELECT nom, ville FROM employes WHERE  ville IN (‘oujda’,‘casa’) ;

·        Pour exprimer une correspondance à un masque

SELECT nom, ville FROM employes WHERE  nom LIKE ’%hafsa%’ ;

·        Pour exprimer une valeur nulle

SELECT nom, ville FROM employes WHERE  grade IS NULL;

·        GROUP BY

La clause GROUP BY est utilisée en SQL pour grouper plusieurs résultats par colonne.  En d’autre terme, GROUP BY permet d’organiser les lignes en groupes.

Exemple :

SELECT nom , grade FROM employes GROUP BY grade , nom;

Le résultat de la requête est une table contenant le nom et le grade des employés groupés par grade puis par nom comme dans la figure suivante.

·        HAVING

La condition HAVING en SQL est presque similaire à WHERE à la seule différence que HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou MAX().

Syntaxe

L’utilisation de HAVING s’utilise de la manière suivante :

SELECT colonne1, FONCTION(colonne2)

FROM nom_table

WHERE condition

GROUP BY colonne1

HAVING fonction(colonne2) OPERATEUR valeur ;

Cela permet donc de sélectionner les colonnes de la table “nom_table” en GROUPANT les lignes qui ont des valeurs identiques sur la colonne “colonne1” et que la condition de HAVING soit respectée.

Important : HAVING est très souvent utilisé en même temps que GROUP BY bien que ce ne soit pas obligatoire.

Exemple

Pour utiliser un exemple concret, nous allons récupérer la ville , le salaire et le nombre des salaires dans les villes rabat, oujda et fes en groupant les lignes par ville puis par salaire. La condition ici est que un montant de salaire doit dépasser 5000.

SELECT ville,  salaire , COUNT(salaire) AS total FROM employés

WHERE ville IN (‘rabat’, ‘oujda’, ‘fes’)

GROUP BY ville, salaire

HAVING salaire>5000 ;

Le résultat de la requête est le suivant :

·        ORDER BY

La commande ORDER BY permet de trier les lignes dans un résultat d’une requête SQL. Il est possible de trier les données sur une ou plusieurs colonnes, par ordre ascendant ou descendant.

Une requête où l’on souhaite filtrer l’ordre des résultats utilise la commande ORDER BY de la sorte:

SELECT colonne1, colonne2

FROM table

ORDER BY colonne1 ;

La requête suivante affichera les nom des employés classé par ordre alphabétique

SELECT  nom  FROM employes ORDER BY nom ASC;

Par défaut les résultats sont classés par ordre ascendant, toutefois il est possible d’inverser l’ordre en utilisant le suffixe DESC après le nom de la colonne. Par ailleurs, il est possible de trier sur plusieurs colonnes en les séparant par une virgule. Une requête plus élaborée ressemblerait à cela :

SELECT colonne1, colonne2, colonne3

FROM table

ORDER BY colonne1 DESC, colonne2 ASC ;

A noter : il n’est pas obligé d’utiliser le suffixe “ASC” sachant que les résultats sont toujours classés par ordre ascendant par défaut. Toutefois, c’est plus pratique pour mieux s’y retrouver, surtout si on a oublié l’ordre par défaut.

I.1.2        La commande INSERT

L’insertion de données dans une table s’effectue à l’aide de la commande INSERT INTO. Cette commande permet au choix d’inclure une seule ligne à la base existante ou plusieurs lignes d’un coup.

Insertion d’une ligne à la fois

Pour insérer des données dans une base, il y a 2 syntaxes principales :

·        Insérer une ligne en indiquant les informations pour chaque colonne existante (en respectant l’ordre)

·        Insérer une ligne en spécifiant les colonnes que vous souhaitez compléter. Il est possible d’insérer une ligne renseignant seulement une partie des colonnes

Insérer une ligne en spécifiant toutes les colonnes

La syntaxe pour remplir une ligne avec cette méthode est la suivante :

INSERT INTO table VALUES ('valeur 1', 'valeur 2', ...) ;

Cette syntaxe possède les avantages et inconvénients suivants :

§  Obliger de remplir toutes les données, tout en respectant l’ordre des colonnes

§  Il n’y a pas le nom de colonne, donc les fautes de frappe sont limitées. Par ailleurs, les colonnes peuvent être renommées sans avoir à changer la requête

§  L’ordre des colonnes doit rester identique sinon certaines valeurs prennent le risque d’être complétée dans la mauvaise colonne

Insérer une ligne en spécifiant seulement les colonnes souhaitées

Cette deuxième solution est très similaire, excepté qu’il faut indiquer le nom des colonnes avant “VALUES”. La syntaxe est la suivante :

INSERT INTO table (nom_colonne_1, nom_colonne_2, ...
 VALUES ('valeur 1', 'valeur 2', ...) ;

A noter : il est possible de ne pas renseigner toutes les colonnes. De plus, l’ordre des colonnes n’est pas important.

I.1.3        La commande UPDATE

La commande UPDATE permet d’effectuer des modifications sur des lignes existantes. Très souvent cette commande est utilisée avec WHERE pour spécifier sur quelles lignes doivent porter la ou les modifications.

Syntaxe

La syntaxe basique d’une requête utilisant UPDATE est la suivante :

UPDATE table
SET nom_colonne_1 = 'nouvelle valeur'
WHERE CONDITION;

 

Cette syntaxe permet d’attribuer une nouvelle valeur à la colonne nom_colonne_1 pour les lignes qui respectent la condition stipulé avec WHERE. Il est aussi possible d’attribuer la même valeur à la colonne nom_colonne_1 pour toutes les lignes d’une table si la condition WHERE n’était pas utilisée.

A noter, pour spécifier en une seule fois plusieurs modification, il faut séparer les attributions de valeur par des virgules. Ainsi la syntaxe deviendrait la suivante :

UPDATE table
SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2'
WHERE CONDITION ;

 

I.1.4        La commande DELETE

La commande DELETE en SQL permet de supprimer des lignes dans une table. En utilisant cette commande associé à WHERE il est possible de sélectionner les lignes concernées qui seront supprimées. Avant d’essayer de supprimer des lignes, il est recommandé d’effectuer une sauvegarde de la base de données, ou tout du moins de la table concernée par la suppression. Ainsi, s’il y a une mauvaise manipulation il est toujours possible de restaurer les données.

Syntaxe

La syntaxe pour supprimer des lignes est la suivante :

DELETE FROM `table`
WHERE condition ;

 

Attention : s’il n’y a pas de condition WHERE alors toutes les lignes seront supprimées et la table sera alors vide.