Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours BDD F

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 95

02/11/2022

P ro f e s s e u r S o f i a B e l k h a l a
Les bases de Données
sbelkhala@um6ss.ma

2 ème a n n é e c y c l e i n g é n i e u r

Année Scolaire 2022/2023


Pr S.Belkhala 1

Qu’est ce que l’informatique ?

L’informatique est la science du traitement automatisé


de l’information

• Science : théorie (mathématique, logique) + expérience.


• Traitement automatisé : algorithmes.
• Information : éléments de connaissances.

Pr S.Belkhala 2

1
02/11/2022

De l’information aux données

Une donnée est une information numérisée

o Valeurs numériques o Son/Musique o Vidéos

o Textes o Signaux o Images

Les données décrivent/modélisent des objets réels

o Données sur personnes o Données sur des produits


o Données sur des films o Communications téléphoniques

Pr S.Belkhala 3

Les données

• Toute information doit être stockée sous forme de


données pour pouvoir être manipulé

• Un ensemble de données est un modèle numérique


d’un phénomène du monde réel

Pr S.Belkhala 4

2
02/11/2022

Les données : Stockage

o Scanner les bons de commandes

o Copier les données sur Word

o Copier les données sur Excel

o Copier les données dans une base de données

PPr r S S. B
. Be el kl kh ha al al a 55
5

Les données : Stockage

PPr r S S. B
. Be el kl kh ha al al a 66
6

3
02/11/2022

Les données : Exploitation

Les données stockées vont nous permettre de :


• Vérifier une commande lors de son enregistrement:
§ le client est-il connu ?
§ son adresse a-t-elle changé ?
§ les produits commandés sont-ils répertoriés ?

• Produire les factures

• Calculer le chiffre d'affaire mensuel

• Préparer le réapprovisionnement
Pr S.Belkhala 77
7

D o n n é e s : P ro b l è m e d e c o m p l e x i t é
Les données stockées peuvent être :

§ des données multimédias,

§ des données textuelles,

§ des données spatiales (données GPS par exemple),

§ des données historiques (plusieurs lignes par entité),

§ des données semi-structurées.


Pr S.Belkhala 88
8

4
02/11/2022

D o n n é e s : P ro b l è m e d e v o l u m e

§ Une base de données peut contenir des milliards de lignes de données


reparties dans des dizaines de millier de tables.

Comment garantir l'accessibilité de ces données, leur


protection contre les incidents, des temps d'accès
satisfaisants ?

Pr S.Belkhala 99
9

D o n n é e s : P ro b l è m e d e m a i n t e n a n c e

Les données sont en constante évolution:

§ Nouvelles données

§ Changement de la description des données

§ Données obsoletes

Comment préserver les informations et les


programmes utilisateurs ?

Pr S.Belkhala 10
10

10

5
02/11/2022

D o n n é e s : P ro b l è m e d e s t r u c t u re

Les données sont souvent distribuées:


§ Sur plusieurs sites

§ Entre plusieurs utilisateurs

Comment garantir la cohérence, la protection et


l’accessibilité des données?

Pr S.Belkhala 11
11

11

D o n n é e s : P ro b l è m e d e c o h é re n c e

Prenons l’exemple des données dans le tableau suivant :

Pr S.Belkhala 12

12

6
02/11/2022

P ro b l è m e d e c o h é re n c e

Les données du tableau sont mal structurée :

§ Problèmes de mises à jour (modification, suppression)

§ Erreurs dans les calculs (moyenne, somme, …)

Pr S.Belkhala 13
13

13

La gestion des données

Historiquement, deux approches se sont succédées pour gérer les données :

§ Approche Fichiers

§ Approche Bases de Données

Pr S.Belkhala 14
14

14

7
02/11/2022

L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
Soient les tableaux suivants, chaque tableau représente est enregistré sur un fichier
séparément

PPr r S S. B
. Be el kl kh ha al al a 15
15
15

L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r

Mise à jour

PPr r S S. B
. Be el kl kh ha al al a 16
16
16

8
02/11/2022

L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r

Ajout d’un nouveau


fichier pour compléter
les données

Pr S.Belkhala 17
17

L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r

Ressources
Direction Humaines
Application
Application Paie
Statistiques
Données sur le Données sur le
personnel personnel
Echanges
d’informations ?
Service
Service Financier
Commercial
Application Application Paie
Gestion
Données sur les clients, Données sur le
fournisseurs….. personnel, factures…
Pr S.Belkhala 18
18

18

9
02/11/2022

L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
• Inconvénients :

§ Les données d'une application sont stockées sous forme de fichiers.

§ Toute application a donc ses propres fichiers.

§ Or dans la réalité, plusieurs applications peuvent avoir besoin des mêmes informations

(données) ce qui oblige les développeurs d'avoir plusieurs versions d'un même fichier.

Risque d’incohérence des données?

Pr S.Belkhala 19
19

19

L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r

• Exemple

Services Applications Données (Fichiers)


Direction Statistiques Personnel
Formation, absentéisme
Service Paie Personnel
Ressources humaines
Service Commercial Gestion Commerciale Clients,
fournisseurs,
factures

Service Financier Facturation, statistiques Fournisseurs,


Factures,
Employés,

Pr S.Belkhala 20
20

10
02/11/2022

A p p ro c h e f i c h i e r : E x e m p l e

Service Description des données (fichiers)


Direction Numéro, civilité, Nom, prénom, adresse, téléphone
Personnel
Ressources humaines Numéro, civilité, Nom, prénom, adresse, téléphone,
Personnel date embauche
Service COMMERCIAL Numéro, civilité, Nom, prénom, adresse, téléphone,
Clients secteur
Service FINANCIER Numéro, civilité, Nom, Adresse, téléphone
Employes

1 Personnel = 1 Client = 1 Employé


défini de plusieurs façons selon les services et selon les applications

Pr S.Belkhala 21
21

21

A p p ro c h e f i c h i e r : E x e m p l e

Service Données dans les fichiers


Direction / Personnel 1709, Monsieur, RAHMA , Clément, Paris, 0145570679

Service Commercial 1709, M, RAHMA, Clément, Paris 19è, 0614560641, Nord Est

Ressources Humaines 1709, M, RAHMA, Clément, Paris 19è, 0614014575, 17/09/1958

Service Financier 1709, Mlle, RAHMA, C.

Chaque service enregistre les données sur le fichier qui le concerne d’une
manière différente

Risque d’incohérence des données

Pr S.Belkhala 22
22

11
02/11/2022

L a g e s t i o n d e s d o n n é e : A p p ro c h e B a s e d e d o n n é e s

Une Base de Données est un ensemble d’informations qui doit être:

§ Exhaustif
§ Non redondant
§ Structuré
§ Persistant

Pr S.Belkhala 23
23

23

L a g e s t i o n d e s d o n n é e : A p p ro c h e B a s e d e d o n n é e s

Ressources
Direction Humaines
Application
Statistiques Application Paie

Service
Commercial Service Financier
Application Application Paie
Gestion

Données sur les


EMPLOYES, CLIENTS, FOURNISSEURS, FACTURES

Pr S.Belkhala 24
24

24

12
02/11/2022

L a g e s t i o n d e s d o n n é e : A p p ro c h e B a s e d e d o n n é e s
• Avantages :

§ Intègre toutes les données pertinentes à un système dans une même structure que l'on
nomme une Base de Données
§ Assure la gestion de ces données par un logiciel dit Système de Gestion de Bases de
Données (SGBD)
§ Offre une vision partielle (vue) de l'ensemble des données à chaque utilisateur.
§ Assure le partage des données entre les différents utilisateurs.
Description UNIQUE du Personnel Valeur UNIQUE de l’information

1 Personnel = 1 Commercial = 1 Employé


défini d’une seule façon

Pr S.Belkhala 25
25

25

A p p ro c h e B a s e d e d o n n é e : Av a n t a g e s

Service Données (vue utilisateur)


Direction / Personnel 1709, Monsieur, RAHMA Clément, Paris 15è, 0145570679
Service Commercial 1709, Monsieur, RAHMA Clément, Paris 15è, 0614560641,
Nord Est
Service Ressources 1709, Monsieur, RAHMA Clément, Paris 15è,
Humaines 0145570679, 0614560641, 17/09/1958
Service Financier 1709, Monsieur, RAHMA Clément

Il n’y a plus de risque d’incohérence

Pr S.Belkhala 26
26

26

13
02/11/2022

Système de Gestion de Base de Données : Définition

§ Un Système de Gestion de Base de Données (SGBD) est un logiciel de


manipulation des bases de données

§ Il doit pouvoir :

o Ecrire
o Modifier
o Interroger
o Administrer

Pr S.Belkhala 27
27

27

Système de Gestion de Base de Données : Rôle

• Intégrer toutes les données pertinentes à un système dans une même


structure (la Base de Données)

• Offrir une vision (vue) partielle de l'ensemble des données à chaque


utilisateur. Cette vision correspond aux besoins de chacun

• Assurer le partage des données entre les différents utilisateurs

Pr S.Belkhala 28
28

28

14
02/11/2022

Système de Gestion de Base de Données : Objectifs

• Indépendance physique

• Indépendance logique

• Manipulations des données par des non informaticiens

• Efficacité des accès aux données

• Administration centralisée des données

• Non redondance des données

Pr S.Belkhala 29
29

29

Système de Gestion de Base de Données : Objectifs

• la Cohérence des données

• le Partage des données

• la Sécurité des données

• la Résistance aux pannes

Pr S.Belkhala 30
30

30

15
02/11/2022

Système de Gestion de Base de Données : Niveaux

Les SGBD reposent sur trois niveaux d’abstraction qui :

• Assurent l’indépendance logique et physique des données

• Autorisent la manipulation de données

• Garantissent l’intégrité des données

• Optimisent l’accès aux données.

La description de ces trois niveaux et la correspondance entre eux est faite à


travers le dictionnaire de données.
31
Pr S.Belkhala 31
31

31

Système de Gestion de Base de Données : Niveaux


Le niveau externe
Ce niveau détermine le schéma externe qui contient les vues des utilisateurs
sur la base de données c’est-à-dire le sous-ensemble de données accessibles
ainsi que certains assemblages d’information et éventuellement des
informations calculées.

Il peut donc exister plusieurs schémas externes représentant différentes vues


sur la base de données avec des possibilités de recouvrement.

32
Pr S.Belkhala 32
32

32

16
02/11/2022

Système de Gestion de Base de Données : Niveaux

Le niveau conceptuel
Il correspond à la vision générale des données, indépendante des
applications individuelles et de la façon dont les données sont stockées.

Cette représentation est en adéquation avec le modèle de données utilisé.

Le niveau conceptuel est défini au travers du schéma conceptuel.

33
Pr S.Belkhala 33
33

33

Système de Gestion de Base de Données : Niveaux

Le niveau physique

Il regroupe l e s s e r v i c e s de gestion de l a mémoire secondaire.

Il s’appuie s u r un système de gestion de fichiers pour définir l a politique de


stockage a i n s i que l e placement des données.

Cette politique est définie e n fonction des volumes de données traitées et e n


fonction de l’environnement matériel disponible.

34
Pr S.Belkhala 34
34

34

17
02/11/2022

S y s t è m e d e G e s t i o n d e B a s e d e D o n n é e s : A rc h i t e c t u re s

A rc h i t e c t u re c e n t r a l i s é e

35
Pr S.Belkhala 35
35

35

S y s t è m e d e G e s t i o n d e B a s e d e D o n n é e s : A rc h i t e c t u re s

A rc h i t e c t u re d i s t r i b u é e

Pr S.Belkhala 36
36

36

18
02/11/2022

Bases de données : Conception& Modélisation

Une BD est un modèles d’un ensemble de


données

Un modèle est un ensemble de concepts BD:


• besoins fonctionnels de l’application (Quoi ?)
• Facteurs de temps et d'espace (Qui ? , Où ?, Quand ?)
• Règles permettant de décrire des données.

Pr S.Belkhala 39
39

39

Modèles de base des données

Il existe de nombreux types de modèles de bases de données. Parmi les plus


courants :
• Modèle de base de données hiérarchique
• Modèle relationnel
• Modèle réseau
• Modèle de base de données orientée objet
• Modèle entité-association
• Modèle document
• Modèle entité-attribut-valeur
• Schéma en étoile
• Le modèle relationnel-objet, qui associe les deux éléments qui composent
son nom

Pr S.Belkhala 40

40

19
02/11/2022

Modèles de base des données

• Modèle relationnel

• Le modèle le plus courant, appelé modèle


relationnel, trie les données dans des tables, que l'on
appelle aussi des relations, dont chacune se
compose de colonnes et de lignes.
• Le modèle tient également compte des types de
relations entre ces tables, notamment les relations
un-à-un, un-à-plusieurs et plusieurs-à-plusieurs.

Pr S.Belkhala 41

41

Modèles de base des données


• Modèle hiérarchique
• Le modèle hiérarchique organise les données dans une structure arborescente,
où chaque enregistrement dispose d'un seul parent (racine).
• Les enregistrements frères et sœurs sont triés dans un ordre particulier. Cet
ordre est suivi pour le stockage physique de la base de données. Ce modèle
convient à la description de nombreuses relations du monde réel.

Pr S.Belkhala 42

42

20
02/11/2022

Modèles de base des données

• Modèle réseau
Le modèle réseau est une extension du modèle hiérarchique
qui autorise des relations plusieurs-à-plusieurs entre des
enregistrements liés, ce qui implique plusieurs
enregistrements parents. Un enregistrement peut être un
membre ou un enfant dans plusieurs ensembles, ce qui
permet à ce modèle de traduire des relations complexes.

Pr S.Belkhala 43

43

Modèles de base des données

• Modèle entité-association
Ce modèle reproduit les relations entre les entités du monde réel de façon très similaire au
modèle réseau, mais il n'est pas lié aussi directement à la structure physique de la base de
données. Il est souvent utilisé pour la création d'une base de données d'un point de vue
conceptuel.

Pr S.Belkhala 44

44

21
02/11/2022

Bases de données : Conception& Modélisation

Les étapes de modélisation d’une base de données :

1. Étape conceptuelle : Modèle Entité-Association E/A

2. Étape logique : Modèle Relationnel

3. Étape physique : Langages (SQL, PL/SQL, Java…)

Pr S.Belkhala 45
45

45

Bases de données : Conception& Modélisation

Schéma :

Pr S.Belkhala 46
46

22
02/11/2022

Bases de données : Conception& Modélisation


Modèle Entité – Association

Pr S.Belkhala 47
47

Modèle Entités Association

• Le modèle Entité-association est né dans les années soixante-dix de la nécessité de décrire


les besoins en information des utilisateurs d’une base de données d’une manière
complètement indépendante des technologies de mise en oeuvre de celle-ci.

• Partant de l’idée qu’une base de données doit être une description fidèle du domaine
d’application, on envisage de relever dans celui-ci les concepts principaux et leurs
propriétés. L’identification et la description de ces concepts utilisent un modèle, c’est-à-
dire une manière de voir les choses, auquel on associe une notation graphique.

Pr S.Belkhala 48
48

23
02/11/2022

Modèle Entités Association

• La manière de voir les choses, ou vision du monde, du modèle Entité-association est très
simple, voire simpliste. Elle consiste à structurer le monde en classes d’entités, dotées de
propriétés et en association les unes avec les autres. Cette simplicité offre deux avantages
majeurs : elle met ce modèle à la portée des utilisateurs/modélisateurs peu expérimentés et
elle se traduit aisément en un schéma de base de données. Néanmoins, les modélisateurs
plus exigeants auront besoin d’un modèle plus riche et de méthodes plus puissantes, qui
seront décrits plus loin.

Pr S.Belkhala 49
49

Modèle Entités Association

On veut modéliser une Base de Données (BD) qui contient les personnes qui
possèdent des véhicules :

• Quelle est la structure de la BD la plus adéquate ?

• Une ou plusieurs « tables » ?

• Quelles « colonnes » ?

Pr S.Belkhala 50
50

24
02/11/2022

Modèle Entités Association : les Entités


• Une entité correspond à un ensemble homogène d’informations qui correspondent au
même « objet » à informatiser. Cette entité a un nom unique afin de la manipuler
facilement. Plus tard dans l’analyse, l’entité se transforme en table.
• Dans le contexte de l’assurance automobile, on peut cerner un domaine d’application dans
lequel on repère des clients, des véhicules, des contrats et des accidents. On définit
naturellement quatre types d’entités qu’on nommera CLIENT, VEHICULE, CONTRAT et
ACCIDENT
Client Vehicule Contrat Accident

Pr S.Belkhala 51
51

Modèle Entités Association : les Attributs

• Un attribut est une caractéristique d'une entité susceptible d'être enregistrée dans la base de
données
• Chaque client est caractérisé par un numéro, un nom et une adresse. On modélisera ces
faits en dotant le type d’entités CLIENT des attributs

Client Vehicule Contrat Accident

NumClient NumVeh NumContrat NumAccident


Nom Marque Type Descriptif
Adresse Modèle Date Date

Pr S.Belkhala 52
52

25
02/11/2022

Modèle Entités Association : les Attributs

• On spécifiera le type de chaque attribut : numérique, caractère, date, etc. ainsi que sa
longueur

Vehicule

NumVéh: char (16)


Marque: char (30)
Modèle: char (30)
Année: num (4)
Cylindrée: num (6)

Pr S.Belkhala 53
53

Modèle Entités Association : les Attributs

• Il se peut que la valeur d’un attribut ne soit pas connue au moment où on décrit une entité, de
sorte que cet attribut n’a pas de valeur pour certaines entités. On le déclarera facultatif. Sinon,
cet attribut est obligatoire. Un attribut facultatif est indiqué par le symbole de cardinalité [0-
1], qui indique qu’à toute entité est associée de 0 à 1 valeur (figure 12.5). Les attributs
obligatoires sont caractérisés par une cardinalité [1-1], mais qui est implicite, et donc n’est
pas montrée dans les schémas.
Accident

NumAcc
DateAcc
Montant[0-1]

Pr S.Belkhala 54
54

26
02/11/2022

Modèle Entités Association : Les identifiants

Identifiants Primaire et identifiants secondaires

• Parmi les identifiants d’une table, l’un est choisi comme le plus représentatif et sera
dès lors déclaré identifiant primaire. Les autres sont alors des identifiants secondaires
de la table. En règle générale, toute table possède un identifiant primaire et zéro, un
ou plusieurs identifiants secondaires5. Les lignes d’une table qui possède au moins un
identifiant forment un ensemble et sont donc distinctes.

Pr S.Belkhala 55
55

Modèle Entités Association : Les Associations


une association sert à préciser et expliciter le lien entre les entités. Une association se fait
entre 2 entités minimum mais il n’y a pas de maximum
Une association (ou une relation) est un lien sémantique défini entre deux ou plusieurs
entités, identifié par rapport aux entités participantes, éventuellement décrit par un ensemble
d'attributs.
Entité Association Entité
Personne Posséder Véhicule

Personne Véhicule
NuméroDeSécuritéSociale NuméroD’Immatriculation
Nom Posséder Marque
Adresse Modèle
DateDeNaissance Puissance
Pr S.Belkhala 56
56

27
02/11/2022

Modèle Entités Association : Les Associations

Des PERSONNES décrites par :


Des VEHICULES décrits par :
le Numéro de sécurité sociale, le Numéro d’immatriculation,
le nom, l’adresse, la date de naissance … la marque, le modèle, la puissance …
{P1, Clément, Paris, … {V1, Peugeot, 407, …
P2, Traifor, Paris, … V2, Peugeot, 1007, …
P3, Legrand, Nice, … V3, Mercedes, M, …
P4, Clémence, Lyon, … V4, BMW, X5, …}
P5, Clément, … }

La personne P possède le véhicule V ;


Le véhicule V est possédé par la personne P

Pr S.Belkhala 57
57

Modèle Entités Association : Les Associations


• Un type d'association (ou une structure d'association) est une abstraction représentant
une famille d'associations, décrite par un ensemble d'attributs, identifiant de façon unique
chacune des associations par les identifiants des entités participantes.
Par convention, un type d'association est représenté par un ovale divisé en deux parties :
• la partie supérieure contient le nom du type d'association,
• la partie inférieure contient éventuellement la liste des attributs qui décrivent le type (autres
que les identifiants des entités participantes).
Nom du Type d’Association
Attribut-1
Exemples : Acheter Posséder Attribut-2
DateAchatV Attribut-n

58
Pr S.Belkhala 58
58

28
02/11/2022

Modèle Entités Association : Les Associations


• Les types d’association

Nom du Type Nom du Type


d’Association d’Association
Attribut-1
Attribut-n
Association non porteuse de données ;
Association porteuse de données
Elle est sans attribut

Pr S.Belkhala 59
59

Modèle Entités Association : Les Associations


• Les types d’association
• Un type d'association de dimension 2 est dit binaire. Il est dit ternaire si la dimension
est de 3 et plus généralement n-aire pour la dimension n (n>3).

• Un type d'association est dit réflexif (récursif) si elle relie plusieurs occurrences d’un
même type d'entité.

60
Pr S.Belkhala 60
60

29
02/11/2022

Modèle Entités Association : Les Associations


• Exemple

Pr S.Belkhala 61
61

Modèle Entités Association : Les Cardinalités


La cardinalité d'une patte reliant un type association et un type entité précise le nombre de
fois minimal et maximal d'interventions d'une entité du type entité dans une association du
type association. La cardinalité minimale doit être inférieure ou égale à la cardinalité
maximale.
Personne Véhicule
NuméroDeSécuritéSociale NuméroD’Immatriculation
Nom Posséder
Marque
DateD’Achat
Adresse Modèle
DateDeNaissance Puissance

Cardinalité :
Une personne peut posséder un ou 0,1 / 1,1 / 0,n / 1,n Un véhicule est possédé par une et
plusieurs véhicules 1,n une seule personne 1,1
Pr S.Belkhala 66

66

30
02/11/2022

Modèle Entités Association : Les Cardinalités

1,1 : Une occurrence du type entité ne peut exister que si elle est impliquée dans exactement
(au moins et au plus) une association.
1,n : Une occurrence du type entité ne peut exister que si elle est impliquée dans au moins une
association.

0,1 : une occurrence du type entité peut exister tout en n'étant impliquée dans aucune
association et peut être impliquée dans au maximum une association.
0,n : c'est la cardinalité la plus ouverte ; une occurrence du type entité peut exister tout en
n'étant impliquée dans aucune association et peut être impliquée, sans limitation, dans plusieurs
associations

Pr S.Belkhala 67
67

67

Modèle Entités Association : Les Cardinalités

Pr S.Belkhala 68
68

68

31
02/11/2022

Bases de données : Conception& Modélisation


Modèle Relationnel

Pr S.Belkhala 69
69

Modèle Relationnel

• Le schéma conceptuel exprime clairement les structures d’information à représenter, mais


il n’est pas accepté tel quel par l’ordinateur. Il est donc nécessaire de traduire ce schéma
en structures techniques de tables et de colonnes, c’est-à-dire en concepts
compréhensibles et gérables par des outils disponibles (SGBD)

• Le modèle relationnel des données est une représentation sous forme de tables des
données résultante de la modélisation conceptuelle des données

• Le grand apport de ce modèle est la normalisation des données.

Pr S.Belkhala 71
71

32
02/11/2022

Modèle Relationnel

• Ce modèle, qui est un modèle de description des informations, se développe le plus


actuellement pour des raisons de simplicités de représentation.
• Basé sur la théorie des ensembles et les mathématiques relationnelles, il permet
d’appliquer aux données tous les opérateurs ensemblistes et relationnels

• Il est basé sur l’algèbre relationnelle et consiste en une projection mathématique d’un
groupe composé d’entités, associations, cardinalités en un groupe composé uniquement
de tables.

Pr S.Belkhala 72
72

Modèle Relationnel

• C’est un modèle intermédiaire entre le modèle conceptuel de données (Humain) et le


modèle physique des données (machine).

• C’est un modèle composé uniquement de tables.

• Une table ou relation est définie comme un tableau de données où on associe un nom à
chaque colonne définissant les attributs tandis que les lignes sont les occurrences.

Pr S.Belkhala 73
73

33
02/11/2022

Modèle Relationnel

• Le modèle relationnel repose sur 6 notions principal :

• Domaine
• Uplet
• Attributs
• Clé primaire
• Relation
• degré

Pr S.Belkhala 74
74

Modèle Relationnel

• Domaine : Le domaine représente un ensemble fini de valeur possible pour un attribut


donné auquel on définit aussi un ensemble d’opérateurs pouvant être appliqués aux valeurs
du domaine.

• Uplet : un enregistrement (une ligne) dans la base de données.

• Attributs : la valeur associée à un des triplets d’un uplet.

• Clé primaire :un ensemble des données permettant d’indexer chaque ligne d’une table
donnée de manière différenciée
• Degré: le nombre d’attributs dans une relation.

Pr S.Belkhala 75
75

34
02/11/2022

Modèle Relationnel

• Relation: Une relation (ou table) est un élément constitué d’un entête et
d’un corps. L’entête est un ensemble des noms d’attributs et de leurs
domaines et le corps est un ensemble de uplets ayant le même entête que la
relation.

Constructeur Modèle Année

Peugeot 208 2019

Peugeot 3008 2020

Kia Ceed 2021

Pr S.Belkhala 76
76

Modèle Relationnel
• Relation
• Une relation est caractérisée par :

o un nom R
o un ensemble d'attributs A1, A2, … An

• Notation d'une relation : R (A1, A2, … An)

• Exemple :

Voiture (Constructeur, Modèle, année)

Pr S.Belkhala 77
77

35
02/11/2022

Modèle Relationnel

• Relation

• Lors de l'ajout d'un champ à la structure d'une table, il faut obligatoirement

lui donner un nom et un type de champ.

• Selon le type de champ, il faut aussi indiquer au SGBD le nombre de

caractères que vous voulez préserver dans le champ.

Pr S.Belkhala 78
78

Modèle Relationnel

• Clé primaire
Est une contrainte d'unicité, composée d'une ou plusieurs colonnes, et qui permet
d'identifier de manière unique chaque ligne de la table.

•Contrainte d'unicité : ceci ressemble fort à un index UNIQUE.


•Composée d'une ou plusieurs colonnes : comme les index, les clés peuvent donc
être composites.
•Permet d'identifier chaque ligne de manière unique : dans ce cas, une clé primaire
ne peut pas être NULL.

Pr S.Belkhala 79
79

36
02/11/2022

Modèle Relationnel
• Clé primaire

• Chaque table possède obligatoirement une clé

• Une clé primaire est un champ, ou une série de champs, qui aide à

différencier un enregistrement de tous les autres de la table. Comme

exemple on peut citer le CIN pour un citoyen, un ISBN pour un livre, Un

numéro pour un passeport,…..

Pr S.Belkhala 80
80

Modèle Relationnel

• Clé étrangère

• Attribut(s) constituant la clé primaire d’une autre relation.

• Permet d’assurer la cohérence de la base ;

• Les clés étrangères permettent les associations entre relations (champs de

jointure).

Pr S.Belkhala 81
81

37
02/11/2022

Modèle Relationnel

• Clé étrangère
Les clés étrangères, qui permettent de gérer des relations entre plusieurs tables, et
garantissent la cohérence des données.

C’est par les clés étrangères qu’on peut mettre en relation des lignes dans des tables distinctes.
Pr S.Belkhala 82
82

Modèle Relationnel
• Clé étrangère
Soit les deux relations suivantes :
Etudiant (N° Etud, Nom, Prénom, #Code Filière)
Filière (Code Filière, Libellé)

Le fait de déclarer le code de la filière dans la relation Etudiant, nous avons automatiquement

appliqué une contrainte d’intégrité référentielle. Ceci garantit la cohérence de la base.

Pr S.Belkhala 83
83

38
02/11/2022

Modèle Relationnel

• Schéma résumant les différente notions :

Pr S.Belkhala 84
84

Règles de passage du modèle E/A au Modèle Relationnel

Tout type d’entité sera traduit en une table (relation)

ENT ITE E

Attribut1 Table/Relation E ( Attribut1, Attribut2,


Attribut3 )
Attribut2

Attribut3

85 85
Pr S.Belkhala

85

39
02/11/2022

Règles de passage du modèle E/A au Modèle Relationnel


Exemple :

Modèle Entité Association Modèle Relationnel

Pr S.Belkhala 86
86
86

Règles de passage du modèle E/A au Modèle Relationnel

• Association (X,N) (X,1)


Une Association de type 1:N (c’est à dire qui a les cardinalités maximales

positionnées à « 1 » d’une côté de l’association et à « n » de l’autre côté) se

traduit par la création d’une clé étrangère dans la relation correspondante à

l’entité côté « 1 ».

Cette clé étrangère référence la clé primaire de la relation correspondant à

l’autre entité.

Pr S.Belkhala 87
87
87

40
02/11/2022

Règles de passage du modèle E/A au Modèle Relationnel

• Association (X,N) (X,1)


Exemple :

Pr S.Belkhala 88
88
88

Règles de passage du modèle E/A au Modèle Relationnel

• Association (X,N) (X,N)

Une association de type N:N (c’est à dire qui a les cardinalités maximales

positionnées à « N » des 2 côtés de l’association) se traduit par la création

d’une table dont la clé primaire est composée des clés étrangères référençant

les relations correspondant aux entités liées par l’association.

Les éventuelles propriétés de l’association deviennent des attributs de la

relation.
Pr S.Belkhala 89
89
89

41
02/11/2022

Règles de passage du modèle E/A au Modèle Relationnel

• Association (X,N) (X,N)

Tout type d’association sera traduit en une relation (table)

ENTITE E ENTITE E2 ENTITE E ENTITE E2


Attribut1 ASSOCIATION R Attribut12 Attribut1 ASSOCIATION R Attribut12
Attribut2 0,n 0,n Attribut22 Attribut2 0,n 1,n Attribut22
Attribut3 Attribut32 Attribut3 Attribut32

ENTITE E ENTITE E2 ENTITE E ENTITE E2


Attribut1 ASSOCIATION R Attribut12 Attribut1 ASSOCIATION R Attribut12
1,n 0,n Attribut22 Attribut2 1,n 1,n Attribut22
Attribut2
Attribut3 Attribut32 Attribut3 Attribut32

Table/Relation R ( Attribut1­, Attribut12 ­, …)

90 90
Pr S.Belkhala

90

Règles de passage du modèle E/A au Modèle Relationnel

• Association (X,N) (X,N)


Exemple

Pr S.Belkhala 91
91

42
02/11/2022

Règles de passage du modèle E/A au Modèle Relationnel


• Association (X,N) (X,N)
Exemple
Si le nom du MCD n’est pas significatif, on peut renommer le nom de la table.
Dans notre exemple, plutôt que d’appeler la table « CONCERNE », on la nommera «
LIGNE_DE_COMMANDE ».
LIGNE_DE_COMMANDE (#numCommande , #refProduit , quantité)
• #numCommande , #refProduit : clé primaire composée de la table CONCERNE
• #numCommande : clé étrangère qui référence numCommande de la table COMMANDE
• #refProduit : clé étrangère qui référence refProduit de la table PRODUIT

Pr S.Belkhala 92
92
92

Règles de passage du modèle E/A au Modèle Relationnel

• Association (1,1) (1,1)

Cas de l’association 1,1 une association dont les cardinalités maximales sont à
1 de chaque côté

Pr S.Belkhala 93
93
93

43
02/11/2022

Règles de passage du modèle E/A au Modèle Relationnel

• Association (1,1) (1,1)

Si fonctionnellement, le marin est le plus important…


MARIN(numMarin , nomMarin , numVoilier , nomVoilier)
Clé primaire : numMarin

OU

Si fonctionnellement, le voilier est le plus important…


VOILIER(numVoilier , nomVoilier , numMarin , nomMarin)
Clé primaire : numVoilier

Pr S.Belkhala 94
94
94

E x e rc i c e

Une société loue des photocopieurs à ses clients. La location d’un photocopieur est
obligatoirement assortie d’un contrat de maintenance, qui prévoit l’intervention d’un
technicien dans les 24 h. Pour améliorer la gestion des interventions

Pr S.Belkhala 95
95
95

44
02/11/2022

Pr S.Belkhala 96
96
96

E x e rc i c e

Une casse automobile souhaite gérer son stock de pièces. Chaque pièce est identifiée par une
référence, une catégorie (carosserie, mécanique, électricité, etc.), une date de récupération et
un prix de vente. On souhaite également pouvoir établir une correspondance entre les pièces et
les véhicules pour lesquels elles conviennent, ces véhicules étant repérés par marque, modèle
et année.
Etablir le MCD adéquat dans les deux hypothèses suivantes :
1.toutes les pièces d'une même référence possèdent un prix unique
2.chaque pièce possède un prix propre.

Pr S.Belkhala 97
97
97

45
02/11/2022

Corrigé

Pr S.Belkhala 98

98

Pr S.Belkhala 99

99

46
02/11/2022

Pr S.Belkhala 100

100

Bases de données : Conception& Modélisation


Langage SQL

Pr S.Belkhala 101
101

47
02/11/2022

I n t ro d u c t i o n a u S Q L

Plusieurs langages permettant de définir, de manipuler et de contrôler les données


relationnelles ont été proposés :
• QUEL (QUEry Language)
• QBE (Query By Example)
• SQL (Structured Query Language)

• Le langage SQL est basé sur un ensemble d’opérations à effectuer sur des tables.

• Ces opérations constituent d’une part l’algèbre relationnelle et d ’autre part des
opérateurs très utiles tels que le tri et les calculs (agrégats).

Pr S.Belkhala 102

102

I n t ro d u c t i o n a u S Q L

• Les Systèmes de Gestion de Bases de Données (SGBD) présentent une interface


externe sous forme de langage de requêtes.

• Celui-ci permet de spécifier les données à sélectionner ou à mettre à jour.

• Il n’est pas nécessaire de spécifier comment retrouver les informations (le SGBD
s’en charge) mais seulement de quelles informations on a besoin.

Pr S.Belkhala 103

103

48
02/11/2022

I n t ro d u c t i o n a u S Q L

• Aujourd’hui le langage SQL est normalisé, et est le standard d'accès aux bases de données

relationnelles

• SQL est un langage simple et concis

• Il est utilisable directement sur un terminal grâce à l'utilitaire interactif SQL ou dans un

langage hôte.

Pr S.Belkhala 104

104

I n t ro d u c t i o n a u S Q L

Le langage SQL ne présente intentionnellement qu'un nombre limité de verbes ou mots-


clés, qui se répartissent en trois familles fonctionnellement distinctes :

1. Le Langage de Définition de Données (LDD ou DDL) permet la description de la


structure de la base de données (tables, vues, attributs, index...). Les mots clés utilisés sont:
CREATE, DROP et ALTER.

2. Le Langage de Manipulation de Données (LMD ou DML) permet la manipulation des


tables et des vues avec ses quatre verbes correspondant aux opérations fondamentales sur
les données: INSERT, DELETE, UPDATE et SELECT

3. Le Langage de Contrôle de Données (LCD ou DCL) contient les primitives de gestion des
transactions: COMMIT et ROLLBACK et des privilèges d'accès aux données GRANT et
REVOKE

Pr S.Belkhala 105

105

49
02/11/2022

Langage SQL :
La Définition des donnés

Pr S.Belkhala 106
106

C r é a t i o n d e s Ta b l e s

• La création de la Base de Données (BD) se fait simplement en créant les tables qui
la composent.

• Il n’est pas nécessaire d’attribuer un nom à un ensemble de tables (schéma), mais


c’est possible.

Pr S.Belkhala 107

107

50
02/11/2022

Création de la BDD

Création simple:
CREATE TABLE nom_table ( Nom_col1 TYPE1, Nom_col2
TYPE2, …);

• NUMBER(x) :pour les entiers (optionnel : de longueur x)


• NUMBER(x,y) : réels (optionnel : de longueur totale x dont y décimales)
• CHAR(n) : chaines de caractères de longueur n
• VARCHAR2(n) : chaines de caractères de longueur variable, n max date, de la forme
• DATE : 01/11/81 ou 01-nov-81
• TIMESTAMP :date et heure

Pr S.Belkhala 108

108

C r é a t i o n d e s Ta b l e s : C o n t r a i n t e s

• Les contraintes sont les règles appliquées aux colonnes de données d'une table. Celles-ci
sont utilisées pour limiter le type de données pouvant aller dans une table. Cela garantit
l'exactitude et la fiabilité des données de la base de données.

• Le contrôle de la validité des données se fait par la définition de contraintes

• Il y a deux types de contraintes :

o Les contraintes de colonne portent sur une seule colonne

o Les contraintes de table portent sur un ensemble de colonnes

Pr S.Belkhala 109

109

51
02/11/2022

C r é a t i o n d e s Ta b l e s : C o n t r a i n t e s
Les contraintes les plus communes sont :

• NOT NULL

• DEFAULT

• UNIQUE

• CHECK

• PRIMARY KEY

• FOREIGN Key

• INDEX

Pr S.Belkhala 110

110

Contraintes : NOT NULL

• Par défaut, une colonne peut contenir des valeurs NULL. Si on ne souhaite pas qu'une
colonne ait une valeur NULL, on doit définir une telle contrainte sur cette colonne en
spécifiant que NULL n'est plus autorisé pour cette colonne.
CREATE TABLE Employes(
Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL,
Age INT NOT NULL,
Salaire DECIMAL (18, 2),
);

• Si la table Employes a déjà été créée, pour ajouter une contrainte NOT NULL à la colonne
Salaire dans MySQL, la requête s’écrit comme suit :

1ALTER TABLE Employes


2MODIFY Salaire DECIMAL (18, 2) NOT NULL;

Pr S.Belkhala 111

111

52
02/11/2022

C o n t r a i n t e s : D E FA U LT
• La contrainte DEFAULT fournit une valeur par défaut à une colonne lorsque
l'instruction INSERT INTO ne fournit pas de valeur spécifique.

CREATE TABLE Employes(


Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL,
Age INT NOT NULL,
Salaire DECIMAL (18, 2) DEFAULT 5000.00,
PRIMARY KEY (Id)
);

• Pour supprimer une contrainte DEFAULT, on utilise la requête suivante :

ALTER TABLE Employes


ALTER COLUMN Salaire DROP DEFAULT;

Pr S.Belkhala 112

112

Contraintes: UNIQUE

• La contrainte UNIQUE empêche que deux enregistrements aient des valeurs identiques
dans une colonne.
CREATE TABLE Employes(
Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL UNIQUE,
Age INT NOT NULL,
Salaire DECIMAL (18, 2),
PRIMARY KEY (Id)
);
• Si la table Employes a déjà été créée, pour ajouter une contrainte UNIQUE à la colonne
Nom dans MySQL, la une requête est comme suit :

ALTER TABLE Employes


MODIFY Nom VARCHAR(20) NOT NULL UNIQUE;
Pr S.Belkhala 113

113

53
02/11/2022

Contraintes: CHECK
• La contrainte CHECK active une condition permettant de vérifier la valeur saisie dans un
enregistrement. Si la condition est évaluée à false, l'enregistrement viole la contrainte et
n'est pas entré dans la table.
• Par exemple, la requête SQL suivante crée la même table Employes, mais dans ce cas, la
colonne Age est définie sur CHECK, de sorte qu’on ne peut pas avoir un employé de
moins de 18 ans.

CREATE TABLE Employes(


Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL,
Age INT NOT NULL CHECK (Age >= 18),
Salaire DECIMAL (18, 2),
PRIMARY KEY (Id)
);

Pr S.Belkhala 114

114

Contraintes: CHECK

• Si la table Employes a déjà été créée, pour ajouter une contrainte CHECK à la
colonne Age dans MySQL, vous devez écrire une requête comme suit :

ALTER TABLE Employes


MODIFY Age INT NOT NULL CHECK (Age >= 18);

Pr S.Belkhala 115

115

54
02/11/2022

Contraintes: INDEX

• L'INDEX est utilisé pour créer et récupérer des données de la base de données très
rapidement. Un index peut être créé en utilisant une seule colonne ou un groupe de
colonnes dans une table. Lors de la création de l'index, un ROWID est attribué à chaque
ligne avant le tri des données.
• Les index appropriés sont bons pour les performances dans les bases de données
volumineuses. Une sélection de champs dépend de ce que vous utilisez dans vos
requêtes SQL.
• Syntaxe :
CREATE INDEX nom_index
ON nom_table ( colonne1, colonne1, ...);
• Pour supprimer une contrainte INDEX, on utilise la syntaxe SQL suivante.

ALTER TABLE Employes


DROP INDEX idx_age;

Pr S.Belkhala 116

116

C o n t r a i n t e s : P R I M A RY K E Y
• Une colonne de clé primaire ne peut pas avoir de valeur NULL.
• Une table ne peut avoir qu'une seule clé primaire, qui peut consister en un ou plusieurs
champs. Lorsque plusieurs champs sont utilisés comme clé primaire, ils sont appelés clé
composite.
• Si une table a une clé primaire définie sur un ou plusieurs champs, vous ne pouvez pas
avoir deux enregistrements ayant la même valeur pour pour ces champs.
• Syntaxe pour définir l'attribut Id en tant que clé primaire dans une table Employes.
CREATE TABLE Employes(
Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL,
Age INT NOT NULL,
Salaire DECIMAL (18, 2),
PRIMARY KEY (Id)
);
Pr S.Belkhala 117

117

55
02/11/2022

C o n t r a i n t e s : P R I M A RY K E Y

• Pour créer une contrainte PRIMARY KEY sur la colonne "Id" alors que la table
Employes existe déjà, on utilise la syntaxe SQL suivante :

ALTER TABLE Employes


ADD PRIMARY KEY (ID);

• Pour supprimer les contraintes de clé primaire de la table, on utilise la syntaxe donnée ci-
dessous.

ALTER TABLE Employes DROP PRIMARY KEY ;

Pr S.Belkhala 118

118

Contraintes: FOREIGN KEY


• Une clé étrangère est une clé utilisée pour relier deux tables. Ceci est parfois appelé aussi
clé de référencement.
• Une clé étrangère est une colonne ou une combinaison de colonnes dont les valeurs
correspondent à une clé primaire dans une autre table.

CREATE TABLE Employes( CREATE TABLE Conges(


Id INT NOT NULL, IDc INT NOT NULL,
Nom VARCHAR (20) NOT NULL, Date_debut DATE NOT NULL,
Age INT NOT NULL, Date_fin DATE NOT NULL,
Salaire DECIMAL (18, 2), ID_EMP INT,
PRIMARY KEY (Id) PRIMARY KEY (IDc),
); FOREIGN KEY (ID_EMP ) REFERENCES
Employes(Id)
);

Pr S.Belkhala 119

119

56
02/11/2022

Contraintes: FOREIGN KEY

• Pour supprimer une contrainte FOREIGN KEY, utilisez la syntaxe


suivante :

ALTER TABLE Conges


DROP FOREIGN KEY;

Pr S.Belkhala 120

120

C o n t r a i n t e s : S u p p re s s i o n

• Toute contrainte que vous avez définie peut être supprimée à l'aide de la
commande ALTER TABLE avec l'option DROP CONSTRAINT.

ALTER TABLE Nom_table DROP CONSTRAINT nom_contrainte;

Pr S.Belkhala 121

121

57
02/11/2022

Modification de tables

• La commande ALTER TABLE permet d'ajouter/de modifier une ou


plusieurs colonnes dans une tables existante. Idéal pour ajouter une colonne,
supprimer une colonne ou modifier une colonne existante. Sa syntaxe est
comme suit :

ALTER TABLE table ADD/MODIFY


(
attribut_1 [<type> <contraintes>],
...
attribut_n [<type> <contraintes>]
);

Pr S.Belkhala 122

122

Modification de tables

Ajouter une colonne


• L’ajout d’une colonne dans une table est relativement simple et peut s’effectuer à l’aide
de la requête ressemblant suivante :

ALTER TABLE nom_table


ADD nom_colonne type_donnees
Supprimer une colonne
• Il y a 2 manières totalement équivalente pour supprimer une colonne en suivant l’un des
requêtes suivantes:

ALTER TABLE nom_table ALTER TABLE nom_table


ou
DROP nom_colonne DROP COLUMN nom_colonne

Pr S.Belkhala 123

123

58
02/11/2022

Modification de tables

Modifier une colonne


• Requête pour modifier une colonne, comme par exemple changer le type d’une colonne:

ALTER TABLE nom_table


MODIFY nom_colonne type_donnees
Renommer une colonne
• Pour renommer une colonne, il convient d’indiquer l’ancien nom de la colonne et le
nouveau nom de celle-ci.

ALTER TABLE nom_table CHANGE colonne_ancien_nom


colonne_nouveau_nom type_donnees

Pr S.Belkhala 124

124

Modification de tables

Gestion des contraintes :

• Pour ajouter une ou plusieurs contraintes dans une tables existante :

ALTER TABLE table ADD <contraintes>

• Pour ajouter ou desupprimer des valeurs par défaut dans une tables existante :

ALTER TABLE table MODIFY attribut SET valeur;

ALTER TABLE table MODIFY attribut DROP DEFAULT;

Pr S.Belkhala 125

125

59
02/11/2022

destruction de tables

• La commande DROP TABLE en SQL permet de supprimer définitivement une table d’une
base de données. Cela supprime en même temps les éventuels index, trigger, contraintes et
permissions associées à cette table.

• Pour supprimer une table “nom_table” il suffit simplement d’utiliser la syntaxe suivante :

DROP TABLE nom_table [CASCADE CONSTRAINTS];

L’option CASCADE CONSTRAINTS permet de supprimer les clés étrangères des autres tables
qui pointent sur la table à supprimer.

Pr S.Belkhala 126

126

Langage SQL :
La Manipulation des donnés

Pr S.Belkhala 127
127

60
02/11/2022

Insertion

• L’insertion de données dans une table s’effectue à l’aide de la commande INSERT INTO.
Cette commande permet au choix d’inclure une seule ligne à la base existante ou plusieurs
lignes d’un coup.

Insertion d’une ligne à la fois


Pour insérer des données dans une base, il y a 2 syntaxes principales :
• Insérer une ligne en indiquant les informations pour chaque colonne existante (en
respectant l’ordre)
• Insérer une ligne en spécifiant les colonnes que vous souhaiter compléter. Il est possible
d’insérer une ligne renseignant seulement une partie des colonnes

Pr S.Belkhala 128

128

Insertion

Insérer une ligne en spécifiant toutes les colonnes


La syntaxe pour remplir une ligne avec cette méthode est la suivante :

INSERT INTO table VALUES ('valeur 1', 'valeur 2', ...)

Cette syntaxe possède les avantages et inconvénients suivants :


• Obliger de remplir toutes les données, tout en respectant l’ordre des colonnes
• Il n’y a pas le nom de colonne, donc les fautes de frappe sont limitées. Par ailleurs, les
colonnes peuvent être renommées sans avoir à changer la requête
• L’ordre des colonnes doit resté identique sinon certaines valeurs prennent le risque
d’être complétée dans la mauvaise colonne

Pr S.Belkhala 129

129

61
02/11/2022

Insertion

Insérer une ligne en spécifiant seulement les colonnes souhaitées

Cette deuxième solution est très similaire, excepté qu’il faut indiquer le nom des colonnes
avant “VALUES”. La syntaxe est la suivante :

INSERT INTO table (nom_colonne_1, nom_colonne_2, ... VALUES


('valeur 1', 'valeur 2', ...)

A noter : il est possible de ne pas renseigner toutes les colonnes. De plus, l’ordre des
colonnes n’est pas important.

Pr S.Belkhala 130

130

Insertion
Insertion de plusieurs lignes à la fois
Il est possible d’ajouter plusieurs lignes à un tableau avec une seule requête. Pour ce faire, il
convient d’utiliser la syntaxe suivante :
INSERT INTO client (prenom, nom, ville, age) VALUES ('Rébecca',
'Armand', 'Saint-Didier-des-Bois', 24), ('Aimée', 'Hebert',
'Marigny-le-Châtel', 36), ('Marielle', 'Ribeiro', 'Maillères', 27),
('Hilaire', 'Savary', 'Conie-Molitard', 58);
A noter : lorsque le champ à remplir est de type VARCHAR ou TEXT il faut indiquer le texte
entre guillemet simple. En revanche, lorsque la colonne est un numérique tel que INT ou
BIGINT il n’y a pas besoin d’utiliser de guillemet, il suffit juste d’indiquer le nombre.

Pr S.Belkhala 131

131

62
02/11/2022

Insertion

Exemples :

INSERT INTO CENTRE (NUMC, NOMC, VILC, COUTINSC)


VALUES ( ‘103’, ’Pleine Forme’, ‘PARIS’, 400);

INSERT INTO CENTRE


VALUES ( ‘107’, ’Pleine Forme’, ‘PARIS’, 420);

INSERT INTO CENTRE (NUMC, NOMC, COUTINSC)


VALUES ( ‘111’, ’Le nouveau’, 400);

INSERT INTO PROPOSE (NUMC, SPORT)


VALUES ( ‘103’, ’FOOTBALL’);

Pr S.Belkhala 132

132

Modification

• La commande UPDATE permet d’effectuer des modifications sur des lignes existantes.
Très souvent cette commande est utilisée avec WHERE pour spécifier sur quelles lignes
doivent porter la ou les modifications.
UPDATE table
SET attribut_1 = valeur_1,
attribut_2 = valeur_2,

attribut_n = valeur_n
[WHERE <condition>] ;
• Cette syntaxe permet d’attribuer une nouvelle valeur à la colonne nom_colonne_1 pour les
lignes qui respectent la condition stipulé avec WHERE. Il est aussi possible d’attribuer la
même valeur à la colonne nom_colonne_1 pour toutes les lignes d’une table si la condition
WHERE n’était pas utilisée.
Pr S.Belkhala 133

133

63
02/11/2022

Modification

Exemples :

• Augmenter le coût d' inscription, pour tous les centres, de 5% :

UPDATE CENTRE
SET COUTINSC = COUTINSC * 105%;

• Baisser le coût d' inscription, dans le centre 101, de 20% :

UPDATE CENTRE
SET COUTINSC = COUTINSC * 80%
WHERE NUMC = ‘101’;

Pr S.Belkhala 134

134

S u p p re s s i o n

La commande DELETE en SQL permet de supprimer des lignes dans une table. En utilisant
cette commande associé à WHERE il est possible de sélectionner les lignes concernées qui
seront supprimées.

La syntaxe pour supprimer des lignes est la suivante :

DELETE FROM `table` WHERE condition

• Supprimer une ligne


• Il est possible de supprimer une ligne en effectuant la requête SQL suivante :

DELETE FROM `utilisateur` WHERE `id` = 1

Pr S.Belkhala 135

135

64
02/11/2022

S u p p re s s i o n

Supprimer plusieurs lignes

Si l’ont souhaite supprimer les utilisateurs qui se sont inscrit avant le 10/04/2012, il va falloir
effectuer la requête suivante :

DELETE FROM `utilisateur`


WHERE `date_inscription` < '2012-04-10'
Supprimer toutes les données

Pour supprimer toutes les lignes d’une table il convient d’utiliser la commande DELETE
sans utiliser de clause conditionnelle.
DELETE FROM `utilisateur`

Pr S.Belkhala 136

136

S u p p re s s i o n

Supprimer toutes les données : DELETE ou TRUNCATE

• Pour supprimer toutes les lignes d’une table, il est aussi possible d’utiliser la
commande TRUNCATE, de la façon suivante :

TRUNCATE TABLE `utilisateur`

• Cette requête est similaire. La différence majeure étant que la commande TRUNCATE va
réinitialiser l’auto-incrémente s’il y en a un. Tandis que la commande DELETE ne
réinitialise pas l’auto-incrément.

Pr S.Belkhala 137

137

65
02/11/2022

Sélection

L’utilisation la plus courante de SQL consiste à lire des données issues de la base de
données. Cela s’effectue grâce à la commande SELECT, qui retourne des enregistrements
dans un tableau de résultat. Cette commande peut sélectionner une ou plusieurs colonnes
d’une table.
SELECT Je veux une telle chose
FROM de cette source
WHERE Ayant telles caractéristiques
ORDER BY avec cette ordre

Pr S.Belkhala 138

138

Sélection
Syntaxe :
SELECT nom_du_champ
FROM nom_du_tableau

• Obtenir plusieurs colonnes :

SELECT nom_du_champ_1, nom_du_champ_2


FROM nom_du_tableau

• Obtenir toutes les colonnes d’un tableau

SELECT * FROM client

Pr S.Belkhala 139

139

66
02/11/2022

Sélection
Exemple :

Si l’ont veut avoir la liste de toutes les villes des clients, il suffit d’effectuer la requête suivante :
SELECT ville FROM client

Pr S.Belkhala 140

140

Sélection

L’utilisation de la commande SELECT en SQL permet de lire toutes les données d’une ou
plusieurs colonnes. Cette commande peut potentiellement afficher des lignes en doubles. Pour
éviter des redondances dans les résultats il faut simplement ajouter DISTINCT après le mot
SELECT.

L’utilisation basique de cette commande consiste alors à effectuer la requête suivante :

SELECT DISTINCT ma_colonne


FROM nom_du_tableau

Cette requête sélectionne le champ « ma_colonne » de la table « nom_du_tableau » en évitant


de retourner des doublons.
Pr S.Belkhala 141

141

67
02/11/2022

Sélection

• WHERE

La commande WHERE dans une requête SQL permet d’extraire les lignes d’une base de
données qui respectent une condition. Cela permet d’obtenir uniquement les informations
désirées.

La commande WHERE s’utilise en complément à une requête utilisant SELECT. La façon la


plus simple de l’utiliser est la suivante :

SELECT nom_colonnes FROM nom_table


WHERE condition

Pr S.Belkhala 142

142

Sélection

• ORDER BY

La commande ORDER BY permet de trier les lignes dans SELECT colonne1, colonne2
un résultat d’une requête SQL. Il est possible de trier les FROM table
données sur une ou plusieurs colonnes, par ordre ascendant ORDER BY colonne1
ou descendant.

Par défaut les résultats sont classés par ordre ascendant, SELECT colonne1, colonne2
toutefois il est possible d’inverser l’ordre en utilisant le FROM table
suffixe DESC après le nom de la colonne. ORDER BY colonne1 DESC

Pr S.Belkhala 143

143

68
02/11/2022

Sélection

• ORDER BY

Par ailleurs, il est possible de trier sur plusieurs colonnes en les séparant par une virgule.

SELECT colonne1, colonne2, colonne3


FROM table
ORDER BY colonne1 DESC, colonne2 ASC

Pr S.Belkhala 144

144

Sélection
• AND & OR
Une requête SQL peut être restreinte à l’aide de la condition WHERE. Les opérateurs logiques
AND et OR peuvent être utilisées au sein de la commande WHERE pour combiner des
conditions

Les opérateurs sont à ajoutés dans la condition WHERE. Ils peuvent être combinés à l’infini
pour filtrer les données comme souhaités.

L’opérateur AND permet de s’assurer que la condition1 ET la condition2 sont vrai :

Pr S.Belkhala 145

145

69
02/11/2022

Sélection
• AND & OR

• L’opérateur AND permet de s’assurer que la condition1 ET la condition2 sont vrai :

SELECT nom_colonnes FROM nom_table


WHERE condition1 AND condition2

• L’opérateur OR vérifie quant à lui que la condition1 OU la condition2 est vrai :

SELECT nom_colonnes FROM nom_table


WHERE condition1 OR condition2

Pr S.Belkhala 146

146

Sélection
• AND & OR

Ces opérateurs peuvent être combinés à l’infini et mélangés.

SELECT nom_colonnes FROM nom_table WHERE


condition1 AND (condition2 OR condition3)

NOT peut aussi se mettre devant un operateur de comparaison :

• Colonne NOT IN (liste) çè NOT (Colonne IN (liste))

• Colonne NOT LIKE expr çè NOT (Colonne LIKE expr)

• Colonne IS NOT NULL çè NOT (Colonne IS NULL)

Pr S.Belkhala 147

147

70
02/11/2022

Sélection

De nombreux operateurs et fonctions peuvent être utilisés pour définir une condition, on peut
distinguer trois types:
• Comparaison entre attributs(colonnes) et/ou valeurs, au moins une par condition, doit
être vraie ou fausse pour chaque ligne(n-uplet)
• Transformation des attributs avant comparaison
• Combinaison logique de comparaisons

Pr S.Belkhala 148

148

Sélection : opérateurs de comparaison


• Opérateurs de comparaisons : Ces operateurs peuvent être utilisés pour comparer des valeurs
numériques, des dates ou des chaines de caractères

Pr S.Belkhala 149

149

71
02/11/2022

Sélection : opérateurs de comparaison

• LIKE
• L'opérateur LIKE permet d'effectuer une comparaison entre une chaine de caractère
et un modèle particulier:
o LIKE '%a' : se termine par un «a»
o LIKE 'a%' : commence par un «a»
o LIKE '%a%' : contient le caractère «a» (n'importe où)
o LIKE 'pa%on' : commence par «pa», se termine par «on»
o LIKE 'a_c' : contient une seule lettre entre «a» et «c»

• «%» remplace tous les autres caractères


• •«_» remplace un caractère uniquement
• •LIKE est sensible à la casse

Pr S.Belkhala 150

150

Sélection : opérateurs de comparaison

• BETWEEN

L’opérateur BETWEEN est utilisé dans une requête SQL pour sélectionner un intervalle de
données dans une requête utilisant WHERE. L’intervalle peut être constitué de chaînes de
caractères, de nombres ou de dates. L’exemple le plus concret consiste par exemple à
récupérer uniquement les enregistrements entre 2 dates définies.

SELECT * FROM table


WHERE nom_colonne BETWEEN 'valeur1' AND 'valeur2'

Pr S.Belkhala 151

151

72
02/11/2022

Sélection : opérateurs de comparaison

• BETWEEN

• Quelle requête pour obtenir les membres qui se sont inscrit entre le 1 avril 2012
et le 20 avril 2012

Pr S.Belkhala 152

152

Sélection : opérateurs de comparaison


• IN
L’opérateur logique IN dans SQL s’utilise avec la commande WHERE pour vérifier si une
colonne est égale à une des valeurs comprise dans set de valeurs déterminés. C’est une
méthode simple pour vérifier si une colonne est égale à une valeur OU une autre valeur OU
une autre valeur et ainsi de suite, sans avoir à utiliser de multiple fois l’opérateur OR.

SELECT nom_colonne FROM table


WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... )

Pr S.Belkhala 153

153

73
02/11/2022

Sélection : opérateurs de comparaison


• IN

Soit cette requête :


SELECT prenom FROM utilisateur
WHERE prenom = 'Maurice' OR prenom = 'Marie'
OR prenom = 'Thimoté'

Requête équivalent avec l’opérateur IN :

SELECT prenom FROM utilisateur


WHERE prenom IN ( 'Maurice', 'Marie', 'Thimoté’)

Pr S.Belkhala 154

154

Sélection : opérateurs de comparaison


• Exemple

Quelle requête doit on utiliser si ont souhaite obtenir les enregistrements des adresses de
Paris et de Graimbouville

Pr S.Belkhala 155

155

74
02/11/2022

Sélection : opérateurs de comparaison


• Exemple

• SELECT * FROM produit WHERE categorie = 'informatique' AND stock < 20

• SELECT * FROM produit WHERE nom = 'ordinateur' OR nom = 'clavier'

• SELECT * FROM produit WHERE ( categorie = 'informaJque' AND stock < 20 ) OR (


categorie = 'fourniture' AND stock < 200 )
Pr S.Belkhala 156

156

Sélection : opérateurs de comparaison


• LIMIT

La clause LIMIT est à utiliser dans une requête SQL pour spécifier le nombre
maximum de résultats que l’ont souhaite obtenir.

SELECT * FROM table LIMIT 10

la bonne pratique lorsque l’ont utilise LIMIT consiste à utiliser également la clause ORDER
BY pour s’assurer que quoi qu’il en soit ce sont toujours les bonnes données qui sont
présentées. En effet, si le système de tri est non spécifié, alors il est en principe inconnu et les
résultats peuvent être imprévisible.

Pr S.Belkhala 157

157

75
02/11/2022

S é l e c t i o n : Tr a n s f o r m a t i o n n u m é r i q u e
Operateurs de transformation de valeurs numériques:
• + : addition
• -: soustraction
• * : multiplication
• / : division

Exemple :
SELECT* FROM produits WHERE prix_vente > prix_achat + prix_achat* 20/100;

Operateurs de transformation de chaines de caractères: ||

SELECT * FROM clients WHERE nom||prenom LIKE '%David%';

Pr S.Belkhala 158

158

Sélection : Transformation numérique

Fonctions de transformation de valeurs numériques :

• SQRT(N) : racine carrée de N

• ABS (N) : valeur absolue de N

• ROUND (N), FLOOR (N), CEILING (N) : arrondi de N, entier inf, entier sup

• POW(N, P), EXP (N) : A puissance P, exponentiel de N

• …

SELECT * FROM produits WHERE ABS (gain) > SQRT (prix_achat );

Pr S.Belkhala 159

159

76
02/11/2022

S é l e c t i o n : Tr a n s f o r m a t i o n n u m é r i q u e

Fonctions de transformation de chaines de caractères:

• LOWER(C) : met C en minuscule

• UPPER (C) : met C en majuscule

• SOUNDEX (C) : transforme C en phonétique

• LENGTH (C) : calcule le nombre de caractères de C

• TO_CHAR (N) : transforme le nombre N en caractères

• …

SELECT * FROM clients WHERE LOWER (Nom) = 'dupuis';

Pr S.Belkhala 160

160

Sélection : Agrégation

Les fonctions d’agrégation dans le langage SQL permettent d’effectuer des opérations
statistiques sur un ensemble d’enregistrement. Étant données que ces fonctions s’appliquent à
plusieurs lignes en même temps, elle permettent des opérations qui servent à récupérer
l’enregistrement le plus petit, le plus grand ou bien encore de déterminer la valeur moyenne
sur plusieurs enregistrement.

Exemple de fonctions d’agrégat :


• Moyenne • Maximum • Minimum
• Somme • Comptage

Pr S.Belkhala 161

161

77
02/11/2022

Sélection : Agrégation

• SUM(attribut) : total des valeurs (numériques) d'un attribut

• AVG(attribut) : moyenne des valeurs (num) d'un attribut

• MIN(attribut) : plus petite valeur (num, date) d'un attribut

• MAX(attribut) : plus grande valeur (num, date) d'un attribut

• COUNT(*) : nombre de lignes

• COUNT(DISTINCT attribut) : nombre de valeurs différentes de l'attribut

Remarque : les valeurs NULL sont ignorées.

Pr S.Belkhala 162

162

Sélection : Agrégation

• La fonction d’agrégat s’utilise dans la clause SELECT à la place d’un nom de colonne.

Exemples:
• Prix moyen des articles : SELECT AVG(prix) FROM articles ;

• Note maximale : SELECT MAX(note) FROM resultats ;

• Nombre d’étudiants : SELECT COUNT(*) FROM etudiants ;

Pr S.Belkhala 163

163

78
02/11/2022

Sélection : Agrégation
• Regroupement des lignes : GROUP BY
• Il est possible de calculer l’agrégation non pas sur toutes les lignes mais par catégories.

Syntaxe:

SELECT fonction_agregation FROM nom_table

GROUP BY liste_attributs;

• Les lignes sont regroupées si elles ont les mêmes valeurs sur le ou les attributs de la
clause GROUP BY.

Pr S.Belkhala 164

164

Sélection : Agrégation
Exemple :
Table Achat
Commande CodeProduit Quantité Prix
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32

SELECT Commande, SUM(Quantité*Prix) AS Montant FROM Achat


GROUP BY Commande ;
Commande Montant
96008 1950
96009 1660
96010 2200

Pr S.Belkhala 165

165

79
02/11/2022

Sélection : Agrégation
Exemple :
ID_client ID_fournisseur Prix
C1 F1 25
C1 F2 35
C2 F1 64
C2 F1 120
C2 F3 26

SELECT ID_client, ID_fournisseur, MAX(Prix) AS Maxi FROM Commandes


GROUP BY ID_client, ID_fournisseur ;

ID_client ID_fournisseur Maxi


C1 F1 25
C1 F2 35
C2 F1 120
C2 F3 26

Pr S.Belkhala 166

166

Sélection : Agrégation
• Conditions sur les regroupements: HAVING
• Il est aussi possible de ne sélectionner que certains des groupes, avec la clause
HAVING.

SELECT fonction_agregation FROM nom_table


GROUP BY liste_attributs HAVING conditions ;

• La condition HAVING en SQL est presque similaire à WHERE à la seule différence que
HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(),
MIN() ou MAX().

Pr S.Belkhala 167

167

80
02/11/2022

Sélection : Agrégation
Exemple :
id client tarif
1 Pierre 102
2 Simon 47
3 Marie 18
4 Marie 20
5 Pierre 160

Requête si on souhaite récupérer la liste des clients qui ont commandé plus de 40 ?
SELECT client, SUM(tarif) FROM Commandes
GROUP BY client HAVING SUM(tarif) > 40 ;

client SUM(tarif)
Pierre 262
Simon 47

Pr S.Belkhala 168

168

Sélection : Agrégation
Exemple :
Commande CodeProduit Quantité Prix
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32

Requête si on souhaite récupérer la liste des commandes qui ont un total de plus que 1700 ?
SELECT Commande, SUM(Quantité*Prix) AS Montant FROM Commandes
GROUP BY Commande HAVING Montant > 1700
ORDER BY Montant DESC ;

Commande Montant
96010 2200
96008 1950

Pr S.Belkhala 169

169

81
02/11/2022

E x e rc i c e

• Quelle requête utiliser pour afficher l'ensemble des enregistrements de la table


• Quelle requête utiliser pour sélectionner uniquement les livres qui ont un prix strictement
supérieur à 100
• Quelle requête utiliser pour trier les enregistrements de la table du prix le plus élevé aux prix
le plus bas
• Quelle requête utiliser pour récupérer le prix du livre le plus élevé de la table

• Quelle requête utiliser pour récupérer les livres de la table qui ont un prix compris entre 20 et
22 ?
• Quelle requête utiliser pour récupérer tous les livres de la table à l'exception de celui portant
la valeur pour la colonne auteur musso
• Quelle requête utiliser pour récupérer le prix du livre le moins élevé de la table en
renommant la colonne dans les résultats par minus

Pr S.Belkhala 170

170

Langage SQL :
La Manipulation des donnés : JOINTURES

Pr S.Belkhala 171
171

82
02/11/2022

J o i n t u re s

Les jointures en SQL permettent d’associer plusieurs tables dans une même requête. Cela
permet d’exploiter la puissance des bases de données relationnelles pour obtenir des
résultats qui combinent les données de plusieurs tables de manière efficace.

En général, les jointures consistent à associer des lignes de 2 tables en associant l’égalité
des valeurs d’une colonne d’une première table par rapport à la valeur d’une colonne d’une
seconde table. Imaginons qu’une base de 2 données possède une table “utilisateur” et une
autre table “adresse” qui contient les adresses de ces utilisateurs. Avec une jointure, il est
possible d’obtenir les données de l’utilisateur et de son adresse en une seule requête.

Pr S.Belkhala 172

172

P ro d u i t c a r t é s i e n

• Le produit cartésien: construit une relation regroupant exclusivement toutes les possibilités
de combinaison des occurrences de deux relations qui satisfont une expression logique E.
o Le résultat du produit cartésien est une nouvelle relation qui a tous les attributs de R1 et
tous ceux de R2.
o Le nombre d'occurrences de la relation qui résulte du produit cartésien est le nombre
d'occurrences de R1 multiplié par le nombre d'occurrences de R2

Pr S.Belkhala 173

173

83
02/11/2022

L’ u n i o n

L'union est une opération portant sur deux relations ayant le même schéma et construisant une
troisième constituée des n-uplets appartenant à chacune des deux relations sans doublon.

o R1et R2doivent avoir les mêmes attributs.


o Si une même occurrence existe dans R1 et R2, elle n'apparaît qu'une seule fois dans le
résultat de l'union.
o Le résultat de l'union est une nouvelle relation qui a les mêmes attributs que R1et R2.
o Si R1(respectivement R2) est vide, la relation qui résulte de l'union est identique à
o R2(respectivement R1).

Pr S.Belkhala 174

174

L’ u n i o n

Exemple :

Pr S.Belkhala 175

175

84
02/11/2022

L’ i n t e r s e c t i o n

• L'intersection est une opération portant sur deux relations ayant le même schéma et
construisant une troisième dont les n-uplets sont constitués de ceux communs aux deux
relations.

o R1et R2 doivent avoir les mêmes attributs.


o Le résultat de l'intersection est une nouvelle relation qui a les mêmes attributs que
R1et R2.
o Si R1ou R2ou les deux sont vides, la relation qui résulte de l'intersection est vide.

Pr S.Belkhala 176

176

L’ i n t e r s e c t i o n

Pr S.Belkhala 177

177

85
02/11/2022

L a D i f f é re n c e

La différence est une opération portant sur deux relations 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.

o R1et R2 doivent avoir les mêmes attributs.


o Le résultat de la différence est une nouvelle relation qui a les mêmes attributs
que R1et R2.
o Si R2 est vide, la différence est identique à R1.

Pr S.Belkhala 178

178

L a D i f f é re n c e

Pr S.Belkhala 179

179

86
02/11/2022

SQL INNER JOIN

Dans le langage SQL la commande INNER JOIN, aussi appelée EQUIJOIN, est un type de
jointures très communes pour lier plusieurs tables entre-elles. Cette commande retourne les
enregistrements lorsqu’il y a au moins une ligne dans chaque colonne qui correspond à la
condition.

SELECT * FROM table1 INNER JOIN table2


ON table1.id1 = table2.id2

Table A Table B
• ON: La clause ON correspond à la
condition de jointure la plus générale.

Pr S.Belkhala 180

180

SQL INNER JOIN

• Comment afficher toutes les


commandes associées aux
utilisateurs ?

Pr S.Belkhala 181

181

87
02/11/2022

SQL INNER JOIN

SELECT id, prenom, nom, date_achat, num_facture, prix_total


FROM utilisateur
INNER JOIN commande
ON utilisateur.id = commande.utilisateur_id

Pr S.Belkhala 182

182

SQL LEFT JOIN

La commande LEFT JOIN (aussi appelée LEFT OUTER JOIN) est un type de jointure entre 2
tables. Cela permet de lister tous les résultats de la table de gauche même s’il n’y a pas de
correspondance dans la deuxième tables.

Table A Table B

Pr S.Belkhala 183

183

88
02/11/2022

SQL LEFT JOIN

Syntaxe : Pour lister les enregistrement de table1, même s’il n’y a pas de correspondance avec
table2, il convient d’effectuer une requête SQL utilisant la syntaxe suivante.

SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.fk_id

Pr S.Belkhala 184

184

SQL LEFT JOIN

Exemple

Requête Pour lister tous les utilisateurs


avec leurs commandes et afficher
également les utilisateurs qui n’ont pas
effectuées d’achats ?

Pr S.Belkhala 185

185

89
02/11/2022

SQL LEFT JOIN

SELECT *
FROM utilisateur
LEFT JOIN commande ON utilisateur.id = commande.utilisateur_id

Pr S.Belkhala 186

186

SQL RIGHT JOIN

La commande RIGHT JOIN (ou RIGHT OUTER JOIN) est un type de jointure entre 2 tables qui
permet de retourner tous les enregistrements de la table de droite (right = droite) même s’il n’y a
pas de correspondance avec la table de gauche. S’il y a un enregistrement de la table de droite qui
ne trouve pas de correspondance dans la table de gauche, alors les colonnes de la table de gauche
auront NULL pour valeur.

Table A Table B

Pr S.Belkhala 187

187

90
02/11/2022

SQL RIGHT JOIN

Syntaxe pour lister toutes les lignes du tableau table2 (tableau de droite) et afficher les données
associées du tableau table1 s’il y a une correspondance entre ID de table1 et FK_ID de table2.
S’il n’y a pas de correspondance, l’enregistrement de table2 sera affiché et les colonnes
de table1vaudront toutes NULL.

SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.fk_id

Pr S.Belkhala 188

188

SQL RIGHT JOIN

Exemple

Requête Pour lister tous les achats et


afficher le nom d’utilisateurs s’il existe?

Pr S.Belkhala 189

189

91
02/11/2022

SQL RIGHT JOIN

SELECT id, prenom, nom, utilisateur_id, date_achat, num_facture


FROM utilisateur
RIGHT JOIN commande ON utilisateur.id = commande.utilisateur_id

Pr S.Belkhala 190

190

SQL FULL JOIN

Dans le langage SQL, la commande FULL JOIN (ou FULL OUTER JOIN) permet de faire une
jointure entre 2 tables. L’utilisation de cette commande permet de combiner les résultats des 2
tables, les associer entre eux grâce à une condition et remplir avec des valeurs NULL si la
condition n’est pas respectée.

SELECT *
FROM table1
FULL JOIN table2 ON table1.id = table2.fk_id

Pr S.Belkhala 191

191

92
02/11/2022

SQL FULL JOIN


Table Commande

Table Utilisateur

Requête pour lister tous les utilisateurs


ayant effectué ou non une vente, et de
lister toutes les ventes qui sont
associées ou non à un utilisateur.

Pr S.Belkhala 192

192

SQL FULL JOIN

SELECT id, prenom, nom, utilisateur_id, date_achat, num_facture


FROM utilisateur
FULL JOIN commande ON utilisateur.id = commande.utilisateur_id

Pr S.Belkhala 193

193

93
02/11/2022

S Q L N AT U R A L J O I N

La commande NATURAL JOIN permet de faire une jointure naturelle entre 2 tables. Cette
jointure s’effectue à la condition qu’il y ai des colonnes du même nom et de même type dans
les 2 tables. Le résultat d’une jointure naturelle est la création d’un tableau avec autant de
lignes qu’il y a de paires correspondant à l’association des colonnes de même nom.

SELECT *
FROM table1
NATURAL JOIN table2

* NATURAL JOIN c’est qu’il n’y a pas besoin d’utiliser la clause ON

Pr S.Belkhala 194

194

S Q L N AT U R A L J O I N
Table Utilisateurs

Table Pays

Pr S.Belkhala 195

195

94
02/11/2022

SQL NATURAL JOIN

SELECT *
FROM utilisateur
NATURAL JOIN pays

Pr S.Belkhala 196

196

95

Vous aimerez peut-être aussi