Vous êtes sur la page 1sur 8

Informatique 3 : Introduction aux bases de données

Chapitre 6

Les langages de Manipulation


De Données(LMD)

I. Introduction
Un langage de manipulation de données est un ensemble de commandes permettant de
gérer les données d'une base de données. Il permet d'interroger la base et de la modifier (insérer,
supprimer ou modifier des données). Il existe deux classes principales de langages de manipulation
de données:
- Les langages procéduraux ;
- Les langages non-procéduraux ;

I .1. Les langages procéduraux


Dans ces langages, appelés aussi langages navigationnels (modèle hiérarchique et modèle en
réseaux), l'expression d'une requête nécessite la description des chemins d'accès à l'aide de
primitives utilisées depuis des programmes écrits dans un langage hôte (COBOL, PL/1,...).
Ces langages sont basés sur le calcul relationnel.

I .2. Les langages non-procéduraux


Dans ces langages, appelés aussi non-navigationnels (modèle relationnel), on peut répondre
à n'importe quelle requête, en combinant des opérations fondamentales, sans spécifier comment les
accéder.
Ces langages sont basés sur l'algèbre relationnelle.

Il existe plusieurs langages de manipulation de données dont on peut citer:


- SQL (ou SEQUEL)
- QBE
- QUEL
- DBASE
-...

II . La manipulation des données des bases de données relationnelles


Ils existent deux principaux types de langages de manipulation des données des bases de
données relationnelles: ceux qui utilisent des langages algébriques et ceux qui utilisent des langages
prédicatifs.
- Les langages algébriques permettent d'exprimer les opérations de manipulation de données grâce
à des opérateurs dont les opérandes sont les relations.
- Les langages prédicatifs permettent d'exprimer les opérations de manipulation de données grâce à
des prédicats qui définissent les sélections des tuples désirés.
Cependant, il a été démontré que ces deux types de langages sont équivalents.

III . Langages utilisant un langage algébrique


III .1 Le langage SQL
Le langage SQL (Structural Query Language) est un langage de manipulation de données basé
sur l'algèbre relationnelle. Une requête est une expression de séquences d'opérations relationnelles.

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 1


Informatique 3 : Introduction aux bases de données

Soit le schéma conceptuel suivant d'une base de données relationnelle:


ETUDIANT(NUMINSC,NOM,PRENOM,DAT_NAIS,ADRESSE,NAT,DEPT)
MODULE(COD_MOD,INTITULE,COEFF,V_H_T)
INSCRIT(NUMINSC,COD_MOD,DAT_INSC)
EXAMEN(NUMINSC,COD_MOD,MOY)

III.1.1. Création de la base


La création des différentes relations de la base de données s’effectue en utilisant la
commande CREATE TABLE.
Syntaxe :
CREATE TABLE nom_relation (attribut1 type_attribut1, attribut2 type_attribut2,…)

Exemple :
CREATE TABLE ETUDIANT
(NUMINSC INTEGER VAR,
NOM CHAR(15) VAR,
PRENOM CHAR(20) VAR,
DAT_NAIS CHAR(8),
ADRESSE CHAR(45) VAR,
NAT CHAR(10),
DEPT CHAR(3)) ;

CREATE TABLE MODULE


(COD_MOD CHAR(6),
INTITULE CHAR(10) VAR,
COEF INTEGER,
V_H_T INTEGER) ;

CREATE TABLE INSCRIT


(COD_MOD CHAR(6),
NUMINSC INTEGER,
DAT_INSCRIT CHAR(8)) ;

CREATE TABLE EXAMEN


(COD_MOD CHAR(6),
NUMINSC INTEGER,
MOY REAL) ;

III .1.1 Expression de la projection


La projection est la sélection de quelques attributs spécifiés d'une relation avec élimination
des tuples redondants.
Syntaxe 1:
SELECT liste_d'attributs
FROM nom_de_relation.

Exemple: « R1 : Donner la liste (nom et prénom) de tous les étudiants »


SELECT NOM,PRENOM
FROM ETUDIANT.

Syntaxe 2:

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 2


Informatique 3 : Introduction aux bases de données

Pour éliminer les tuples redondants, il faudra ajouter l'option UNIQUE

SELECT UNIQUE liste_d'attributs


FROM nom_de_relation.

Exemple:
SELECT UNIQUE NOM
FROM ETUDIANT.

Exemple 2: « R2 : Quelles sont les différentes nationalités des étudiants »


SELECT UNIQUE NAT
FROM ETUDIANT.

III .1.2 L'expression de sélection


Une sélection est composée d'une projection suivi d’une restriction.
Syntaxe:
SELECT liste_d'attributs
FROM nom_de_relation
WHERE qualification.

Exemple : « R3 : Donner la liste des étudiants du département informatique »


SELECT NOM,PRENOM
FROM ETUDIANT
WHERE DEPT = 'INFORMATIQUE'.

Pour avoir une projection sur tous les attributs, on remplace la liste des attributs par le
caractère "*".

Syntaxe :
SELECT *
FROM nom_de_relation
WHERE qualification.

Exemple: « R4 :Donner toutes les informations sur l’étudiant dont le numéro d’inscription est
52841 »
SELECT *
FROM ETUDIANT
WHERE NUMINSC = 52841.

La qualification peut être une qualification composée composée de qualifications atomiques


reliés par des opérateurs logiques AND, OR , NOT et éventuellement, de parenthèses pour indiquer
l'ordre d'évaluation.

Exemple: « R5 : Donner la liste des étudiants étrangers du département informatique»


SELECT NOM,PRENOM
FROM ETUDIANT
WHERE NAT<> = 'ALGERIENNE'
AND DEPT= 'INFORMATIQUE'.

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 3


Informatique 3 : Introduction aux bases de données

Il est également possible de trier les résultats (en utilisant la commande ORDER BY ) suivant
l'ordre croissant (en utilisant le mot clé ASC) ou décroissant (en utilisant le mot clé DESC) d'un ou
plusieurs attributs.

Exemple: « R6 : Donner la liste des étudiants par ordre alphabétique »


SELECT NOM,PRENOM
FROM ETUDIANT
ORDERBY ASC NOM.

III .1.3 Expression de jointure


Un cas particulier de jointure est le produit cartésien qui est une jointure sans qualification.

Syntaxe 1: le produit cartésien


SELECT *
FROM liste_de_relations

Exemple:
Le produit cartésien des deux relations

Syntaxe 2: La jointure
SELECT liste_d'attributs
FROM liste_de_relations
WHERE qualification.

Exemple: « R7 : Donner la liste des étudiants admis au module TEC618»


SELECT NOM,PRENOM
FROM ETUDIANT,EXAMEN
WHERE NUMINSC.ETUDIANT = NUMISNC.EXAMEN
AND CODMOD=’TEC618’
AND MOY >= 10.

La jointure peut être exprimer en utilisant l’opérateur d’appartenance IN


Exemple: pour la même requête, on obtient :

SELECT NOM,PRENOM
FROM ETUDIANT
WHERE NUMINSC IN (SELECT NUMINSC
FROM EXAMEN
WHERE CODMOD=’TEC618’
AND MOY >= 10.)

III .1.4. Expression de l’union


L'union de deux relations R et S de même schéma est une relation de même schéma dont les
tuples appartiennent à R et à S

Syntaxe:
SELECT liste_d'attributs
FROM nom_de_relation
WHERE qualification
UNION

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 4


Informatique 3 : Introduction aux bases de données

SELECT liste_d'attributs
FROM nom_de_relation
WHERE qualification

Exemple:

III .1.5 Les opérations de Mise-à-jour


Le langage SQL offre trois opérateurs de mise-à-jour:
- INSERT pour insérer
- DELETE pour supprimer
- UPDATE pour modifier

III .1.5.1 L’opération d’insertion d’un tuple


Syntaxe:
INSERT INTO nom_relation [attribut[,attribut]..]
VALUES (constante [,constante]...]

Exemple:R8 : Ajouter dans la base l’étudiant BENTAYEB riad dont le numéro d’inscription est
43172, et qui est né le 14/02/1971, habitant à annaba de nationalité algérienne et dans l’institut de
chimie

INSERT INTO ETUDIANT


VALUES(43172,BENTAYEB,RIAD,14/02/1971,ANNABA,ALG,CHIMIE).

III .1.5.2 L’opération de modification


Syntaxe:
UPDATE nom_relation SET attribut = expression {,att=expression}[WHERE qualification].

Exemple: « R9 : Modifier l’adresse de l’étudiant Bentayeb à Guelma »


UPDATE ETUDIANT
SET ADRES = 'GUELMA'
WHERE NOM ='BENTAYEB'.

III .1.5.3 L’opération de suppression


Syntaxe:
DELETE
FROM nom_relation
[WHERE qualification].

Exemple: « R10 : Supprimer de la base l’étudiant dont le numéro d’inscription est 15632 »
DELETE
FROM ETUDIANT
WHERE NUMISNC = 15632.

III .1.6 Les opérations de calcul


Le langage SQL offre cinq fonctions de calcul:
- COUNT pour compter le nombre de valeurs
- SUM pour calculer la somme des valeurs
- AVG pour calculer la moyenne des valeurs
- MAX pour déterminer la valeur maximum

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 5


Informatique 3 : Introduction aux bases de données

- MIN pour déterminer la valeur minimum

III .1.6.1 Calcul du nombre total


Syntaxe:
SELECT COUNT (*)
FROM nom_relation.
[WHERE qualification].

SELECT COUNT (DISTINCT attribut)


FROM nom_relation
[WHERE qualification].

Exemple : « R11 : Donner le nombre d’étudiants inscrits au module TEC620

SELECT COUNT (*)


FROM INSCRIT.
WHERE CODMOD = ‘TEC618’

Exemple : « R12 : Donner le nombre des différentes nationalités »


SELECT COUNT (DISTINCT NATION)
FROM ETUDIANT
WHERE NATION <> 'ALG'.

Exemple : « R13 : Donner le nombre d’étudiants par nationalité


SELECT NATION ,COUNT (NATION)
FROM ETUDIANT
GROUP BY NATION.

III .1.6.2 Calcul de la somme


Syntaxe:
SELECT SUM (attribut)
FROM nom_relation
[WHERE qualification].

Exemple: « R14 : Donner le total des notes de l’étudiant dont le numéro d’inscription est 14263 »
SELECT SUM MOY
FROM EXAMEN
WHERE NUMINSC = 14263

III .1.6.3 Calcul de la moyenne


Syntaxe:
SELECT AVG (attribut)
FROM nom_relation
[WHERE qualification].

Exemple: « R15 : Quel est la moyenne générale de l’étudiant dont le numéro d’inscription est
14263 »
SELECT AVG (NOTE)
FROM EXAMEN
WHERE NUMINSC = 14263.

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 6


Informatique 3 : Introduction aux bases de données

III .1.6.4 Détermination de la valeur maximale


Syntaxe :
SELECT MAX (attribut)
FROM nom_relation
[WHERE qualification].

Exemple: « R16 : Donner le numéro d’inscription et la moyenne de l’étudiant ayant obtenu la


meilleure
moyenne au TEC618 ?

SELECT NUMINSC, MAX (MOY)


FROM EXAMEN
WHERE CODMOD=’TEC618’

Exemple : « R17 : Quelle est la meilleure moyenne obtenu par l’étudiant dont le numéro
d’inscription est
14263 et dans quel module ? »

SELECT CODMOD, MAX (MOY)


FROM EXAMEN
WHERE NUMINSC = 14263

III .1.6.5 Détermination de la valeur minimum

Syntaxe:
SELECT MIN (attribut)
FROM nom_relation
[WHERE qualification]

Exemple : « R18 : Quelle est la plus mauvaise moyenne obtenu par l’étudiant dont le n°
d’inscription est
14263 et dans quel module ? »

SELECT CODMOD, MIN (NOTE)


FROM EXAMEN
WHERE NUMINSC = 14263
____________________________________________________________________________________
_
III . Application de l’algèbre relationnelle

CAS 1: Gestion de la scolarité

Soit la base de données relationnelle définie par le schéma suivant:

ETUDIANT(NUMINSC,NOM,PRENOM,DATNAIS,ADRESSE,NAT,DEPT)
MODULE(CODMOD,LIBELLE,SEMEST,COEF,V_H_T)
INSCRIT(NUMINSC,CODMOD,DATINSC)
EXAMEN(NUMINSC,CODMOD,MOY)

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 7


Informatique 3 : Introduction aux bases de données

Exprimer les requêtes suivantes dans le Langage Algébrique( Algèbre Relationnelle):

R1- "Donner la liste ( noms et prénoms) de tous les étudiants".

ETUDIANT[NOM, PRENOM]

R2- "Donner la liste ( noms et prénoms) des étudiants du département informatique"

(ETUDIANT WHERE DEPT = 'INFORMATIQUE') [NOM, PRENOM]

R3- "Donner la liste ainsi que les nationalités des étudiants étrangers du département
d’électronique"

(ETUDIANT WHERE INSTITUT = 'ELECTRONIQUE'


AND NAT <> 'ALGERIENNE') [NOM, PRENOM, NAT]

R4- "Donner la liste des étudiants inscrits au module TEC618"

(INSCRIT JOIN ETUDIANT WHERE NUMINSC.INSCRIT = NUMINSC.ETUDIANT


AND CODMOD = TEC618) [NOM, PRENOM]

R5- Donner la liste des étudiants admis au module de Base de Données


(ETUDIANT JOIN EXAMEN JOIN MODULE
WHERE NUMINSC.ETUDIANT=NUMINSC.EXAMEN
AND CODMOD.EXAMEN = CODMOD.MODULE
AND INTITULE = ‘BASE DE DONNEES’
AND MOY >=10)[NOM,PRENOM,MOY]

Chapitre 9: Les Langages de Manipulation de Données(LMD) EPSE-Annaba 2011. Dr T.BOUHADADA 8

Vous aimerez peut-être aussi