Vous êtes sur la page 1sur 5

Système d’information

Les fonctions mono-lignes :

1. Manipulation de caractères :

Fonctions Résultat
LOWER (char) Conversion d’une chaîne de caractères vers
la miniscule
UPPER (char) Conversion d’une chaîne de caractères vers
la majuscule
CONCAT (char, char) Concaténation de deux chaînes de caractères
LENGTH (char) Longueur d’une chaîne de caractères

Exp1 :

SELECT UPPER(nom) FROM Etudiant ;

Fonctions numériques:

Fonctions Résultat
ROUND (number, Precision) Arrondit un nombre à la précision spécifiée
TRUNC (number, Precision) Tronque un nombre à la précision spécifiée
MOD (int, int) Reste de division entière

Exp 1 :

ROUND (2.698,2) retourne la valeur 2.70


TRUNC (2.698,2) retourne la valeur 2.69

Exp2 :
SELECT matricule, cod_mod, ROUND (note,2) FROM etud_mod ;

Opérations sur les dates:

Fonctions Résultats
Date + nombre de jours Retourne la date après ajout du nombre de
jours spécifié
Date - nombre de jours Retourne la date après suppression du
nombre de jours spécifié
Date - Date Retourne le nombre de jours entre deux dates

Exp :
’12-28-2006’ + 4 retourne 01-01-2007
’12-28-2006’ – ‘01-01-2007’ retourne -4

14
Système d’information

Les fonctions de synthèse :

Ces fonctions effectuent des calculs sur les groupes de lignes.

Fonctions Résultats
AVG (colonne) Retourne la moyenne des valeurs de la
colonne spécifiée
SUM (colonne) Retourne la somme des valeurs de la colonne
spécifiée
COUNT (colonne) Retourne le nombre d’occurrences des
valeurs de la colonne spécifiée dans la table.
MIN (colonne) Retourne la valeur minimale de la colonne
spécifiée dans la table
MAX (colonne) Retourne la valeur maximale de la colonne
spécifiée dans la table

Exp :

Pour calculer la moyenne des notes de l’étudiant de matricule 1200352.

SELECT AVG(note) FROM etud_mod WHERE matricule = ‘1200352’;

Pour obtenir les étudiants dont la note au module BD est maximale:

SELECT nom FROM etudiant , Etud_mod


WHERE( etudiant.matricule = Etud_mod.matricule ) and (cod_mod=’BD’)
and (note= SELECT MAX (note) FROM Etud_mod WHERE cod_mod=’BD’);

Pour calculer le nombre d’étudiants ayant une note >= 10 dans le module BD:

SELECT COUNT (*) FROM etud_mod WHERE (cod_mod=’BD’) and (note>=10);

Création de groupe de données

SQL permet de partitionner un ensemble de données en groupes, sur la base d’un critère de
groupage.

Exemple1 :

On s’intéresse aux données de la table Etud_Mod pour analyser les résultats de chaque
étudiant, dans ce cas les lignes concernant un même étudiant doivent être représentées de
façon contiguë.

L’instruction en SQL :

SELECT matricule, cod_mod, note FROM Etud_mod


GROUP BY matricule, cod_mod, note;

15
Système d’information

Matricule Cod_mod Note


12005 BD 14
12005 Algo 10
12005 OL 9
12004 BD 3
12004 Algo 10

Remarque1:

IL n’est pas possible, de sélectionner un attribut qui n’appartient pas aux critères de
groupage, ce qui nous oblige à rajouter cod_mod et note dans ces critères. L’ordre est
important.

Exemple2 :

SELECT Cod_mod, matricule, note FROM Etud_mod


GROUP BY Cod_mod, matricule, note;

Cod_mod Matricule Note


BD 12005 14
BD 12004 3
Algo 12005 10
Algo 12004 10
OL 12005 9

Exemple3 :

On veut analyser les résultats de chaque module, donc on s’intéresse à la moyenne du module.

SELECT Cod_mod, AVG (note) FROM Etud_mod


GROUP BY Cod_mod;

Cod_mod AVG (note)


BD 8.5
Algo 7.5
OL 9

Remarque2:
Une fonction de synthèse ne peut être utilisée comme facteur de groupage.

16
Système d’information

Conditions sur les groupes :

La clause HAVING permet d’introduire des conditions sur les groupes.


Cette clause est associée au GROUP BY, et ne peut être utilisée indépendamment de celui-ci.

Exemple :

SELECT Cod_mod, AVG (note) FROM Etud_mod


GROUP BY Cod_mod
HAVING AVG (note)>=10;

On ne veut que les notes >=10.

Cod_mod AVG (note)


Algo 10

Utilisation des vues dans SQL :


Le mécanisme des vue permet de définir des tables virtuelles (n’ont pas d’existence
physique).

Exemple 1 :

On s’intéresse aux notes des étudiants dans les modules à coefficient 6.

DEFINE VIEW Etud_mod6 (matricule, cod_mod, note) AS SELECT matricule, cod_mod,


note FROM Etud_mod, Module WHERE (Etud_mod.cod_mod=Module.Cod_mod)
and (coef =6);

Etud_mod6 est le nom de la vue qui peut être considérée par la suite comme une table, et
interrogé dans des requêtes. Par exemple, on peut obtenir les matricules des étudiants ayant
obtenu une note >= 10 dans ces modules. La requête est :

SELECT Matricule FROM Etud_mod6 WHERE note>=10 ;

Exemple 2 :

On veut connaître les modules qui ont un nombre d’étudiants admis supérieur à la moyenne
du nombre d’étudiants admis.

1. Calculer le nombre d’étudiants admis dans chaque module ;


2. la moyenne de ces nombres
3. Sélectionner les modules dépassant cette moyenne.

17
Système d’information

En SQL :

DEFINE VIEW Mod_admis (cod_mod, Nb_admis)


AS SELECT cod_mod, count (matricule)
FROM Etud_mod WHERE note>=10 GROUP BY Cod_mod;

On peut alors interroger cette vue comme suit:

SELECT cod_mod
FROM Mod_admis
WHERE Nb_admis > (SELECT AVG (Nb_admis) FROM Mod_admis);

Tri le résultat d’une requête:


Le résultat d’une requête peut être organisé selon un ordre de tri (Alphabétique ou numérique)
ascendant ou descendant avec la clause ORDER BY à la fin de la requête.

Exemple :

On veut la liste des étudiants ayant réussi au module BD, affiché dans l’ordre alphabétique
des noms.

SELECT matricule, nom, prenom FROM etud_mod, etudiant WHERE


(etudiant.matricule=etud_mod.matricule) and (cod_mod=’BD’) and (moy>=10)
ORDER by nom, prenom ;

Si on veut que ça soit par ordre décroissant on rajoute DESC:

SELECT matricule, nom, prenom FROM etud_mod, etudiant WHERE


(etudiant.matricule=etud_mod.matricule) and (cod_mod=’BD’) and (moy>=10)
ORDER by nom DESC, prenom DESC;

18

Vous aimerez peut-être aussi