Vous êtes sur la page 1sur 90

Ecole Nationale de Commerce et de Gestion de Kénitra

Les bases de données

Enseignant: Mr. Bouasabah Mohammed


( ‫) ﺑﻮﻋﺼﺎﺑﺔ ﳏﻤﺪ‬
ECOLE NATIONALE
DE COMMERCE ET DE GESTION
-KENITRA- Année universitaire: 2012/2013
Plan de cours
A) • Introduction aux bases de données.

B) • Le modèle relationnel : entités et attributs

C) • Le modèle relationnel : les tables

D) • Algèbre relationnelle

E) • Les requêtes SQL


2 11/05/2013
A) Introduction aux bases de données

1) Pourquoi une base de données ?

• Définition
• Exemples
• Objectifs

2) Architecture d’un SGBD

3) Différents types de base de données.

• Les bases hiérarchiques


• Les bases en réseau
• Les bases relationnelles
• Les bases de données objet
3 11/05/2013
1-1) Définitions
1-1-1) Définition 1: la donnée
Informations ≠ données
Exemple: Mohammed 0655433245: une donnée qui peut être la réponse à la question "Qui est
le responsable du service achat et son numéro de téléphone? " alors les données peuvent être
interprétées et produire une information
1-1-2) Définition 2
Base de données
Une base de données (BD) est un ensemble bien structuré de données relatives à un sujet global et
stocké dans un support informatique pour satisfaire simultanément plusieurs utilisateurs de manière
sélective en un temps opportun .
1-1-3) Définition 3
Système de gestion de bases de données (SGBD)

Un système de gestion de bases de données (SGBD) est le module


informatique qui permet d’interagir avec la BD: Gérer les données en en
permettant la création, la modification, la suppression et la lecture.

Remarque :

4 Un utilisateur utilise un SGBD pour accéder aux données d'une base de données. 11/05/2013
1-2) Objectifs d’utilisation d’une base de données

• Indépendance : la BD est un module dissocié du système d'information, le format des


données est indépendant du système.

• Accès : la SGBD gère les accès aux données en gérant les accès concurrentiels.

• Cohérence : la SGBD assure l'intégrité des données.

• Sécurité : la SGBD gère les accès aux données en fonctions des utilisateurs.

• Résistance aux pannes : pouvoir récupérer une BD dans un état « sain » si une panne

survient au milieu d’une modification.


5 11/05/2013
1-3) Exemple d’utilisation de bases de données

 Gestion des livres d’une bibliothèque

 Gestion des films pour une vidéothèque

 Gestion des clients dans une société d’assurance ou dans une banque.

 Gestion des voitures dans une société de location de voitures

………..

6 11/05/2013
1-3) Exemple d’utilisation de bases de données

Demande de réservation

7 11/05/2013
1-4) Exemple des SGBDs

8 11/05/2013
2-1) Architecture d’un SGBD
Un SGBD offre des "services" organisés en couches afin de garantir l’intégrité des données et de
faciliter leur manipulation.

9 11/05/2013
2-1) Architecture d’un SGBD

10 11/05/2013
2-1) Architecture d’un SGBD

11 11/05/2013
2-1-1) Fonctionnement d’un SGBD
Lecture de données
1) Le programme d'application A émet une demande de
lecture à l'intention du SGBD.
2) Le SGBD consulte le sous-schéma relatif à A pour
obtenir la description logique de ses données.
3) Le SGBD consulte le schéma et détermine la structure
logique des données à extraire.
4) Le SGBD examine la description physique de la base et
détermine les enregistrements physiques à lire.
5) Le SGBD lance une commande au système
d'exploitation pour provoquer la lecture de
l'enregistrement physique.
6) Le système d'exploitation provoque le transfert de
l'enregistrement entre la base physique et les buffers du
SGBD.
7) Le SGBD, à partir du sous-schéma A, extrait les données
à communiquer au programme d'application A.
8) Le SGBD provoque le transfert des données dans la zone
de liaison de A.
9) Le SGBD retourne au programme d'application les
informations d'état relatives à l'échange (en particulier les
codes des erreurs éventuelles).

12 11/05/2013
3) Différents types de bases de données

3-1) Base hiérarchique

Lie les enregistrements dans une structure arborescente où chaque enregistrement n'a qu'un
seul possesseur.

3-2) Base en réseau.

Est une base hiérarchique mais permet en plus d'établir des relations transverses.

13 11/05/2013
3-3) Base de données relationnelle SGBDR

Stocke les informations décomposées et organisées dans des matrices appelées relations ou tables.

3-4) Base objet

Stocke les informations groupées sous forme de collections d'objets persistants.

14 11/05/2013
B) Le modèle relationnel: entités et attributs

• L'entité

• L'attribut

• L'identifiant ou clé

• L'occurrence

15 11/05/2013
1) L’entité
Concept concret ou abstrait du monde à modéliser. Elle se représente par un cadre
contenant son nom.

2) L'attribut
Donnée élémentaire qui sert à caractériser les entités et les associations. Les attributs sont
listés dans l'entité.

16 11/05/2013
3) L'identifiant (ou clé)

Attribut(s) particulier(s) permettant d'identifier chaque occurrence d'une entité.


Les attributs servant d'identifiant sont soulignés.

4) L'occurrence

Élément particulier d'une entité ou d'une association. L'occurrence ne fait pas partie du modèle E-A
mais est expliquée ici pour mieux comprendre l'entité.

17
Récapitulatif sur le modèle relationnel

18 11/05/2013
C) Le modèle relationnel : les tables

 Définition

 Propriété des tables

 Clé primaire

 Clé étrangère

19 11/05/2013
1) Les tables (angl. tables)
1-1) Définition
Une table est une collection de données relatives à un domaine bien défini, par exemple les employés
d'une société ou les livres d'une bibliothèque. Elle contient des enregistrements dont chacun est composé
par les mêmes champs de données.
Voici, à titre d'exemple, quelques employés d'une société:

Voici la table nécessaire pour stocker les informations concernant ces employés dans une BD:

20 11/05/2013
1-2) Propriétés des tables:

• Les champs de données définissent les informations, qu'on veut stocker dans la table.

(p.ex. des informations concernant les employés d'une société).

• Chaque enregistrement représente une occurrence de ce qu'on veut stocker ( p.ex. un employé).

• Chaque table possède un nom unique (p.ex. : tblEmployés).

• Chaque enregistrement correspond à une ligne de la table.

• Chaque champ correspond à une colonne de la table.

• Chaque champ peut représenter des données de nature différente (Nom, Salaire, Date de naissance …).

• Chaque champ peut représenter des données de type différent (Texte, Nombres, Dates …).

21 11/05/2013
Remarque:
 Il existe une convention concernant les noms des objets des BD. Généralement, les noms des objets ne
contiennent ni d'espaces, ni de caractères spéciaux.

 chaque nom d'un objet est précédé par un préfixe bien déterminé pour chaque type d'objet.

 Les noms de tables sont précédés du préfixe tbl (angl.: table).


Par exemple: tblLivres, tblEmployés

 Le nom d'une table doit être unique à l'intérieur d'une BD.

Exemple :

Une table reprenant les données concernant les voitures d'une société de taxis contient par exemple
pour chaque enregistrement (= chaque taxi) les informations suivantes:
• Marque
• Modèle
• Cylindrée
• Poids

22 11/05/2013
Voici, à titre d'exemple, une table qui représente les taxis dans une BD:

Afin de pouvoir représenter des données de types différents, les SGBD offrent des types de données
standard pour les champs de données. Voici les types de données connus par la plupart des SGBD:

23 11/05/2013
1-3) Clé primaire

Supposons que le propriétaire de la société achète par exemple une deuxième BMW 320i , qui possède
bien sûr également une cylindrée de 2000 et un poids de 1200 kg. Dans ce cas nous avons 2
enregistrements complètement identiques dans notre BD. Cela nous empêche d'identifier clairement un
des 2 enregistrements.
Il nous faut donc un moyen, qui nous permet d'adresser sans ambiguïté chaque enregistrement dans la
table  UNE CLÉ PRIMAIRE !

Remarque:
La clé primaire, constituée d'un ou de plusieurs champs, nous permet d'identifier de manière unique
chaque enregistrement d'une table.
Exemples de clés primaires:

Le numéro de matricule pour les assurés des caisses de maladie.


Le numéro client pour les clients d'une vidéothèque.

Convention des noms:


Les noms des champs qui forment la clé primaire sont précédés du préfixe id (angl.: identifier).
Par exemple: idTaxi, idEmployé

24 11/05/2013
Exemple de clé pour l’exemple des taxis
On pourrait inventer un numéro de taxi allant simplement de 1 jusqu'au nombre de taxis que la société
possède. Le premier taxi enregistré serait le numéro TAXI=1, le deuxième le numéro TAXI=2 etc.

Relations entre tables - clé étrangère


Exemple:
Soit la BD suivante d'un organisme de sécurité sociale.

Les deux tables sont donc logiquement liées via les champs fiSociété et idSociété. On dit que fiSociété est
une clé étrangère, qui fait référence à la clé primaire idSociété de la table tblSociétés.
25 11/05/2013
1-4) Clé étrangère:

Un champ qui, dans une table, fait référence à la clé primaire d'une autre table est appelé clé étrangère
(angl.: foreign key, foreign identifier). Ainsi sont définies les relations entre les tables.

26 11/05/2013
D) L'algèbre relationnelle
Opérations sur des ensembles de données :

• La sélection

• La projection

• L'intersection

• L'union

• La différence

• Le produit cartésien

• La jointure

• La division cartésienne
27 11/05/2013
D) L'algèbre relationnelle
Introduction:
L’algèbre relationnelle est un support mathématique cohérent sur lequel repose le modèle relationnel.
L’objet de cet paragraphe est d’aborder l’algèbre relationnelle dans le but de décrire les opérations
qu’il est possible d’appliquer sur des relations pour produire de nouvelles relations. L’approche suivie
est donc plus opérationnelle que mathématique.

On peut distinguer trois familles d’opérateurs relationnels :

Les opérateurs unaires (Sélection, Projection) : Ce sont les opérateurs les plus simples, ils
permettent de produire une nouvelle table à partir d’une autre table.

Les opérateurs binaires ensemblistes (Union, Intersection, Différence) : Ces opérateurs


permettent de produire une nouvelle relation à partir de deux .

Les opérateurs binaires ou n-aires (Produit cartésien, Jointure, Division) : Ils permettent
de produire une nouvelle table à partir de deux ou plusieurs autres tables.

28 11/05/2013
1) La sélection.(Opérateur unaire)
La sélection (parfois appelée restriction) génère une relation regroupant exclusivement toutes les
occurrences de la relation R qui satisfont l’expression logique E, on la note σ(E)R.
relation × expression logique → relation

À partir d'un ensemble A, obtenir les données B correspondant à des critères donnés.

Exemple :

29 11/05/2013
2) La projection. (Opérateur unaire)

La projection consiste à supprimer les attributs autres que A1, … An d’une relation et à éliminer les
n-uplets en double apparaissant dans la nouvelle relation ; on la note Π(A1, …An)R.

relation × liste d’attributs → relation


À partir d'un ensemble A, obtenir uniquement les données pertinentes B.

Exemple :

30 11/05/2013
3) L'intersection (Opérateur binaire)
L’intersection est une opération portant sur deux relations R1 et R2 ayant le même schéma et
construisant une troisième relation dont les n-uplets sont constitués de ceux appartenant aux deux
relations, on la note R1 ∩ R2. relation × relation → relation

À partir des ensembles A et B, obtenir les données C qui existent à la fois dans A et dans B.

Exemple :

31 11/05/2013
4) L'union (Opérateur binaire)
L’union est une opération portant sur deux relations R1 et R2 ayant le même schéma et construisant
une troisième relation constituée des n-uplets appartenant à chacune des deux relations R1 et R2 sans
doublon, on la note R1 ∪ R2. relation × relation → relation

À partir des ensembles A et B, obtenir les données C qui existent soit dans A soit dans B

Exemple :

32 11/05/2013
5) La différence (Opérateur binaire)
La différence est une opération portant sur deux relations R1 et R2 ayant le même schéma et construisant
une troisième relation dont les n-uplets sont constitués de ceux ne se trouvant que dans la relation R1 ;
on la note R1 − R2. relation × relation → relation

À partir des ensembles A et B, obtenir les données C qui existent dans A mais pas dans B.

Exemple :

33 11/05/2013
6) Le produit cartésien. (Opérateur n-aire)
Le produit cartésien est une opération portant sur deux relations R1 et R2 et qui construit une
troisième relation regroupant exclusivement toutes les possibilités de combinaison des occurrences des
relations R1 et R2, on la note R1 × R2. relation × relation → relation
À partir des ensembles A et B, obtenir toutes les combinaisons possibles C

Exemple :

34 11/05/2013
7) La jointure (Opérateur n-aire)
La jointure est une opération portant sur deux relations R1 et R2 qui construit une troisième relation regroupant
exclusivement toutes les possibilités de combinaison des occurrences des relations R1 et R2 qui satisfont l’expression
logique E. La jointure est notée R1 ▷◁E R2. relation × relation × expression logique → relation

À partir des ensembles A et B, obtenir le produit cartésien C limité à une valeur commune.

En fait, la jointure n’est rien d’autre qu’un produit cartésien suivi d’une sélection :

R1 ▷◁E R2 = σE (R1 × R2)


35 11/05/2013
Exemple :

8) La division cartésienne (Opérateur n-aire)

La division est une opération portant sur deux relations R1 et R2, telles que le schéma de R2 est
strictement inclus dans celui de R1, qui génère une troisième relation regroupant toutes les parties
d’occurrences de la relation R1 qui sont associées à toutes les occurrences de la relation R2 ; on la
note R1 ÷ R2. relation × relation → relation

36 11/05/2013
À partir des ensembles A et B, obtenir les données C qui, combinées à l'ensemble B, donnent l'ensemble A.

Exemple :

La relation R contient donc


tous les enseignants de la
relation Enseignement qui
enseignent à tous les étudiants
de la relation Etudiant.

37 Exemple de division : R = Enseignement ÷ Etudiant. 11/05/2013


Exemple:

Soit le modèle relationnel qui gère les fonctions des employés dans une société :

Une fonction est identifiée par un code et possède un titre et un niveau hiérarchique.
Un employé est identifié par un numéro et possède les informations suivantes :
· Nom : Nom de l’employé
· Prénom : Prénom de l’employé
· Salaire :Salaire de l’employé en €
· Date entrée :Date d’entrée de l’employé dans la société
· Code fonction : Code de la fonction occupée par l’employé ( Clé étrangère avec la table FONCTION)

Exprimer les requêtes suivantes en algèbre relationnelle :


1.Les différents codes_fonctions dans la relation EMPLOYE.
2.Nom et Prénom des DBA qui ont un salaire supérieur a 3000 dans la relation EMPLOYE.
3.Nom, Prénom et titre de fonction de tous les employés

38 11/05/2013
Exercice d’application
Soit le modèle relationnel qui gère les projets et les ressources d’une entreprise informatique :

Donner les requêtes suivantes en langage algébrique :


1. Les codes et libelles des projets dépassant une durée de 60 mois et un cout de 100000 €.
2. Les libelles des ressources et descriptions de leurs taches, n'afficher que les taches avec un pourcentage
de réalisation inferieur a 50 %
3. Afficher les libelles des ressources qui ne travaillent sur aucune tache

39
11/05/2013
Exercice
On considère la base de données BD AIRBASE suivante :
- PILOTE (NUMPIL , NOMPIL, ADR , SAL)
- AVION (NUMAV , NOMAV, CAP, LOC)
-VOL (NUMVOL , NUMPIL ,NUMAV, VILLE_DEP, VILLE_ARR, H_DEP , H_ARR)

Les clés primaires sont soulignées et les clés étrangères sont en italique gras.
Exprimer les requêtes suivantes en algèbre relationnelle.
1) Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2) Quels sont les numéros et noms des avions localisés à Nice ?
3) Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4) Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur à 15000 DH ?
5) Quels sont les avions (numéro et nom) localisés à Nice ou dont la capacité est inférieure à 350 passagers ?
6) Liste des vols au départ de Nice allant à Paris après 18:00 h ?
7) Quels sont les numéros des pilotes qui ne sont pas en service ?
8) Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?
9) Donnez le numéro des vols effectués au départ de Nice par des pilotes Niçois ?
10) Quels sont les vols (numéro, villes départ et arrivée) effectués par un avion qui n'est pas localisé à Nice ?
11) Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Nice avec un avion de
capacité supérieure à 300 places ?
12) Quels sont les noms des pilotes domiciliés à Paris assurant un vol au départ de Nice avec un Airbus ?
40 11/05/2013
Annexe:
La jointure

Voici deux tables qui représentent une gestion (très simplifiée) des comptes d'une banque:
En principe, la présence d'une relation (clé étrangère/clé primaire) entre deux tables est une
condition nécessaire pour effectuer une jointure sur les tables.

Produit cartésien des tables tblComptes et tblClients:


Le produit cartésien contient un bon nombre d'enregistrements, qui ne donnent pas de sens logique.

En fait, pour tous les enregistrements non marqués, fiClient ne correspond pas à idClient.
Pour ces enregistrements, on associe donc un compte à un client qui n'est pas le propriétaire de ce compte.
Voici le résultat de l'application de la condition de jointure:
Les requêtes

44 11/05/2013
E) Les requêtes (angl. queries)
Les requêtes servent donc à répondre aux questions basées sur le contenu d'une ou de plusieurs tables.

Exemple:
Quelles sont les marques et modèles des voitures ayant une cylindrée supérieure à 2000 ?

Résultat: Une telle requête s’appelle Requêtes de Sélection.

Il existe 4 types de requêtes:


1. Requêtes de sélection.
2. Requêtes d'insertion.
3. Requêtes de modification.
4. Requêtes de suppression.

Pour chaque requête nous retrouvons le cycle suivant:

45 11/05/2013
1) Types d’attributs Mysql:

MySQL reconnaît trois principaux types de données :

Les valeurs numériques (les entiers, virgule flottante).


Les dates et les heures.
Les chaînes de caractères.

Dans chacune de ces catégories, il existe différents types que vous trouverez ci-dessous.

Il s’agit de choisir le plus adapté à vos besoins.


Ces types requièrent une plus ou moins grande quantité de données à stocker. Par exemple,
ne pas choisir un LONGTEXT pour stocker un prénom mais plutôt un VACHAR(40) !
Types des attributs – entiers

nom borne inférieure borne supérieure


TINYINT -128 127
TINYINT UNSIGNED 0 255
SMALLINT -32768 32767
SMALLINT UNSIGNED 0 65535
MEDIUMINT -8388608 8388607
MEDIUMINT UNSIGNED 0 16777215
INT* -2147483648 2147483647
INT* UNSIGNED 0 4294967295
BIGINT -9223372036854775808 9223372036854775807
BIGINT UNSIGNED 0 18446744073709551615

(*) : INTEGER est un synonyme de INT.


UNSIGNED permet d’avoir un type non signé.
ZEROFILL : remplissage des zéros non significatifs.

47
Types des attributs – flottants
 Les flottants – dits aussi nombres réels – sont des nombres à virgule. Contrairement aux entiers, leur
domaine n’est pas continu du fait de l’impossibilité de les représenter avec une précision absolue.

 Exemple du type FLOAT :

-1.175494351E-38 3.402823466E+38

-3.402823466E+38 1.175494351E-38
0

nom domaine négatif : Domaine positif :


borne inférieure borne inférieure
borne supérieure borne supérieure
FLOAT -3.402823466E+38 1.175494351E-38
-1.175494351E-38 3.402823466E+38
DOUBLE* -1.7976931348623157E+308 2.2250738585072014E-308
-2.2250738585072014E-308 1.7976931348623157E+308

(*) : REAL est un synonyme de DOUBLE.

48
Types des attributs – chaînes

nom longueur
CHAR(M) Chaîne de taille fixée à M, où 1<M<255, complétée avec
des espaces si nécessaire.
CHAR(M) BINARY Idem, mais insensible à la casse lors des tris et
recherches.
VARCHAR(M) Chaîne de taille variable, de taille maximum M, où
1<M<255, complété avec des espaces si nécessaire.
VARCHAR(M) BINARY Idem, mais insensible à la casse lors des tris et
recherches.
TINYTEXT Longueur maximale de 255 caractères.
TEXT Longueur maximale de 65535 caractères.
MEDIUMTEXT Longueur maximale de 16777215 caractères.
LONGTEXT Longueur maximale de 4294967295 caractères.
DECIMAL(M,D)* Simule un nombre flottant de D chiffres après la virgule et
de M chiffres au maximum. Chaque chiffre ainsi que la
virgule et le signe moins (pas le plus) occupe un
caractère.
(*) : NUMERIC est un synonyme de DECIMAL.

49
Types des attributs – chaînes

 Les types TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT peuvent


être judicieusement remplacés respectivement par TINYBLOB, BLOB,
MEDIUMBLOB et LONGBLOB.

 Ils ne diffèrent que par la sensibilité à la casse qui caractérise la famille des
BLOB. Alors que la famille des TEXT sont insensibles à la casse lors des tris et
recherches.

 Les BLOB peuvent être utilisés pour stocker des données binaires.

 Les VARCHAR, TEXT et BLOB sont de taille variable. Alors que les
CHAR et DECIMAL sont de taille fixe.

50
Types des attributs – dates et heures
nom description
DATE Date au format anglophone AAAA-MM-JJ.
DATETIME Date et heure au format anglophone AAAA-MM-JJ HH:MM:SS.
TIMESTAMP Affiche la date et l’heure sans séparateur : AAAAMMJJHHMMSS.
TIMESTAMP(M) Idem mais M vaut un entier pair entre 2 et 14. Affiche les M premiers
caractères de TIMESTAMP.
TIME Heure au format HH:MM:SS.
YEAR Année au format AAAA.

nom description En cas d’insertion d’un enregistrement en laissant


TIMESTAMP(2) AA vide un attribut de type TIMESTAMP, celui-ci
TIMESTAMP(4) AAMM prendra automatiquement la date et heure de
TIMESTAMP(6) AAMMJJ l’insertion. Contrairement à Unix (où le timestamp
TIMESTAMP(8) AAAAMMJJ est le nombre de secondes écoulées depuis le 1er
TIMESTAMP(10) AAMMJJHHMM janvier 1970), en MySQL, il est une chaîne de
TIMESTAMP(12) AAMMJJHHMMSS format comme indiqué ci-contre.
TIMESTAMP(14) AAAAMMJJHHMMSS
Types des attributs – dates et heures
nom description
DATE Date au format anglophone AAAA-MM-JJ.
DATETIME Date et heure au format anglophone AAAA-MM-JJ HH:MM:SS.
TIMESTAMP Affiche la date et l’heure sans séparateur : AAAAMMJJHHMMSS.
TIMESTAMP(M) Idem mais M vaut un entier pair entre 2 et 14. Affiche les M
premiers caractères de TIMESTAMP.
TIME Heure au format HH:MM:SS.
YEAR Année au format AAAA.

Le format de date AAAA-MM-JJ signifie : année sur 4 chiffre, mois sur 2 chiffres et jour
sur 2 chiffres avec pour séparateur le tiret. Le format d’heure HH:MM:SS signifie :
heure, minute et seconde chacune sur 2 chiffres, avec pour séparateur les deux points.
Dans le format étendu qui comprend la date et l’heure, des deux dernières sont séparées
par un espace. Les formats de date sont assez permissifs car des variantes sont tolérées. Il
est possible de mettre n’importe quel caractère qui ne soit pas un chiffre en guise de
séparateur, il est aussi possible de na pas en mettre, comme cela est affiché par
TIMESTAMP.

52
Opérateurs de l’Algèbre Relationnelle et Arithmétiques

1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
LA PROJECTION
CONTEXTE:
Net_Provence est un réseau d’agences de voyage né en Provence, il y a quelques années, et qui se développe
actuellement dans toute la France. Le système de réservation est géré par un SGBDR. Chaque agence de voyage
dispose, pour un voyage donné, d’un nombre de places limité. Il vous est demandé de d’interroger la base existante
en créant des requêtes en SQL.
PROJECTION
On veut garder les champs
Code_client,, Nom_client
Code_client Nom_client,,Prénom_client
Prénom_client,, Ville_Client uniquement

R1 : Liste des Clients

SELECT Code_client, Nom_client, Prénom_client, Ville_client


FROM Clients;
R2 : Liste des Voyages

SELECT *
FROM VOYAGES;
R3 : Liste des Agences

SELECT *
FROM Agences_de_voyage;
R4 : Liste des Clients code, nom (tri croissant), prénom, ville

SELECT Code_client, Nom_client, Prénom_client, Ville_client


FROM Clients
ORDER BY Nom_client;
R5 : Liste des Agences (tri sur le nom de l’agence)

SELECT *
FROM Agences_de_voyage
ORDER BY Nom_agence;
R6: Liste des clients en remplaçant les intitulés des colonnes nom client en NOMS,
prénom_client en PRENOMS,Adresses et Villes (tri décroissant Villes)

SELECT Nom_client AS Noms, Prénom_client AS Prénoms,


Adresse_rue_client AS Adresses, Ville_client AS Villes
FROM Clients
ORDER BY Ville_client DESC;
Opérateurs de l’Algèbre Relationnelle et Arithmétiques

1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
LA SELECTION
R7 : Liste des clients de Paris (tri croissant sur le nom du client)

SELECT *
FROM Clients
WHERE Ville_client="PARIS"
ORDER BY Nom_client;
R8 : Liste des agences des Bouches du Rhône (tri sur le CP)

SELECT Code_agence, Nom_agence, Adresse_agence,


CP_agence, Ville_agence
FROM Agences_de_voyage
WHERE CP_agence like "13%"
ORDER BY CP_agence;
R9 : Liste des Clients de Paris OU Aix en Provence (tri sur le nom
du client)

SELECT *
FROM Clients
WHERE Ville_client="AIX EN PROVENCE" Or Ville_client="Paris"
ORDER BY Nom_client;
R10: Afficher le nom du client N°18 avec son code postal, ainsi
que le nom du client N° 21 avec son CP

SELECT Nom_client, CP_client


FROM CLIENTS
WHERE Code_client in (18,21);
R11: Liste des voyages à Paris ou Madrid en affichant le nom du voyage
avec la durée et la date du voyage (tri sur la date du départ)

SELECT Nom_voyage, Date_depart, Durée_voyage, Prix_voyage


FROM Voyages
WHERE Nom_voyage="PARIS" Or Nom_voyage="MADRID"
ORDER BY Date_depart;
R12: Afficher la liste des voyages (Nom voyage) sauf le voyage à
destination de ZURICH (tri sur le nom du voyage)

SELECT Nom_voyage
FROM Voyages
WHERE Not Nom_voyage="ZURICH"
ORDER BY Nom_voyage;
R13 :Liste des clients dont le nom commence par la lettre P en changeant l’intitulé de
la colonne par Noms Lettre P (trier sur Nom_client)

SELECT Nom_client AS NOMS_lettre_P


FROM Clients
WHERE Nom_client LIKE (P% )
ORDER BY Nom_client;
R14: Voyages dont la durée >=15 jours (tri croissant sur la durée du
voyage)

SELECT Num_voyage AS Référence_du_voyage, Nom_voyage AS


Destination_du_voyage, Durée_voyage AS Durée_des_voyages_jours
FROM Voyages
WHERE Durée_voyage>=15
ORDER BY Durée_voyage;
R15: Liste des voyages proposés en 2004 dont la durée est >= 9 jours
(tri croissant sur la propriété date_départ)

SELECT Num_voyage, Nom_voyage, Date_depart, Durée_voyage


FROM Voyages
WHERE Date_depart Between "2004-01-01" AND "2004-12-31" AND Durée_voyage>=9
ORDER BY Date_depart;
R16: Liste des voyages dont le prix est compris entre 1000€ et 2400€
(tri croissant sur la date_départ)

SELECT Nom_voyage, Date_depart, Durée_voyage, Prix_voyage


FROM Voyages
WHERE Prix_voyage BETWEEN 1000 AND 2400
ORDER BY Date_depart;
Opérateurs de l’Algèbre Relationnelle et Arithmétiques

1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
Les Calculs
R17: Prix du voyage le plus cher (afficher uniquement cette donnée)

SELECT MAX(Prix_voyage) AS Prix_du_voyage_le_plus_cher

FROM Voyages;
R18: Prix du voyage le plus faible (afficher uniquement cette donnée)

SELECT Min(Prix_voyage) AS PRIX_DU_VOYAGE_LE_PLUS_BAS

FROM Voyages;
R19: Nombre de clients (le résultat doit être stocké sous l’intitulé
Nombre de clients Net_Provence)

SELECT COUNT(Code_client) AS Nombre_de_clients_Net_provence

FROM Clients;
R20: Nombre de voyages

SELECT COUNT(Num_voyage) AS Nombre_de_Voyages_Net_provence

FROM Voyages;
R21 : Nombre total d’Agences

SELECT COUNT(Code_agence) AS Nombre_total_Agences

FROM Agences_de_voyage;
R22: Prix moyen des voyages Net_Provence

SELECT AVG(Prix_voyage)AS PRIX_MOYEN_DES_VOYAGES_NET_PROVENCE

FROM Voyages;
R23: Prix moyen des voyages en fonction de la durée des voyages

SELECT Durée_voyage, AVG(


AVG(Prix_voyage)
) AS Prix_moyen_des_voyages

FROM Voyages

GROUP BY Durée_voyage;
Opérateurs de l’Algèbre Relationnelle et
Arithmétiques

1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
LA JOINTURE
R24: NB de places proposées par voyage et par agence

SELECT Nom_agence, num_voyage, nombre_de_places_proposées_par_agence

FROM Agences_de_voyage, nombre_de_places_proposées_par_agence

WHERE Agences_de_voyage.Code_agence=nombre_de_places_proposées_par_agence.code_agence;
R25: Montant dû par client

SELECT Nom_client, Prénom_client, Adresse_rue_client, CP_client, Ville_client, Num_reservation,


date_réservation, Nom_voyage, Date_depart, Prix_voyage, Nb_places_reservées, Tx_de_remise,
(Prix_voyage*(1-Tx_de_remise))*Nb_places_reservées AS Montant_dû

FROM Clients, Réservations, lignes_réservation, Voyages

WHERE Clients.Code_client=Réservations.Code_client And


Réservations.Num_réservation=Lignes_réservation.Num_reservation And
Voyages.Num_voyage=Lignes_réservation.Num_voyage;
R26: NB total de places proposées par voyage (trier sur le total)

SELECT Num_voyage AS Référence_du_voyage_Net_provence, Nom_voyage AS


Nom_du_voyage, Sum(Nombre_de_places_proposées_par_agence) AS
places_proposées_par_voyage
FROM nombre_de_places_proposées_par_agence,voyages
WHEREVoyages.Num_voyage=nombre_de_places_proposées_par_agence.Numero_voyage
GROUP BY Num_voyage, Nom_voyage
ORDER BY Sum(Nombre_de_places_proposées_par_agence);
R27: Réservations du 01/01/2003 au 31/01/2003

SELECT Nom_client AS Nom_du_Client, Prénom_client AS Prénom, Date_réservation AS


Réservations_de_janvier
FROM Clients, Réservations
WHERE Clients.Code_client=Réservations.Code_client And Date_réservation>= "2003-01-01"
And Date_réservation<= "2003-01-31"
R28 :Total des places proposées par agence

SELECT Nom_agence, SUM(Nombre_de_places_proposées_par_agence) AS Total_places_par_agence


FROM Agences_de_voyage, Nombre_de_places_proposées_par_agence
WHERE Agences_de_voyage.Code_agence=Nombre_de_places_proposées_par_agence.code_agence
GROUP BY Nom_agence;
90 11/05/2013

Vous aimerez peut-être aussi