Vous êtes sur la page 1sur 68

Les Bases de données

EPI 2022/2023
Objectifs Du Cours

 Ce cours permettra aux étudiants de concevoir et d’implanter une base de d
onnées en passant par les différents niveaux : 
o conceptuel, 
o logique 
o et physique. 
 
 Il aura l’occasion de bien assimiler l’apport des SGBD pour gérer les donné
es 

2
Plan du cours

 Chapitre 1 : Introduction et Principaux Concepts Des Bd 

 Chapitre 2 : Un Modèle Conceptuel : Le Modèle EA

Chapitre 3 : Le Modèle Relationnel Des BD

Chapitre4 : La Normalisation

Chapitre 5: L’algèbre Relationnelle 

Chapitre 6 : Le langage SQL

3
Chapitre 6 : Le Langage SQL

4
Chapitre3: Le Langage SQL
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV. Langage de contrôle de données LCD
V. Langage d’Interrogation de données LID

5
I. Le langage SQL
 SQL signifie « Structured Query Language » ou Langage d ’interrogation structuré.
 SQL est un langage complet de gestion de bases de données relationnelles. Il a été conçu par
IBM dans les années 70 et est devenu le langage standard des SGBDR.

 C ’est à la fois : un langage d ’interrogation de la base


 un langage de manipulation des données
 un langage de définition des données
 un langage de contrôle de l ’accès aux données.

 SQL est utilisé par les principaux SGBDR : DB2, Oracle, Informix, SQLServer, ACCESS.

 Chaque SGBD a cependant sa propre variante du langage.

6
Architecture du SGBDR

7
II. Langage de Définition des Données

I. Langage de Définition des Données

II. Les types de données

III. Les contraintes

8
Partie II.1 Langage de Définition des Données
 Le Langage de Définition des Données est la partie de SQL qui permet de décrire

les tables et autres objets manipulés par les SGBD.

 I. La commande CREATE

II. La commande ALTER TABLE

III. La commande DROP TABLE

9
I. La commande CREATE TABLE
L ’ordre CREATE TABLE permet de créer une table en définissant le nom, le type de chacune des
colonnes de la table.

CREATE TABLE table (colonne1 type1, colonne2 type2, …, colonnen typen);

Table est le nom que l ’on donne à la table. Colonnei est le nom d ’une colonne.
Typei est le type des données contenues dans Colonnei

Exemple : CREATE TABLE STAGE (


Num-Stage NUMBER(3) NOT NULL PRIMARY KEY,
Libellé-Stage VARCHAR2(15) NOT NULL,
Nb-jours NUMBER(2),
Type-Stage VARCHAR2(15),
Num-Cat NUMBER);

Les lettres
10 minuscules et majuscules sont équivalentes
I. La commande CREATE TABLE: variante

CREATE TABLE table (colonne1 type1, colonne2 type2, …, colonnen typen)


AS SELECT ...;

Exemple :
CREATE TABLE MINI_STAGE(
Numéro NUMBER(3) PRIMARY KEY,
Nom VARCHAR2(15) NOT NULL)
AS SELECT Num-Stage, Libellé-Stage FROM STAGE;

Il faut évidemment que les définitions des colonnes de la table créée et du résultat
de la sélection soient compatibles en type et en taille.

11
I. La commande CREATE TABLE: variante
On peut également spécifier le mot-clé AS et l ’interrogation directement derrière
le nom de la table.

Dans ce cas, les noms de colonnes de la table créée auront les mêmes noms, types
et tailles que celles de l ’interrogation :

 Exemple :

CREATE TABLE MINI_STAGE


AS SELECT Num-Stage, Libellé-Stage FROM STAGE

12
II. La commande ALTER TABLE
Cette commande permet de modifier la définition d ’une table.
ALTER TABLE table
ADD
MODIFY (colonne1 type1, colonne2 type2, …, colonnen typen)
DROP

ALTER TABLE STAGIAIRE


ADD NomEntr VARCHAR2(20); Ajout d ’un attribut

ALTER TABLE STAGIAIRE


MODIFY NomEntr VARCHAR2(30); Modification dans le type d ’un attribut

ALTER TABLE STAGIAIRE


DROP column NomEntr; Suppression d ’un attribut

13
II. La commande ALTER TABLE

 ALTER TABLE table_name ADD CONSTRAINT constraint_name


UNIQUE (column1, column2, ... column_n);
 ALTER TABLE table_name ADD CONSTRAINT constraint_name
CHECK (column_name condition);
 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
 Alter table table_name modify nom_column not null;

14
III. La commande DROP TABLE

 Cette commande permet de supprimer une table de la base de données.

 Les lignes de la table et la définition elle-même sont détruites.

 L ’espace occupé par la table est libéré.

DROP TABLE table

Exemple :

DROP TABLE STAGIAIRE;

15
Partie II.2 Les types de données
 Les principaux types de données sont les suivants:

I. Types numériques

II. Types chaînes de caractères

III. Types temporels

16
Partie II.2 Les types de données
Type de données Syntaxe Description
Alphanumérique CHAR(n) Chaîne de caractères de longueur fixe n (n<16383)

VARCHAR(n) Chaîne de caractères de n caractères maximum


(n<16383)

Numérique NUMBER(n [,d]) Nombre de n chiffres [optionnellement d après la


virgule]

SMALLINT Entier signé de 16 bits (-32768 à 32767)


INT Entier signé de 32 bits (-2E31 à 2E31-1)
FLOAT Nombre à virgule flottante
Temporel DATE Date sous la forme 16/07/99
TIME Heure sous la forme 12:54:24.85
TIMESTAMP Date et Heure

17
Partie II.3 Les contraintes

I. Les contraintes de domaine

II. Les contraintes d ’intégrité d ’entité

III. Les contraintes d ’intégrité référentielle

IV. Les Assertions

V. Les contraintes particulières

18
I. Les contraintes de domaine
 Il s ’agit de définir l ’ensemble des valeurs que peut prendre un attribut.
 Ces contraintes sont décrites dans la définition d ’un attribut, directement après son type et sa
longueur.
 NOT NULL : on impose que l ’attribut possède une valeur
 DEFAULT : on spécifie une valeur par défaut dont le type doit correspondre au type de l
’attribut
 UNIQUE : interdit qu'une colonne contienne deux valeurs identiques
Exemple :
CREATE TABLE clients
(numCli …
nomCli VARCHAR(25) NOT NULL,
CaCli INTEGER DEFAULT 0,
TypeCli VARCHAR(16) DEFAULT 'Particulier ’
…);
19
I. Les contraintes de domaine
 CHECK(condition)
Exemples : CREATE TABLE clients
(…,
TypeCli VARCHAR(16) DEFAULT 'Particulier'
CHECK (TypeCli IN ('Particulier', 'Administration', 'PME'))
CONSTRAINT Type_Clients, …

Prim_Comp VARCHAR(8) NOT NULL CHECK (Prim_Comp != Fini_Comp)


CONSTRAINT PRIMFINI, …

Liv_LigneCde NUMBER DEFAULT 0 CHECK (Liv_LigneCde <=


Qté_LigneCde) CONSTRAINT LIVQTE, …

20
I. Les contraintes de domaine
 La déclaration d ’un domaine
Exemple : CREATE DOMAIN Qté NUMBER DEFAULT 0
CHECK (Value >= 0),
 Cette clause permet de spécifier que différents attributs du schéma ont le même
ensemble de valeurs et satisfont les mêmes contraintes.
Définition des attributs dont les valeurs appartiennent au domaine Qté :
Stock_Art Qté , Qté_LigneCde Qté
...
 De cette façon, Stock_Art et Qté_LigneCde héritent des propriétés de Qté, valeur
entière par défaut nulle, toujours positive ou nulle
 La définition d ’un domaine peut comporter un nombre quelconque de contraintes
qui peuvent être modifiées par : ALTER DOMAIN

21
II. Les contraintes d ’intégrité d ’entité
 Elles spécifient la clé primaire d ’une table via la clause PRIMARY KEY.

 Une clé primaire doit toujours avoir une valeur déterminée et unique pour la table.

 Quand une clé primaire est constituée de plusieurs attributs (clé segmentée), la clause
PRIMARY KEY est placée après la définition des attributs, séparée par une virgule.

 Exemples : - NumCli NUMBER PRIMARY KEY

- Create TABLE Appartement


(…),
PRIMARY KEY (NumApp, NumImm);

22
Remarques :
 Tous les attributs d ’une clé segmentée doivent être spécifiés NOT NULL

 PRIMARY KEY peut aussi être séparée de la définition des attributs même
s ’il n ’y a qu’ un seul attribut

 Pour une table, il n ’existe qu’ une seule clé primaire

23
III. Les contraintes d ’intégrité référentielle
REFERENCES nom_table_référencée (clé candidate)

Le nom de la clé candidate est facultatif quand c ’est la clé primaire.

Exemples :
CREATE TABLE Commandes
(NumCde NUMBER PRIMARY KEY,
DateCde DATE NOT NULL,
NumCli NUMBER NOT NULL REFERENCES clients,
MagCde NUMBER NOT NULL REFERENCES magasin);

Utilisation de FOREIGN KEY pour spécifier une clé étrangère constituée de plusieurs attributs

24
IV. Les assertions
 Il s ’agit de contraintes non directement rattachées à une table. Elles sont utilisées
pour spécifier une contrainte portant sur plusieurs tables.

CREATE ASSERTION nom_assertion


…..

 Exemple :

CREATE ASSERTION Val_Glob_Stock


CHECK (
(SELECT SUM(Art1_PA * Art1_Stock) FROM Articles1) +
(SELECT SUM(Art2_PA * Art2_Stock) FROM Articles2) <100 000);
25
VI. Les contraintes particulières
Les triggers (déclencheurs) : procédures compilée, cataloguées dans le dictionnaire, déclenchées
automatiquement par des événements liés à des actions sur la base.

CREATE TRIGGER nom_trigger


BEFORE | AFTER
INSERT | DELETE | UPDATE
ON nom_table
FOR EACH ROW
-- Bloc PL/SQL contenant le traitement à effectuer

Les triggers et les procédures mémorisées complètent les contraintes d ’intégrité en permettant des
contrôles et des traitements plus complexes

A voir dans le chapitre PL/SQL!!!


26
Chapitre3: Le Langage SQL _1_
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
 III.1 La commande INSERT
 III. 2La commande UPDATE
 III.3 La commande DELETE
IV. Langage de contrôle de données LCD
V. Langage d’interrogation de données LID

27
La commande INSERT
 INSERT: Ajout de lignes dans une table

INSERT INTO table (col1, …, coln)


VALUES (val1, …, valn);
OU
INSERT INTO table (col1, …, coln)
SELECT …;

La liste des noms de colonnes est optionnelle. Si elle est omise, Oracle prend par défaut l
’ensemble des colonnes de la table dans l ’ordre où elles ont été données lors de la création
de la table.

Si une liste de colonnes est spécifiée, les colonnes ne figurant pas dans la liste auront la
valeur NULL.
28
La commande INSERT: Exemple

INSERT INTO STAGIAIRE (Num-St, Nom-St, Prénom-St, Adr-St)

VALUES (567, ′Tounsi, ′Med ′, ′Tunis′);

INSERT INTO STAGIAIRE VALUES (567, ′Tounsi, ′Med ′, ′Tunis′);

INSERT INTO TUNIS_STAGIAIRE SELECT Num-ST, Nom-ST, Prénom-St4


FROM STAGIAIRE WHERE Adr-St = ′Tunis′

29
La commande UPDATE
Cette commande permet de modifier les valeurs d ’un ou de plusieurs champs, dans
une ou plusieurs lignes existantes d ’une table.

UPDATE table
SET col1 = exp1, col2 = exp2, …
WHERE prédicat

UPDATE table
OU: SET col1, col2 , …) = (SELECT …)
WHERE prédicat

col1, col2, … sont les noms de colonnes qui seront modifiés.

30
La commande UPDATE: Exemple
La clause WHERE est facultative

UPDATE STAGE
SET Nb-jours = 4
WHERE Type-Stage = ′TP′;

UPDATE STAGE
SET Nb-jours = 4
WHERE Type-Stage IN ( SELECT Num-St FROM PARTICIPATION);

31
La commande DELETE
 L ’ordre DELETE permet de supprimer des lignes d ’une table
DELETE FROM table
WHERE prédicat
 La clause WHERE indique quelles lignes doivent être supprimées.
 Cette clause est facultative. Si elle n ’est pas précisée, TOUTES les lignes de la
table sont supprimées.

DELETE FROM STAGE


WHERE Num-Cat = ( SELECT Num-Cat
FROM STAGE
WHERE Libellé-St = ′Programmation java′ );

32
Chapitre3: Le Langage SQL
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV. Langage de contrôle de données LCD
Les transactions dans SQL : COMMIT et ROLLBACK

V. Langage d’interrogation de données LID

33
Langage de contrôle de données LCD
 Le langage SQL permet de contrôler l’accès aux bases de données selon les
permissions (appelées aussi droits ou privilèges) et les profils des utilisateurs. les
permissions sont définies par l'administrateur de la base de données (en anglais
DBA, DataBase Administrator). Ces opérations sont effectuées grâce à deux
clauses : GRANT permet d'accorder des droits à un ou plusieurs utilisateurs.
REVOKE permet de retirer certains droits à un ou plusieurs utilisateurs
D'autre part, il est possible de définir des rôles aux utilisateurs. Ces utilisateurs
auront le privilège d'accorder des permissions à d'autres utilisateurs
 La clause GRANT
 Permet au propriétaire d’une table( ou d’une vue) de donner à d’autres utilisateurs
des privilèges d’accès à celles-ci.
Syntaxe :
GRANT Liste_Privilège ON Table/ Vue TO Utilisateur [WITH GRANT OPTION];

34
Les privilèges
 Les privilèges sont :
 UPDATE : modification de lignes
 INSERT : insertion de lignes
 DELETE : suppression de lignes
 SELECT : lecture
 INDEX : création d’index
 ALTER : modification de la structure de la table
 ALL : Tous les droits
 Exemple :
GRANT SELECT ON commande TO User1;
2- La clause REVOKE
Un utilisateur ayant accordé un privilège à un ou autres users peut l’annuler via la commande
REVOKE.
Syntaxe :
REVOKE Liste_Privilège ON Table/Vue FROM Utilisateur;
Exemple:
REVOKE SELECT ON client FROM User1;

35
Les transactions dans SQL : COMMIT et ROLLBACK
 Dans la norme SQL, une transaction commence au début d'une session de travail
ou juste après la fin de la transaction précédente. Elle se termine par un ordre
explicite de validation (commit) ou d'annulation (rollback).
 Certains SGBD ne respectent pas la norme et demandent une commande explicite
pour démarrer une transaction.
 L'utilisateur peut à tout moment valider (et terminer) la transaction en cours par la
commande COMMIT. Les modifications deviennent alors définitives et visibles à
toutes les autres transactions.
 L'utilisateur peut annuler (et terminer) la transaction en cours par la commande
ROLLBACK.
 Toutes les modifications depuis le début de la transaction sont annulées.

36
Chapitre3: Le Langage SQL
I. Introduction
II. Langage de définition de données LDD
III. Langage de manipulation de données LMD
IV. Langage de contrôle de données LCD
V. Langage d’Interrogation de données LID

37
Interrogation : l’ordre SELECT
 La syntaxe complète d’un ordre SELECT

SELECT col, col, ..


FROM nom_table
[WHERE condition [ OR | AND condition]]
[GROUP BY col, col, ..]
[HAVING condition [ OR | AND condition]]
[ORDER BY col, col, …]

38
L’ordre SELECT
 L’ordre SELECT permet l’interrogation d’une base de données afin
d’afficher des données. Il permet :
 La projection
 La sélection
 La jointure

 La clause SELECT contient la liste de colonnes qui vont être affichées


comme résultat.
 La clause FROM spécifie la ou les tables dans laquelle , la recherche va
être effectuée.
 La clause WHERE spécifie une condition de sélection de quelques
enregistrements de l’ensemble de données de la table.
39
L’ordre SELECT :EXEMPLE
 Exemple :
Afficher le nom et le salaire de tous les employés :
 Réponse :
Select ename, sal
From emp ;
 Exemple :
Afficher les jobs des employés de département 20
 Réponse :
Select job
From emp
Where deptno=20

40
L’interrogation avec prédicats(conditions):
  

 Limiter les lignes retournées en utilisant la clause WHERE

SELECT*|[DISTINCT]colonne| expression[alias],…
FROM table;
[WHERE condition(s)];

 WHERE : indique qu’une ligne doit valider une condition avant d’être retournée.

 condition: peut être composé de nom de colonne, expression, des valeurs constantes et des opérateurs
de comparaison.

 condition: est composée de colonnes, d’expressions, de constantes liées deux à deux entre des
opérateurs:
 de comparaison(>,=,<,>=,<=,<>);
 logiques(NOT, AND ou OR);
 intégrés(BETWEEN, IN, LIKE, ISNULL).

41
Between: exemple
 Between: extraire des lignes en se basant sur un intervalle de valeurs.
 Exemple: Afficher les clients qui ont un crédit entre 50 et 250'.
  

SELECT *
FROM Client
WHERE creditC >=50 AND creditC<=200;
 Ou bien:
  

SELECT *
FROM Client
WHERE creditC BETWEEN 50 AND 200;

42
In: Exemple
 In: extraire des lignes en se basant sur une liste de valeurs.
 Exemple: Afficherlesproduitsdontlaquantitéenstockestégaleà20,40oubien50.

SELECT *
FROM Produit
WHERE QteS=20 OR QteS=40 OR QteS=50;
 Ou bien:
 SELECT *
FROM Produit
WHERE QteS IN (20,40,50);

43
LIKE: exemple
LIKE: rechercher les valeurs qui vérifie une condition textuelle.
La condition de recherche peut contenir des caractères ou des entiers:
 % indique zéro ou plusieurs caractères

 _ indique un seul caractère

Exemple :Afficher les clients dont la deuxième lettre des noms est 'a'.

  SELECT *

FROM Client

WHERE nomC LIKE ('_a%');

44
IS[NOT]NULL:
 IS[NOT]NULL: rechercher les valeurs dont certains champs contiennent des
valeurs nulles.
 Exemple: Afficher les clients qui n'ont pas une adresse.

  SELECT *

FROM Client

WHERE AdresseC IS NULL;

45
Opérateurs des prédicats pour la clause where

46
Tri des données :Order by
 Le Tri : Trier les lignes retournées avec ORDER BY
 Syntaxe:

  SELECT expr FROM table
[WHERE condition(s)]
[ORDERBY{column,expr}[ASC|DESC]];
  

 On peut spécifier une expression, un alias, un nom ou une position de


colonne dans la clause ORDER BY
 Par défaut l’ordre de tri est ascendant.
 Pour renverser l’ordre de tri spécifier le mot clé DESC après le nom de
colonne dans la clause ORDERBY

47
Tri des données :Order by
 Exemple: Rechercher la liste des produits en triant le résultat avec le plus cher:

Select *
from Produit
Order by PU DESC;

 Exemple: Rechercher le prix total des produits en triant le résultat par le montant le plus
faible
Select codP, Lib, PU*QteS AS "total"
from Produit
Order by total;

48
Les jointures :
 Une jointure a pour but d’afficher des informations issues de plusieurs tables.

 Quand on précise plusieurs tables dans la clause FROM, on obtient le produit


cartésien des tables.

 Ce produit cartésien n’a aucun intérêt. Ce qui est normalement souhaité, c'est de
joindre les informations de diverses tables, en recollant les lignes des tables
suivant les valeurs qu'elles ont dans certaines colonnes.

49
Types de jointures:
 Types de jointures:
 Equijointure.
Auto-jointure
Non-équijointure
Jointure externe

 Exemple : afficher le nom de l’employé et le nom de son département.


 emp (num, nom, fonction, n_sup, embauche, salaire, comm, #n_dept)
 Dept (n_dept, nom,lieu)
 Salgrade (grade, salmin, salmax)

50
Les jointures: Exemple
 emp (num, nom, fonction, n_sup, embauche, salaire, comm, #n_dept)
 dept(n_dept, nom,lieu)
 Salgrade(grade, salmin,salmax)
Exemple : Afficher le nom de l’employé et le nom de son département.

Emp
num Nom …. N_dept
Dept
N_dept Nom ….

Dans cet exemple, le nom de l’employé se trouve dans la table « emp », tandis que le nom
de département se trouve dans « dept ». c’est la colonne n_dept qui existe dans les deux
tables qui va assurée leur liaison.
51
L’équijointure :
 Appelé encore jointure simple ou naturelle, basé sur l’égalité des valeurs de deux
colonnes dans deux tables différentes.

 Par exemple , une clé primaire d’une table et la clé étrangère qui lui correspond
dans une autre table.

 Exercice : afficher le nom de l’employé numéro 7800, et le nom de son


département.
emp (num, nom, fonction, n_sup, embauche, salaire, comm, #n_dept)
Dept (n_dept, nom,lieu)
Salgrade (grade, salmin, salmax)

52
L’équijointure : Exemple
 Dans cet exemple, le nom de l’employé se trouve dans la table « emp », tandis que

le nom de département se trouve dans « dept ». c’est la colonne n_dept qui existe
dans les deux tables qui va assurée leur liaison.
 Réponse :

Jointure relationnelle Jointure SQL

Select emp.nom,dept.nom Select emp.nom,dept.nom


From Emp JOIN Dept
From Emp,Dept
ON Emp.n_Dept=Dept.n_Dept
Where Emp.n_Dept=Dept.n_Dept
Where emp.num=7800;
AND emp.num=7800;

53
Auto-jointure :
 L’auto-jointure est une liaison d’une table à elle-même.

 C'est-à-dire, utiliser la même table deux fois, la première pour cherche une valeur

X à partir de données, et la deuxième est de trouver le résultat final à partir de X.


 Exercice : afficher le nom du directeur de l’employé numéro 7800.
emp (num, nom, fonction, n_sup, embauche, salaire, comm,
#n_dept)
Dept (n_dept, nom,lieu)
Salgrade (grade, salmin, salmax)

54
Auto-jointure: Exemple
 Exercice : afficher le nom du directeur de l’employé numéro 7800
 Réponse :
 select emp.nom
 from emp e, emp p
 where e.num = 7800 and e.n_sup = p.num ;

Emp e
num Nom N_sup …. N_dept
7800 Tounsi_Med 6200

Emp p
num Nom N_sup … N_dept
6200 Sellami Ali

55
Auto-jointure: Exemple
 Le serveur Oracle exécute cet ordre en trois étapes :
1. Parcourir la colonne « num » de la table « emp » en cherchant la valeur 7800.
2. - Lire la valeur « num_sup » de cet employé :6200
3. - Chercher 6200 dans la colonne « num » et lire le nom de directeur dans la colonne «
nom »

Emp e
num Nom N_sup …. N_dept
7800 Tounsi_Med 6200

Emp p
num Nom N_sup … N_dept
6200 Sellami Ali
56
Les fonctions disponibles

Les différentes fonctions disponibles sous Oracle:


 Fonctions arithmétiques

 Fonctions chaînes de caractères

 Fonctions Date

 Fonctions de conversion

 Fonctions diverses

 Fonctions de groupe

57
Les fonctions de groupe:
  

 Les fonctions de groupe sont utilisées pour afficher des informations sur un
ensemble d'enregistrement.

 Les fonctions de groupe: AVG, COUNT, MAX, MIN, SUM


 
SELECT fonctionGroupe (colonne),...
FROM table
[WHERE condition]

58
Les fonctions de groupe
 Le tableau suivant présente les principales fonctions.
 L’option DISTINCT évite les duplicatas alors que ALL les prend en compte (par
défaut).
 À l’exception de COUNT, toutes les fonctions ignorent les valeurs NULL (il
faudra utiliser NVL pour contrer cet effet).

59
Les fonctions de groupe
 Les fonctions de groupe agissent sur des groupes de lignes et donne un résultat par
groupe:

Num_emp Nom_emp ….. salaire

Tounsi Med …. 1800

Bejaoui Nawres …. 1200

Mansour Nahla …. 1900

Hellal Mehdi … 1850

Le plus grand salaire ???


MAX(salaire)

60
AVG,SUM,MAX,MIN :
 AVG et SUM sont utilisées avec les données numériques.
Exemple : select AVG(sal), SUM (sal), MIN(sal), MAX (sal)
from employés ;
 MIN et MAX s’utilisent avec tout type de données.

Exemple : SQL>Select MIN (hiredate), MAX(hiredate)


From emp ;
 MIN(date_embauche) MAX(date_embauche)
21-JAN-1981 26-MAR-2017

Exemple : SQL>Select MIN (nom_employé), MAX (nom_employé)


From employé ;
MIN (nom_employé) MAX (nom_employé)
Abbassi Zouari

61
Utilisation de la fonction COUNT :
COUNT(*) ramène le nombre de ligne d’une table.

Exercice : afficher le nombre d’employé de département 30

Réponse : SQl> Select count(*)


From employés
Where id_depart = 30 ;

62
Utilisation de la fonction COUNT :

Exercice : nombre de départements possédant des employés.

Réponse: SQl> Select count( distinct ( id_depart ))


From employés ;

63
Utilisation de la fonction COUNT :

Exercice : afficher le nombre d’employé de département 10, qui ont une commision :

Réponse :
SQl> Select count(comm)
From emp
Where deptno = 10 ;

64
Utilisation de la fonction NVL :
 la fonction NVL force la prise en compte des valeurs NULL dans les fonctions de
groupe en remplaçant la valeur NULL par une autre valeur.
 Exemple :

SQL> Select AVG( NVL ( comm , 0 ))

From emp ;

65
La clause Group by
 Elle réarrange la table résultat en un nombre minimum de groupes, tels que, à
l’intérieur de chaque groupe, l’attribut spécifié possède la même valeur pour
chaque tuple.

 Cette clause n ’affecte pas l ’organisation physique de la table.

 Lorsqu’on spécifie une clause GROUP BY, les fonctions de groupe sont calculées
pour chaque groupe.

66
La clause Group by
 Cette clause permet l ’affichage de l ’attribut commun aux tuples d ’un groupe, suivi
de l ’affichage de la valeur des fonctions appliquées au groupe.

 On peut ajouter une clause WHERE qui sélectionne les tuples

 SELECT Nom-Cat, AVG(Nb-jours)


 FROM STAGE
 GROUP BY Nom-Cat;
 SQL fait des groupes d ’après la valeur de Nom-Cat, puis, pour chaque valeur de
Nom-Cat, calcule la moyenne de l ’attribut Nb-jours.

 Il affiche les valeurs de Nom-Cat correspondant à chaque groupe et la moyenne


associée.
67
Restriction de groupes, HAVING
 On ne peut pas utiliser la clause WHERE pour limiter les groupes. La clause
HAVING permet ceci.

 Exemple : afficher le salaire moyen de chaque département ,qui dépasse 1300.


 Réponse :
Select deptno, AVG (sal)
From emp
Group by deptno
HAVING AVG(sal) > 1300 ;

68

Vous aimerez peut-être aussi