0% ont trouvé ce document utile (0 vote)
10 vues57 pages

Cours BDet SQL

Le document présente les concepts fondamentaux des bases de données relationnelles, y compris leur définition, les systèmes de gestion de bases de données (SGBD), et le modèle relationnel. Il aborde également les requêtes SQL, les jointures, les contraintes d'intégrité et les fonctions agrégées. Enfin, des exemples pratiques de requêtes SQL illustrent l'utilisation de ces concepts dans la manipulation de données.

Transféré par

Es-salmaniZouhir
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • Clé étrangère,
  • Having,
  • Systèmes d'information,
  • Intégrité des données,
  • Clé primaire,
  • Domaine des attributs,
  • Modèle relationnel,
  • Données accessibles,
  • Langage de requête,
  • Exemples de requêtes
0% ont trouvé ce document utile (0 vote)
10 vues57 pages

Cours BDet SQL

Le document présente les concepts fondamentaux des bases de données relationnelles, y compris leur définition, les systèmes de gestion de bases de données (SGBD), et le modèle relationnel. Il aborde également les requêtes SQL, les jointures, les contraintes d'intégrité et les fonctions agrégées. Enfin, des exemples pratiques de requêtes SQL illustrent l'utilisation de ces concepts dans la manipulation de données.

Transféré par

Es-salmaniZouhir
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • Clé étrangère,
  • Having,
  • Systèmes d'information,
  • Intégrité des données,
  • Clé primaire,
  • Domaine des attributs,
  • Modèle relationnel,
  • Données accessibles,
  • Langage de requête,
  • Exemples de requêtes

Base de données relationnelle

Niveau : S4 Gestion

Enseignante : Alami Laila

1
Limite d’utilisation des fichiers
 Organisation
 Manipulation : Ecriture de programmes
 Redondances
 Accesibilité
 Fiabilité
 …

2
Besoin des utilisateurs
 Programmes flexibles
 Données accessibles à tout non spécialiste
 Systèmes d'informations globaux
 Cohérence
 Réponses immédiates .

3
Base de données - Définition
Ensemble structuré et cohérent de données,
stocké sur disque, accessible par un ou
plusieurs utilisateurs de façon sélective et en
un temps opportun
sur lesquelles on peut développer différentes
applications.

4
Une BD est faite pour

 enregistrer les données,


 les restituer à la demande,
 tirer des conclusions en rapprochant les faits
les uns des autres.

5
SGBD
 Un logiciel qui permet de
 décrire,
 modifier,
 interroger,
 administrer,
les données d'une base de données.

6
SGBD
Logiciel qui prend en charge
 la structuration,
 le stockage,
 la mise à jour
 et la maintenance des données ;
c'est, en fait, l'interface entre la BD et les
utilisateurs ou leurs programmes.

7
Cycle d’abstraction

 Le niveau conceptuel : Conception de la BD


(MCD)
 Le niveau logique : Modèle relationnel
(MLD)
 Le niveau opérationnel : BD créée sur
disque sous Access2007 (MPD)

8
Le modèle relationnel
 Formalisé par Codd en 1970
 Son succès est dû à la puissance et à la
simplicité de ses concepts.
 Le standard ANS/ISO : SQL
 Version 2, 1992;
 Version 3 : types récursifs + héritage

9
Objectifs du modèle R
 Schémas de données faciles à utiliser,
 Indépendance logique et physique,
 Langage de haut niveau
 Optimiser les accès à la base de données,
 Améliorer l'intégrité et la confidentialité,
 Approche méthodologique dans la
construction des schémas.
10
Relation ou Table
 Relation Logique
Voiture (nomPropriétaire, marque, numéro)

 Table physique
Voiture nomPropriétaire marque numéro
Bennani Renault 15402A15
Chraibi BMW 98410A17
Idrissi Peugeot 12101A15
Loulidi Renault 154210A15

11
Table – ligne/colonne
Attribut

12
Attribut
 A chaque attribut correspond
 Un nom (lettre, chiffre, trait d’union)
  à un domaine (Type : entier, réel, chaine…)
 Atomique : non décomposable
 Brut : non calculé
 Peut être clé – unique
 Peut être null
 Ordre des attributs quelconque
13
Valeur Null

 Null = non renseigné

 Valeur inexistante
 Valeur non encore connue
 Valeur impossible

14
Tuple
 Ligne
 Enregistrement ou article
 Possède tous les attributs
 Identifié par une clé

 Ordre quelconque

15
Clé d’une relation : Primary key
 Soit R (A1, A2, ..., An) un schéma de relation,
 X un sous-ensemble de (A1, A2, ..., An),
 X (groupe d’attributs) est une clé si et seulement si:
 X est unique
 Valeur obligatoire
 X détermine tous les attributs (A1, A2, ..., An)
 X est minimal
 La clé dans un schéma de relation est soulignée
Exemple :
 voiture ( NIMM, marque, modèle, prix, couleur)
 emploiTemp(Jour, heure, nomEnseignant, codeMatière, Salle)
16
Clé étrangère : foreign Key

Personne (Cin , nom , prenom , tel)

Projet ( num , intitulé , date , Cin)

Clé étrangère

17
Exemple d’un schéma relationnel
Client (noclient , nom , téléphone)
Commande (nocom , date , noclient)
Produit (Pref , désignation , prix)
Ligne-cde (nocom , Pref , quantité)
Fournisseur(nofrs , nom)
Fournir (nofrs, Pref )

18
Contraintes d’intégrité
 liées au modèle (pas de doublons dans une relation.)

 de domaine

 pas de doublon ni de valeur nulle pour la clé primaire

 référentielles dites de clé étrangère qui impose que la valeur


d'attribut de la relation r1 apparaît comme valeur de clé dans
une autre relation r2.

19
Le langage : SQL

 Structured Query Language


 Langage de requête structuré
 DDL : Data Définition Language
 Création de database, de tables, index/clé, …
 DML : Data Manipulation Language
 Recherche
 MAJ ( Insertion, suppression et modification)
20
DML : Langage da manipulation de données

 Recherche : Select
 Mise à jour
 Insertion : Insert
 Suppression : Delete
 Modification : Update

21
Recherche SQL
Format général :
Select [All / Distinct] { <expression de valeurs> / * }
From <listeRelation >
[ where <conditions>]
[order by <listeAttributs> [asc/desc]>];
Une expression de valeurs peut être la liste des attributs ou des expressions
arithmétiques séparées par « , » .
* Remplace tous les attributs des relations mentionnées.
Une condition peut être simple ou composée (reliées par les opérateurs logiques
And, Or et Not)
22
Order by : pour un affichage trié selon les attributs et l’ordre mentionné
Exemple – Requête simple

Question : Donnez la liste des voitures Résultat :


Requête SQL :
Select *
From voiture;

23
Exemple – requête simple

Question : Donnez le modèle et le prix des voitures de marque « Renault »


Requête SQL : Résultat :
Select modèle , prix
From voiture
where marque = ‘’Renault’’;

24
Exemple – critère multiple

Question : Donnez le modèle, le prix et le prix TTC des voitures de marque « Renault »
de prix HT inférieur ou égale à 25 millions
Résultat :
Requête SQL :
Select modèle , prix, prix * 1.2 as TTC
From voiture
where (marque = ‘’Renault’’)
and (prix <= 25);
25
NB : Utilisez les parenthèses dans les conditions utilisant des opérateurs logiques.
Exemple – clause distinct

Question : Donnez les marques des voitures Requête2 SQL :


Select distinct ( marque )
Résultat:
From voiture;
Requête1 SQL :
Résultat:
Select marque
From voiture;

26
Exemple – clause distinct

Question : Donnez les différentes marques et modèles des voitures

Résultat:
Requête SQL :
Select distinct (marque) , modèle
From voiture;

Remarque : Distinct s’applique sur le tuple entier de la table voiture


27
Exemple – ordre des tuples affichés

Question : Donnez les NIMM , marque et modèle des voitures dans l’ordre de la
date d’achat
Résultat:

Requête SQL :
Select NIMM, marque , modèle , achat
From voiture
Order by achat;

28
Exemple – ordre des tuples affichés

Question : Donnez les marque, modèle , couleur et prix des voitures par ordre
croissant de marque et décroissant de prix
Résultat:
Requête SQL :
Select marque , modèle , couleur, prix
From voiture
Order by marque , prix desc;

29
Remarque : le prix est classé pour chaque
marque.
Fonctions agrégats
Fonctions de groupe ou d’évaluation d’ensemble
 Count(n/*) : Donne le nombre de tuples
 Max(n) : Donne la plus grande valeur de n
 Min(n) : Donne la plus petite valeur de n
 Sum(n) : Donne la somme des valeurs de n
 AVG(n) : Donne la moyenne des valeurs de n

Attention : une fonction agrégat est utilisée dans un


select (Jamais dans un Where)
30
Exemple – fonction de groupe

Question : Donnez le nombre de voitures de marque « Peugeot »

Résultat:
Requête SQL :
Select count(*) as NombrePeugeot
From voiture
Where marque = "Peugeot";

31
Exemple – fonction de groupe

Question : Donnez le prix minimale et le prix maximale des voitures

Résultat:
Requête SQL :
Select min(prix) as Pmin, max(prix)as Pmax
From voiture;

32
Les sous relations : regroupement
Format : Group by <liste_attributs>
[Having <condition>] ;

Group by : partitionne la relation en sous relations tel que


chacune ait pour l'attribut indiqué par group by la même
valeur.

Having : a la même fonction que where, ne garde que les sous


relations qui satisfont la condition.

33
Group by – comment ça marche?

Group by marque sur la relation voiture :

34
Exemple – Group by

Question : Donnez le nombre de voitures de chaque marque

Résultat:
Requête SQL :
Select marque, count(*)as Nombre
From voiture
Group by marque;

35
Exemple – Group by + having

Question : Donnez le nombre de voitures de chaque marque ayant un prix


minimale inférieur à 30 millions
Résultat:
Requête SQL :
Select marque, count(*)as Nombre
From voiture
Group by marque
Having min(prix) < 30;

36
A noter
 Un attribut mentionné dans group
 Apparaît forcément dans select.
Select X , …
From …

Group by X
….
 Une fonction agrégat ne peut pas être utilisée
dans la clause where, elle peut être utilisée
dans Having (après le group by)
37
Les requêtes multi-relations
 Forme procédurale (FP)
requêtes imbriquées (opérateur in)
N requête , 1 table dans chaque From
 Forme relationnelle (FR)
1 requête , plusieurs tables dans 1 From
Possibilité d’utiliser des variables de
désignation
38
Exemple1 – Jointures

Question : Donnez pour chaque matière: le code, le titre, le niveau et les volumes horaire
(cours , td et/ou TP)

Pour afficher les attributs de la table matières et ceux de la table VolumeH, il faut préciser
dans la requête SQL le lien entre les deux tables (Mcode) : La jointure.

Cad? matiè[Link] = [Link]

39
Exemple1 – Jointures - FR

Requête SQL (FR):


Select *
From matières , volumeH
Where (matiè[Link] = [Link]); Résultat:

40
Exemple1 – Jointures –FR
Variable de désignation

Requête SQL (FR):


M et V sont des variables de
Select * désignation appelées aussi variables
tuples.
From matières M , volumeH V M designe la relation matières
V désigne la relation volumeH
Where ( M. Mcode = [Link] ) ;
41
Exemple1 – Jointures –FP

Requête SQL (FP):


Dans la forme procédurale, chaque from utilise
Select * une seule table, la jointure est présentée sous
From matières forme d’une imbrication de requêtes.
Where Mcode in (Select Mcode * représente dans cette forme les attributs de la
Fom VolumeH); table matières seulement, il n’est pas possible
d’afficher les attributs type et Nbh de la table
VolumeH.
42
Exemple2 : Jointures
Soit le schéma relationnel suivant :

Voiture( NIMM , marque, modèle , prix ,couleur, achat)


Client(CIN , nom , ville , téléphone)
Appartenir ( CIN , NIMM)

43
Exemple : Forme Relationnelle
Question : Nom, cin et téléphone des clients ayant des
voitures de modèle 308 et de marque Peugeot.

Requête SQL
Select nom , [Link] , téléphone
From client C , Appartenir A , Voiture V
Where ([Link] = [Link]) and ([Link] = [Link]) and
(modele=“308”) and (marque=“Peugeot” );

Remarque : il est obligatoire de préciser la table ou la variable de


désignation pour chaque attribut appartenant à plusieurs table dans la
44
requête.
Exemle : [Link] : indique l’attribut cin de la table client.
Exemple : Forme Procédurale
Question : Nom, cin et téléphone des clients ayant des
voitures de modèle 308 et de marque Peugeot.
Requête SQL
Select nom , cin , téléphone
From client
Where cin in ( select cin
From Appartenir
Where NIMM in (select NIMM
From voiture
Where (modele=“308”) and (marque=“Peugeot” )));

Remarques:
Ici, la variable de désignation n’est pas nécessaire.
Les seuls attributs à afficher sont ceux appartenant à la relation qui existe dans le premier
From de cette forme procédurale. 45
Requête - jointure

 Une requête de jointure est une requête qui


utilise N tables (avec N > 1)
 N tables dans une requête suppose au moins
N-1 jointures.

46
Exemple
Clients (Nclient, Nom, Prénom, Adresse, Ville, Tel)
Ventes (Nvente, DateVente, Nrepresentant, Nclient,
Paiement)
LignesVentes(Nvente, Nproduit, NbreUnités)
Produits (Nproduit, designation, PrixUnitaire, Catégorie,
Disponible)
Représentant (Nrepresentant, Nom, Prénom,
DateNaissance, DateEmbauche, Adresse, ville, Tel,
SalaireBrut)
47
Attributs Type
Nclient, Nom, Prénom, Adresse, Ville, Tel, Paiement, Texte
designation, Catégorie

Nvente, Nproduit, NbreUnités, Nrepresentant, Numérique


PrixUnitaire, SalaireBrut
Logique
Disponible
Date (format jj/mm/aaaa)
DateVente, DateNaissance, DateEmbauche

48
Donnez une requête SQL pour répondre aux questions
suivantes:
1. Affichez la liste des produits disponibles de Prix unitaire supérieur à 500
DH. La table résultat de votre requête doit avoir les entêtes de colonnes
suivantes : Nproduit, designation, PrixUnitaire et Catégorie.

2. Affichez les représentants ayant un salaire brut supérieur à 3000 DH par


ordre décroissant de salaire et croissant de nom. La table résultat de votre
requête doit avoir les entêtes de colonnes suivantes : Nom, Prénom et
SalaireBrut.

3. Affichez la liste des ventes d’un mode de paiement donné (celui-ci sera
saisi par le clavier lors de l’exécution de la requête). La table résultat de
votre requête doit avoir les entêtes de colonnes suivantes : Nvente et
DateVente.
49
Réponses
1. Select Nproduit, designation, PrixUnitaire, catégorie
From Produits
Where (disponible = true) and (prixUnitaire > 500) ;

2. Select Nom, prénom, salaireBrut


From Représentant
Where salaireBrut > 3000
Order by salaireBrut desc , nom ;

3. Select Nvente, DateVente


From ventes
Where paiement = [Mode de paiement : ] ;
50
Donnez une requête SQL pour répondre aux questions
suivantes:
4. Affichez le nombre de produits disponibles de catégorie « Ordinateur ».

5. Affichez le nombre de représentant de chaque ville.

6. Affichez la liste des représentants ayant moins de 24 ans à la date de leur


embauche. La table résultat de votre requête doit avoir les entêtes de
colonnes suivantes : Nreprésentant, Nom, Prénom, dateNaissance,
DateEmbauche et SalaireBrut.

7. Affichez le numéro des représentant ayant effectué plus de 10 ventes par


mois. . La table résultat de votre requête doit avoir les entêtes de colonnes
suivantes : Nreprésentant, mm, aa et NbVente.

51
Réponses
4. Select count(*)
From Produits
Where (disponible = true) and (catégorie = "Ordinateur") ;

5. Select ville , count(*)


From Représentant
Group by ville ;

6. Select Nreprésentant, Nom, Prénom, dateNaissance, DateEmbauche,


SalaireBrut
From Représentant
Where year(DateEmbauche) – year(dateNaissance) < 24 ;
52
Réponse

7. Select Nreprésentant, month(dateVente) as mm , year(dateVente) as aa ,


count(*) as NbVente
From ventes
Group by Nreprésentant, month(dateVente) , year(dateVente)
Having count (*) > 10 ;

53
Donnez une requête SQL pour répondre aux questions
suivantes:
8. Affichez la vente pour laquelle le représentant a omis de mentionner le
mode de paiement. La table résultat de votre requête doit avoir les entêtes
de colonnes suivantes : Nvente, DateVente, Nreprésentant et
nomReprésentant.

9. Affichez la liste des ventes réalisées aujourd’hui. La table résultat de


votre requête doit avoir les entêtes de colonnes suivantes : Nvente,
Nproduit, désignation, NbreUnités et NomClient.

54
Réponses
8. Select Nvente, DateVente, [Link]ésentant, nom as nomReprésentant
From Ventes V , Représentant R
Where (Paiement = NULL) and ([Link]ésentant = [Link]ésentant) ;

9. Select [Link], [Link], désignation, NbreUnités , nom as NomClient


From LignesVentes L , Produits P, Ventes V , Clients C
Where ([Link] = [Link]) and ([Link] = [Link])
and ([Link] = [Link]) and (dateVente = date()) ;

55
L’opérateur ANY
X opc ANY (requête)
retourne vrai si  y  E tel que x opc y,
retourne faux sinon
Question : Donnez le NIMM d’une Mercedes dont le prix est
inférieur à une Peugeot.
Requête SQL :
Select NIMM From voiture
Where (marque = " Mercedes")
and (prix <= Any (Select prix From voiture
where marque = "Peugeot");
56
L’opérateur ALL
X opc ALL (requête)
retourne vrai si  y  E tel que x opc y,
retourne faux sinon
Question : Donnez le NIMM d’une Peugeot dont le prix est
supérieur à toutes les Mercedes.
Requête SQL :
Select NIMM From voiture
Where (marque = "Peugeot")
and (prix > ALL (Select prix From voiture
where marque = "Mercedes");
57

Vous aimerez peut-être aussi