Telechargé par nejib.ghabri

cours bases de données

publicité
Elaboré par : Mme YEKKEN Sabrine
ANNEE UNIVERSITAIRE : 2015 - 2016
Introduction Générale
3
Objectifs du cours
1ère Partie : Le système de gestion des fichiers
1.
Définitions et Caractéristiques
2.
Limites des fichiers
2ème Partie : Le système de gestion de bases de données
1.
Définitions
2.
Objectifs d’un SGBD
3.
Les modèles de Données
4.
Conception des BD
Objectifs de la partie :
Définition et présentation du SGF ainsi
que ses limites
5
Le SGF.
i.
Définitions (fichier, enregistrement)
Un fichier: une suite de données structurée (souvent sous
la forme d'une liste d'enregistrements suivant un même
format), portant un nom et codé sur un support physique.
ii. Un enregistrement: élément d'un fichier, qui représente
l'unité logique.
6
Le SGF.
Présentation du SGF
(1/2)
Information
logique
Information
physique
 Nom répertoire
 Nom fichier
 Indications
fichier
 Disque
 Cylindre
 Piste
 Secteur
Le fonctionnement d’un système de gestion de fichiers
7
Le SGF.
i.
Présentation du SGF
(2/2)
Le Système de Gestion de Fichiers (SGF) joue un rôle central
dans un système d’exploitation car il doit gérer la plupart des
informations des usagers et du système lui-même.
ii. Le SGF est aussi un outil de manipulation des fichiers et de la
structure d’arborescence des fichiers sur disque.
iii. Le fichier est l’unité logique de base d’un SGF.
8
Le SGF. Exemples du SGF
(1/2)
1. FAT : 1981 - MS-DOS / PC-DOS
i.
Avantages : Simple, rapide pour des petites partitions
(<200Mo), peu gourmand en place disque.
ii. Inconvénients : Limité à des partitions de 2Go. Baisse des
performances sur des volumes de grande taille. Attributs
limités. Aucune sécurité d'accès.
9
Le SGF.
Exemples du SGF
(2/2)
1. NTFS : 1993 - Windows NT 3.x
i.
Avantages : Efficace pour des volumes de 400 Mo ou + sans
perte de performance. Système de recouvrement de fichiers ne
rendant pas nécessaire le lancement d'utilitaires de réparation de
disque. Gestion d'attributs étendus, sécurité des données,
contrôle d'accès.
ii. Inconvénients : Taille utilisée par NTFS (~ 4%) sur disque
ne le rendant pas adapté aux volumes < 400Mo.
10
Le SGF.
1.
Limites du SGF
Redondance des données
i.
la même donnée est présente plusieurs fois.
ii. Difficulté lors de la mise à jour des données.
2.
Insécurité des données
i.
Accès pour un seul user.
ii. Pas de confidentialité de l’information.
3.
Incohérence des données
i.
MAJ d’une partie des données redondantes
ii. Non respect des contraintes d’intégrités
Objectifs de la partie :
Définition et objectifs d’un SGBD et
présentation des modèles de données
et la conception d’une BD.
12
Une base de donnée -
Définition
BD ou BDD est l'abrév. française, équivalente à DB. « Database »
en anglais.
Définition:
Ensemble structuré d'informations conçu et réalisé afin de
faciliter leur consultation et modification rapide et sûre,
effectuées simultanément par plusieurs utilisateurs.
13
Le SGBD. Définition
i.
Un Système de Gestion de Base de Données (abr. SGBD) est
un logiciel système destiné à stocker et à partager des
informations dans une BD, en garantissant la qualité, la
pérennité et la confidentialité des informations.
ii. Un SGBD (en anglais DBMS pour « Data base Management
System ») permet d'inscrire, de retrouver, de modifier, de
trier, de transformer ou d'imprimer les informations de la
base de données.
14
Le SGBD. Objectifs
i.
Eliminer les redondances de données
ii. Offrir un accès multiple aux données
iii. Faciliter la recherche des données via le langage de
manipulation de données (LMD)
iv. Fournir une description des données stockées dans la base
v.
Assurer la sécurité d’accès aux données
15
Exemples d’SGBD
 Microsoft Access
 MySql
 Oracle Database
 Microsoft Sql Server...
23
La conception des BD
(1/5)
un schéma conceptuel est une représentation graphique qui sert à
décrire le fonctionnement d'une BD.
Il représente ainsi les objets principaux contenus dans cette dernière,
leurs caractéristiques et les relations qui s'établissent entre ces
différents objets.
Cette représentation est normée suivant une modélisation bien
définie.
19
La conception des BD
(2/5)
24
La conception des BD
(3/5)
Plusieurs types de schémas conceptuels existent, correspondants aux
différents types de base de données que l'on peut rencontrer :

le modèle hiérarchique :L'information est organisée de manière
arborescente+le point d'accès à l'information est bien unique,

Exemple: le canard appartient à la famille des anatidés qui elle-même
appartient à l'ordre des ansériformes qui lui-même appartient à la classe
des oiseaux qui elle-même appartient au sous-embranchement des
vertébrés qui lui-même appartient au règne animal.
25
La conception des BD

(4/5)
le modèle réseaux : principe du regroupement des différents
éléments de la base de données par leur sens, plusieurs points
d’accès, le schéma conceptuel est représenté par un graphe ce
qui augmente les possibilités de liens entre les objets.

le modèle relationnel (modèle entité / association),
correspond à un diagramme où sont définies les entités de la
base ainsi que les associations qui les lient.
25
La conception des BD

(5/5)
Le modèle objet : classes + objets
Une donnée est une instance d’une classe.
Chaque champ est un objet et la notion d’héritage peut être
utilisée lors de la définition des tables.

le modèle déductif :
les données sont des tables et le langage d’interrogation est basé
sur le calcul des prédicats et la logique du premier ordre.
Chapitre 1:
Le Modèle Entité/Association
21
Objectifs du cours
1.
Définir le modèle Entité/Association
2.
Présenter les concepts de bases du modèle E/A
26
Présentation du modèle E/A
Le modèle Entité/Association (appelé aussi Modèle entité-relation)
est un type de schéma conceptuel très utilisé pour les bases de
données, notamment les bases de données relationnelles.
une BDR est un stock d'informations décomposées et organisées
dans des matrices appelées relations ou tables conformément au
modèle de données relationnel. Le contenu de la base de données
peut ainsi être synthétisé par des opérations d'algèbre relationnelle:
l'intersection, la jointure, l’union, le produit cartésien…
27
Les concepts du modèle E/A. Présentation
Il s'agit d'un outil permettant de décrire le fonctionnement de la base de
données en notifiant :

Une Entité

Une Propriété

Un Identifiant

Une Association / Propriétés d’association

Les Cardinalités

Une Sous-Entité

Une Agrégation
(1/11)
28
Les concepts du modèle E/A. Une Entité

(2/11)
Une entité est un objet du monde réel ayant une existence
propre et présentant un intérêt pour l'application. Une entité est
utilisée par l'application, l'entreprise ou l'organisme.
MATCHS

JOUEURS
On représente un type d'entité pour figurer un ensemble
d’entités : une entité = 1 occurrence de l'ensemble.
29
Les concepts du modèle E/A. Propriétés
(3/11)
 Une propriété est une Information ayant des valeurs
qualifiant une occurrence d'une entité.
 Une propriété ne doit dépendre que de la seule entité à laquelle
elle appartient.
Nom de l’ENTITE
Identifiant
Propriété 1
Propriété 2
Propriété 3
30
Les concepts du modèle E/A. Propriétés
(4/11)
Les attributs ou propriétés :
Sont : élémentaire ou composé / mono-valué ou multi-valué.

Élémentaire = atomique (exemple nom, prénom)

Composé = peut être divisé en sous parties d’attributs élémentaires
ayant des significations indépendantes (exemple: adresse (n°, rue, code
postal, ville…))

Mono-valué = attribut ne pouvant avoir qu’une seul valeur (exemple :
âge, grandeur, matricule…)

Multi-valué = attribut qui peut avoir plus qu’une valeur ( exemple:
diplômes)
Les concepts du modèle E/A.
Identifiant
 Une entité a un unique identifiant
 Un identifiant = une ou plusieurs propriétés
 Caractérise de manière unique une entité de l'ensemble/ un
enregistrement parmi d’autres.
Exemple:
JOUEURS
N°Joueur
NomJoueur
PrénomJoueur
Joueur
6,Cantona,Eric
Joueur
16,Cantona,Joël
(5/11)
32
Les concepts du modèle E/A.

Association
(6/11)
Ensemble de liens entre occurrences d'entités.
Joueur 1
Equipe
1
Joueur 2
Joueur 3
Joueur 4
Joueur 5

L'Equipe 1 Fait Jouer 5 Joueurs. Le Joueur 1 Joue dans l’Equipe 1.
Equipes
N°Equipe
NomEquipe
Ville
5-n
JOUEURS
Fait-Jouer
1-1
N°Joueur
NomJoueur
PrénomJoueur
33
Les concepts du modèle E/A.
Propriété d’une A
(7/11)
 Une association peut avoir une ou plusieurs propriété(s) si celleci dépend de toutes les occurrences d'entités qu'elle relie.
Matchs
0,n
N°Match
NbSpectateurs
NbPtsLocaux
NbPtsVisiteurs
jouer
NbPointsMarqués
0,n
JOUEURS
N°Joueur
NomJoueur
PrénomJoueur
34
Les concepts du modèle E/A.
Cardinalités
 La cardinalité minimale est 0 ou 1.
 La cardinalité maximale est 1 ou n.
 Il existe 4 types de cardinalités : 0,1 / 0,n / 1,1 / 1,n
Exemple :
Equipes
5-n
JOUEURS
Fait-Jouer
1-1
N°Equipe
NomEquipe
Ville
 Une Equipe Fait Jouer de 5 à n Joueurs.
 Un Joueur joue dans 1 et au plus 1 Equipe.
N°Joueur
NomJoueur
PrénomJoueur
(8/11)
35
Les concepts du modèle E/A.
Sous-entité
(9/11)
Une sous-entité exprime la notion d’héritage. Les sous-entités
héritent des attributs de la classe mère avec quelques spécifications
qui sont ces attributs.
Exemple:
36
Les concepts du modèle E/A.
Réflexive
(10/11)
Une association réflexive est une association binaire qui fait intervenir
au moins deux fois la même entité.
37
Les concepts du modèle E/A.
Entité faible
(11/11)
Une entité faible : entité sans identifiant propre et qui dépend d’une
autre entité dite forte.
NumSalle
38
Quelques conventions à Retenir
•
Les entités sont représentées dans des rectangles et s'écrivent en
lettres majuscules avec un nom au pluriel.
•
Le nom de l’association est un verbe à l’infinitif.
•
L'identifiant d'une entité (clé primaire) est le premier attribut cité et
est souligné. Les autres attributs sont placés à la suite.
•
Les relations sont placées dans des ellipses ou des losanges avec
leurs attributs respectifs.
•
Les cardinalités sont placées à côté de l'entité qu'elles caractérisent.
•
Les clés étrangères n'apparaissent pas dans l'entité où elle n'est pas
la clé primaire.
39
Démarche de conception
Voici une méthode possible pour réaliser un schéma E/A :
1.
Etablir la liste des entités
2.
Déterminer les attributs de chaque entité en choisissant un
identifiant
3.
Etablir les relations entre les différentes entités : les Associations
4.
Déterminer les attributs de chaque relation et définir les
cardinalités
5.
Vérifier la cohérence et la pertinence du schéma obtenu
Chapitre 2:
Le Modèle Relationnel
41
Objectifs du cours
1ère
2
ème
Partie : Définir Le modèle relationnel
Partie : Définir Les règles de passage
1.
Entités
2.
Associations
3ème Partie : Définir les règles d’optimisation
4
ème
Partie : La normalisation
1.
Principe
2.
Les formes normales
Objectifs de la partie :
Définition et notation du modèle
relationnel.
43
Le modèle relationnel.
Présentation
Modèle relationnel = Niveau logique
44
Le modèle relationnel.
i.
Définition
Un modèle relationnel est composé de relations. (tables)
ii. Ces relations dont décrites par des attributs (noms colonnes)
iii. Toute relation (ou table) a une et une seule clé primaire
(attribut souligné), qui peut être composée d’un ou plusieurs
attributs.
iv. Une relation peut faire référence à une autre en utilisant une
clé étrangère, qui correspond à la clé primaire de la relation
référencée.
45
Le modèle relationnel.
i.
Notations
Souligner la totalité de clé primaire d’une relation
ii. Précéder ou suivre les clés étrangères par une #
 Chaque ligne (tuple ou enregistrement) d’une table
représente une occurrence de l’entité ou de l’association
correspondante.
ème
2
Partie :
Les Règles de passage du modèle E/A au modèle
relationnel
Objectifs de la partie :
Définir les règles de passage du modèle
E/A au modèle relationnel, les règles
d’optimisation et quels cas particuliers.
47
Règles de passage. Entités
(1/2)
Une entité (modèle E/A) = Une Relation (modèle R)
i.
Nom de l’entité = Nom de la relation
ii. Attributs de l’entité = Attributs de la relation
iii. Les identifiants de l’entité = la clé primaire de la relation
48
Règles de passage. Entités
(2/2)
49
Règles de passage. Association
(1/2)
Une Association (modèle E/A) = Une Relation (modèle R)
i.
Nom de l’association = Nom de la relation
ii. Les identifiants des entités participantes = la clé primaire
de la relation
iii. Attributs de l’association + Les identifiants des entités
participantes = attributs de la relation
50
Règles de passage. Associations
(2/2)
51
Règles d’optimisation.
1. Repérer les cardinalités (0-1) et (1-1)
2. Déplacer tous les attributs de l’association vers l’entité du côté
des cardinalités (0-1) ou (1-1) en éliminant les attributs en
double.
3. Si le nombre d’entité restant est strictement inférieur à 2 alors
supprimer la relation (c à d l’ancienne association).
52
Règles de passage. Règle 1 ( X-N / 1-1)
53
Règles de passage. Règle 2 (X-N / X-N)
54
Règles de passage. Cas de l’association réflexive
1er Cas:
0-1 / 0-n
(1/2)
55
Règles de passage. Cas de l’association réflexive
2ème Cas:
0-n / 0-n
(2/2)
56
Règles de passage. Cas de l’association faible
57
Règles de passage. Cas d’une sous entité
1ère solution :
NomEquipe)
(1/2)
58
Règles de passage. Cas d’une sous entité
(2/2)
Remarque:
La mise à jour simultanée
de ces attributs peut être
réalisée à travers un
mécanisme automatique
implémentant l'héritage,
par exemple un
TRIGGER.
2ème solution
3ème Partie :
La normalisation des bases de données
Objectifs de la partie :
Définition de la normalisation, son
intérêt ainsi que les 3 formes
normales
60
Normalisation. Principe et Objectifs
i.
Normaliser une base = imposer des règles de construction à
sa structure afin de respecter la cohérence des données et
éviter toute redondance d'informations.
ii. L’objectif de la normalisation = construire un schéma
de
bases de données cohérent. Pour qu’un modèle relationnel
soit normalisé, il faut respecter certaines contraintes
appelées Formes Normales. Ces FN s’appuient sur des
Dépendances Fonctionnelles (DF).
61
Exemple. Enoncé
Pour vous montrer l’intérêt de la normalisation d’une BDR, commencez par
détecter les problèmes que peuvent poser l’utilisation d’une BD basée sur ce
modèle relationnel non normalisé.
62
Exemple. Réponse
(1/2)
63
Exemple. Réponse
(2/2)
64
Exemple. Conclusion
La normalisation élimine les redondances, ce qui permet :
 Une diminution de la taille de la base de donnée sur le
disque
 Une diminution des risques d’incohérence
 D’Éviter une mise à jour multiple des mêmes données
65
Normalisation. Dépendance Fonctionnelle : Définition
Définition :
B est en dépendance fonctionnelle de a si à une
valeur quelconque de la propriété a on ne peut
faire correspondre qu’une seule valeur au plus
de la propriété b.
Si on connait la valeur de a, on peur en déduire
une seule valeur de b (le contraire n’est pas
vrai)
66
Normalisation. Dépendance Fonctionnelle : Exemple
Exemple de DF:
Num_client  Nom_client
i.
Il existe une DF entre le numéro client et son nom.
ii.
Si on connait une valeur de la propriété « num_client »
(ex: 127), on ne peut lui correspondre qu’une seule valeur
de la propriété « nom_client » (ex: Bensalah ali )
67
Normalisation. Les formes normales (1
ère
FN)
(1/3)
1ère FN: Il s’agit de vérifier si tous les attributs sont
élémentaires + mono valués
Exemple1. Attributs composés :
1er Cas : Si la personne a une seule adresse
68
Normalisation. Les formes normales (1
ère
FN)
2ème Cas: Si la personne peut avoir plusieurs Adresses
(2/3)
69
Normalisation. Les formes normales (1
Exemple2. Attributs multivalués :
ère
FN)
(3/3)
70
Normalisation. Les formes normales (2
ème
FN)
(1/2)
2ème FN: Une relation est en 2FN si elle est en 1FN et de plus, si
les attributs n'appartenant pas à la clé primaire ne dépendent
pas fonctionnellement d'une partie de la clé.
Exemple : Gestion de compte bancaire
OPERATION (N°Compte, CodeOpe, DateOpe, Nom, Prenom, LibelOpe, Somme)
On note que :
- Nom et Prénom dépendent fonctionnellement de N°Compte
- Libellé d'opération dépend fonctionnellement de Code opération
71
Normalisation. Les formes normales (2
ème
FN)
(2/2)
Correction - Exemple : Gestion de compte bancaire
On va obtenir les relations suivantes :
COMPTE(N°Compte, Nom, Prénom)
LIBELLE(CodeOpe, LibelOpe)
OPERATION(#N°Compte, DateOpe, #CodeOpe, somme)
72
Normalisation. Les formes normales (3
ème
FN)
(1/4)
3ème FN: Une relation est en 3FN si elle est en 2FN
et de plus, tout attribut non clé ne dépend pas fonctionnellement
d'un autre attribut non clé.
Exemple 1 : l'organisme de formation
Soit la relation:
ADHERENT(CodeAdh,NomAdh,AdressAdh,TypAdh,CotisTyp,NbSaladh)
 On impose que la cotisation de l'adhérent dépend fonctionnellement du type
de l'adhérent. (TypAdh  CotisTyp)
73
Normalisation. Les formes normales (3
ème
FN)
(2/4)
Correction – Exemple 1 : l'organisme de formation
TYPE(TypAdh, CotisAdh)
ADHERENT(CodeAdh,NomAdh,AdressAdh,#TypAdh, NbSaladh)
74
Normalisation. Les formes normales (3
ème
FN)
(3/4)
Exemple 2 : l'organisation des salariés
Soit la relation:
SALARIES(num_salarié, nom,date_naissance,num_service,nom_service)
Et la dépendance suivante:
num_service  nom_service
75
Normalisation. Les formes normales (3
ème
FN)
(4/4)
Correction - Exemple 2 : l'organisation des salariés
SALARIES (Num_salarié, nom, date_naissance,#num_service)
SERVICES (Num_service, nom_service)
76
Exercice.
Enoncé
Soit la relation suivante:
SOIGNER (code_medecin, code_malade, nom_medecin,
nom_malade, date , adresse )
On note que:
code_medecin nom_medecin
code_malade nom_malade
Chaque médecin a un seul cabinet
Question : Mettre la relation en 3FN.
77
Exercice. Solution
Medecin (code_medecin , nom_medecin )
Malade (code_malade, nom_malade )
Soigner (code_malade#, code_medecin#, date , num,
nom_rue, ville, CP )
Chapitre 3:
L’ a l g è b r e R e l a t i o n n e l l e
79
Objectifs du cours.
1.
Qu’est ce qu’une Algèbre Relationnelle?
2.
Les types d’opérations
3.
i.
Les opérateurs de base
ii.
Les opérateurs ensemblistes
iii.
Opérations d’agrégation
Exercices d’application
80
Introduction
i.
le modèle relationnel est un modèle d'organisation des
données sous forme de Tables (Tableaux de valeurs) ou
chaque
Table
représente
une
Relation,
au
sens
mathématique d'Ensemble.
ii. Les colonnes des tables s'appellent des attributs et les
lignes des n-uplets ou enregistrements.
81
Qu’est ce qu’une algèbre relationnelle?
i.
Une algèbre est
un ensemble d’opérateurs de
base,
formellement définis, qui peuvent être combinés à souhait
pour construire des expressions algébriques.
ii. Une algèbre relationnelle est un ensemble d’opérateurs
agissant sur des relations et produisant des relations.
i.
Les Opérandes sont des relations du modèle relationnel,
ii.
le résultat de toute opération est une nouvelle relation
82
Les types d’opérations
i.
Opérations de base

Projection, Sélection, Jointure
ii. Opérations ensemblistes

Union, Intersection

Différence, Produit
iii. Opérations d’agrégation

Somme, Moyenne, Minimum, comptage…
83
Opérations de base.
i.
Projection
(1/2)
Définition
Notée (

) cet opération permet d’extraire des colonnes d’une
relation. Cet opérateur ne porte que sur 1 relation.
Il permet de ne retenir que certains attributs spécifiés d'une relation.
L’opérateur de projection doit éliminer les duplicata
ii. Syntaxe
R = PROJECTION (R1, liste des colonnes)
Équivalent à
 colonnes (R1)
84
Opérations de base.
Projection
(2/2)
iii. Exemple
Soit le schéma relationnel suivant :
R1
Quelles sont les espèces enregistrées dans la tables CHAMPIGNONS?
Résultat :
85
Opérations de base.
i.
Sélection
(1/2)
Définition
Notée ( ) cet opération permet de Sélectionner un sous-ensemble
de lignes d’une relation. (tout en conservant la totalité des colonnes)
ii. Syntaxe
R = SELECTION (R1, condition)
Équivalent à
 condition (R1)
Rq: une condition est exprimée à l'aide des opérateurs arithmétiques ( =, >,
<, >=, <=, <>) ou logiques de base (ET, OU, NON).
86
Opérations de base.
Sélection
(2/2)
iii. Exemple
Soit le schéma relationnel suivant :
R3
Quelle est la liste des champignons dont la catégorie est ‘Sec’ ?
Résultat :
87
Opérations de base.
i.
Jointure
(1/3)
Définition
Notée ( ) ) cet opération permet d’extraire des lignes de deux relations
différentes. Généralement, ce sont les Primary Key et Foreign Key qui
sont utilisées.
ii. Syntaxe(s)
R = JOINTURE (R1, R2, conditions)
Rq: - condition d'égalité entre attributs  équijointure
- condition d’inégalité (<,>, <=,>=, <>…)  non équijointure
88
Opérations de base.
Jointure
(2/3)
iii. Exemple
Soit le schéma relationnel suivant :
???
89
Opérations de base.
Jointure
iii. Exemple – solution
R = JOINTURE (PRODUIT, DETAIL_COMMANDE,
Produit.CodePrd=Détail_Commande.CodePrd)
(3/3)
90
Opérations ensemblistes.
i.
Union
(1/3)
Définition
∪ ) cet opération permet de ramener toutes les lignes
Notée ( 
distinctes existante dans les deux relations..
ii. Syntaxe
R = R1 UNION R2
Ou
R = UNION ( R1 , R2)
91
Opérations ensemblistes.
Union
iii. Exemple
Soit le schéma relationnel suivant :
Quelle est la liste des enseignantes qui sont élus au CA OU
représentants syndicaux?
(2/3)
92
Opérations ensemblistes.
Union
(3/3)
iii. Exemple – solution
R = UNION (E1 ,E2)
Rq: La relation résultat possède les attributs des relations d'origine et les nuplets de chacune, avec élimination des doublons éventuels.
93
Opérations ensemblistes.
i.
Intersection
Définition
(1/3)

Notée ( ∩ ) cet opération permet de ramener toutes les lignes
communes dans les deux relations..
ii. Syntaxe
R = INTERSECTION ( R1, R2)
94
Opérations ensemblistes.
Intersection
iii. Exemple
Soit le schéma relationnel suivant :
Quelle est la liste des enseignantes qui sont élus au CA ET
représentants syndicaux?
(2/3)
95
Opérations ensemblistes.
Intersection
(3/3)
iii. Exemple – solution
R = INTERSECTION (E1 ,E2)
Remarque : La relation résultat possède les attributs des relations d'origine
et les n-uplets communs à chacune.
96
Opérations ensemblistes.
i.
Différence
(1/3)
Définition
Notée ( - ) cet opération permet de ramener toutes les lignes de la
première relation sauf les lignes existante dans la seconde relation.
ii. Syntaxe
R = DIFFERENCE ( R1, R2)
97
Opérations ensemblistes.
Différence
iii. Exemple
Soit le schéma relationnel suivant :
Quelle est la liste des enseignantes du CA qui ne sont pas des
représentants syndicaux?
(2/3)
98
Opérations ensemblistes.
Différence
(3/3)
iii. Exemple – solution
R = DIFFERENCE (E1 ,E2)
Rq: La relation résultat possède les attributs des relations d'origine et les nuplets de la première relation qui n'appartiennent pas à la deuxième.
- DIFFERENCE (R1, R2) ne donne pas le même résultat que DIFFERENCE
(R2, R1)
99
Opérations ensemblistes.
i.
Produit
(1/3)
Définition
Notée ( X ) cet opération permet de ramener un produit cartésien
formé par la concaténation de chaque n-uplet de la première relation
avec l'ensemble des n-uplets de la deuxième relation.
ii. Syntaxe
R = PRODUIT ( R1, R2)
100
Opérations ensemblistes.
iii. Exemple
Soit le schéma relationnel suivant :
Examen??
Produit
(2/3)
101
Opérations ensemblistes.
Produit
iii. Exemple – solution
Examen = PRODUIT (Etudiants, Epreuves)
(3/3)
102
Exercice1.
Enoncé
Soit le schéma relationnel suivant :
CLIENTS (CodeClient, NomClient, AdrClient, TélClient)
COMMANDES (N°Commande, Date, CodeClient#)
Question : Ecrire les relations qui permettent d’obtenir le
code et le nom des clients ayant commandé le 10/06/97
103
Exercice1.
Solution
Soit le schéma relationnel suivant :
R1 = SELECTION (COMMANDE, Date=10/06/97)
R2 = JOINTURE (R1,CLIENT,R1.CodeClient=CLIENT.CodeClient)
R3 = PROJECTION (R2, CodeClient, NomClient)
104
Opérations d’agrégation.

Elles
sont
utilisées
dans
les
Définition
opérateurs
(1/2)
CALCULER
et
REGROUPER_ET_CALCULER.

Elles portent sur un ou plusieurs groupes de n-uplets et évidemment
sur un attribut de type numérique.
i.
Somme (attribut) : total des valeurs d'un attribut
ii.
Moyenne (attribut) : moyenne des valeurs d'un attribut
iii.
Minimum (attribut) : plus petite valeur d'un attribut
iv.
Maximum (attribut) : plus grande valeur d'un attribut
105
Opérations d’agrégation.
v.
Définition
(2/2)
La fonction de comptage : Comptage()
Définition:
La fonction de comptage donne le nombre de n-uplets ou
enregistrements d'une relation.
R=CALCULER(R0,
fonction_agreg1,
fonction_agreg2,
...)
ou
N=CALCULER(R0, fonction_agreg)
R=REGROUPER_ET_CALCULER(R0, att1, att2, ..., fonction_agreg1,
fonction_agreg2, ...)
106
Exercice2.
Enoncé
Soit le schéma relationnel suivant :
ETUDIANT (N°Etudiant, Nom, Prénom)
MATIERE (CodeMat, LibelléMat, CoeffMat)
EVALUER (N°Etudiant#, CodeMat#, Date, Note)
Q1. Quel est le nombre total d'étudiants ?
Q2. Quelle est la moyenne générale de la promotion ?
107
Exercice2.
Corrigé
1.
N= CALCULER ( ETUDIANT, Comptage( ) )
2.
MGETU = REGROUPER_ET_CALCULER ( MOYETUMAT, N°Etudiant,
Nom, Prénom, MgEtu : Somme (MoyEtuMat*CoeffMat) / Somme
(CoeffMat))
MG = CALCULER (MGETU, Moyenne(MgEtu))
Chapitre 4:
SQL : L a n g a g e d e d é f i n i t i o n
des données
109
Objectifs du cours
(1/2)
1ère Partie : Introduction du langage SQL
2ème Partie : Présentation du langage LDD
1.
Définir « LDD »
2.
Les types de données
3ème Partie : Création d’une table/des contraintes d’intégrités
1.
Créer une table
2.
Ajouter une contrainte clé primaire
3.
Ajouter une contrainte clé étrangère
4.
Autres contraintes ( not null, check, unique)
110
Objectifs du cours
5.
Activer / désactiver une contrainte
4ème Partie : Manipulation de la structure de la table
1.
Ajouter, modifier, supprimer une colonne/contrainte
2.
Supprimer une table
3.
Renommer une table
(2/2)
111
1ère Partie:
Introduction du langage SQL
Objectifs de la partie :
Introduire et définir le langage SQL.
112
Introduction générale.
 Pour interroger une BD, il faut utiliser un langage .
 SQL est le langage le plus complet pour interagir une BD.
113
Définition de l’SQL.
SQL (Structured Query Language ), en français langage de requête
structurée, est composé d’un ensemble de sous langages:

un langage de définition de données (LDD),

un langage de manipulation de données (LMD),

un langage d’interrogation de données (LID),

un langage de contrôle de données (LCD),
pour les bases de données relationnelles.
114
2ème Partie :
Présentation du langage LDD
Objectifs de la partie :
Définition et présentation du langage
de définition de données ainsi que les
différents types de données.
115
LDD.
Le langage de définition de données, c’est un langage qui
permet de définir et manipuler les structures de
données et non pas les données.
Structure de données : tout objet de la BD destiné à
contenir des données : Exemple : TABLE.
116
Les types de données.
Types de données
Description
CHAR [(size [BYTE | CHAR])]
Taille fixe comprise entre 1 et 2000
VARCHAR2 (size)
Taille Variable comprise entre 1 et 4000
BINARY_FLOAT
Nombre ayant une précision p et une échelle s. La précision est
comprise entre 1 et 38. L’échelle varie de -84 à 127
32-bit nombre avec virgule flottante. C etype nécessite 5 octets
BINARY_DOUBLE
64-bit nombre avec virgule flottante. C etype nécessite 9 octets
LONG
Données caractères ayant une taille <= 2GO
DATE
Date comprise entre 1/1/4712 AJC et 31/12/999 APJC
TIMESTAMP
Année, mois, jour , heure, minute et seconde, fraction de seconde
INTERVAL YEAR(year_precision)
TO MONTH
Stocke une période de temps en année et mois, où year_precision
est compris entre 0 et 9. La valeur par défaut est 2
NUMBER[(precision [, scale]])
117
3ème et 4ème Partie :
Création d’une table/contraintes d’intégrités –
Manipulation de la structure d’une table
Objectifs de la partie :
Comment créer une table et définir les contraintes d’intégrités.
Comment
ajouter,
modifier
supprimer des colonnes ou
contraintes…
ou
des
118
Créer une table.
Syntaxe
Syntaxe :
CREATE TABLE <nom_de_la_table>
( <nom_colonne1> <type_colonne1>,
<nom_colonne2> <type_colonne2>,
<nom_colonne’> <type_colonne’>
);
Remarque : Pour créer une table il faut avoir :
• Le privilège CREATE TABLE
• Un espace de stockage
…
119
Créer une table.
Exemple
 CREATE TABLE Etudiants
( Netudiant number,
Nom varchar2(10),
Prenom varchar2(10)
);
 DESCRIBE (ou DESC) Etudiants ; --pour voir la description de la table
120
Ajouter une contrainte clé primaire
- Syntaxe
(1/2)
1er cas : clé primaire simple
Syntaxe 1: lors de la création de la table:
CREATE TABLE <nom_de_la_table>
( <nom_col1 > <type_col1> CONSTRAINT <nom_contrainte> PRIMARY KEY,
<nom_col2 > <type_col2>, …
<nom_coln > <type_coln>
);
 Contrainte niveau colonne.
Syntaxe 2: après la création de la table :
ALTER TABLE <nomtable> ADD Constraint <nom_contrainte> Primary key
(nom_Col)
121
Ajouter une contrainte clé primaire
- Syntaxe
(2/2)
2ème cas : clé primaire composée
Syntaxe 1: lors de la création de la table:
CREATE TABLE <nom_de_la_table>
( <nom_col1 > <type_col1>,
<nom_col2> <type_col2>,
…
<nom_coln> <type_coln>,
Constraint <nom_contrainte> Primary key (nomCol1, nomCol2...) );
 Contrainte niveau Table
Syntaxe 2: après la création de la table :
ALTER TABLE <nom_de_la_table> ADD constraint <nom_contr> Primary key
(nomCol1,nomcol2…)
122
Ajouter une contrainte clé primaire
- Exemple
Syntaxe :
ALTER TABLE <nom_de_la_table> ADD Constraint
<nom_contrainte> PRIMARY KEY (nom_colonne(s))
ALTER TABLE Etudiants ADD Constraint pk_nom_prenom PRIMARY KEY
(nom,prenom) ;
123
Supprimer
une contrainte clé primaire.
Syntaxe :
ALTER TABLE <nom_de_la_table> DROP CONSTRAINT
<nom_contrainte> ;
ALTER TABLE Etudiants DROP CONSTRAINT pk_nom_prenom ;
124
Ajouter
une contrainte clé étrangère.
Syntaxe :
ALTER TABLE <nom_de_la_table> ADD constraint <nom_contrainte>
FOREIGN KEY (nom_cols) references <table_référencée>
(nom_cols) ;
Create table Etud as select * from Etudiants;
Alter table Etud ADD constraint pk_nom_prenom PRIMARY KEY (nom,prenom) ;
ALTER TABLE Etud ADD constraint fk_etud_etudiants FOREIGN KEY
(nom,prenom) references Etudiants (nom,prenom) ;
125
Ajouter
une contrainte <NOT NULL>.
Cette contrainte est définie :
- Soit lors de la création de la table, syntaxe :
<nom_colonne> <type_colonne> constraint <nom_de_contrainte> NOT NULL
- Soit après la création de la table, syntaxe :
Alter table <nom_tab> modify <nom_col> constraint <nom_de_contr> NOT NULL
La contrainte NOT NULL ne peut être définie qu’au niveau de la
colonne, pas au niveau de la table
126
Ajouter
une contrainte <UNIQUE> -
Définition
Une contrainte d’intégrité de type clé unique exige que chaque valeur
dans une colonne ou dans un ensemble de colonnes constituant
une clé soit unique.
Remarque : Une contrainte unique autorise la valeur NULL à
moins que vous définissiez des contraintes NOT NULL
127
Ajouter
une contrainte <UNIQUE>
- Syntaxe
Cette contrainte est définie :
- Soit lors de la création de la table, syntaxe :
<nom_colonne> <type_colonne> constraint <nom_de_contrainte> UNIQUE
- Soit après la création de la table, syntaxe :
Alter table <nom_table> add constraint <nom_de_contrainte> UNIQUE
(<nom_colonne>)
128
Ajouter
une contrainte <CHECK>.
La contrainte Check définit une condition que chaque ligne doit vérifier
Cette contrainte est définie :
- Soit lors de la création de la table, syntaxe :
<nom_colonne> <type_col> CONSTRAINT <nom_de_contr> CHECK (condition)
- Soit après la création de la table, syntaxe :
Alter table <nom_table> ADD CONSTRAINT <nom_de_contr> CHECK (condition)
129
Gérer des colonnes et/ou des contraintes
- Syntaxes
Syntaxe générale :
ALTER TABLE <nom_table>
+ ADD
<Nouvelle définition de la colonne>
+ MODIFY
+ DROP
+ ADD CONSTRAINT
<Nom_colonne>
<Nouvelle définition de la contrainte>
+ DROP CONSTRAINT
+ ENABLE CONSTRAINT
+ DISABLE CONSTRAINT
<Nom_contrainte>
130
Ajouter une/plusieurs colonne(s).
Exemple
Ajouter 2 colonnes à la table « Etudiants »
ALTER TABLE Etudiants ADD (telephone number ,email varchar2(50) );
131
Modifier une colonne. Exemple
Syntaxe :
ALTER TABLE <nom_de_la_table> MODIFY <nouvelle définition de la colonne>
ALTER TABLE Etudiants MODIFY ( email varchar2(100) );
132
Supprimer une colonne.
Exemple
Syntaxe :
ALTER TABLE <nom_de_la_table> DROP <colonnes>
ALTER TABLE Etudiants DROP ( email, telephone);
133
Activer/Désactiver une contrainte.
Syntaxe :
ALTER TABLE <nom_de_la_table>
ENABLE | DISABLE constraint <nom_de_la_contrainte>;
134
Supprimer
une table.
DROP / TRUNCATE
Syntaxe :
DROP TABLE
<nom_de_la_table> ;
Remarque:
On a aussi la commande « TRUNCATE » qui permet de vider la table
TRUNCATE TABLE <nom_de_la_table> ;
135
Renommer une table.
Syntaxe :
RENAME <ancien _nom_table> TO <nouveau_nom_table> ;
Chapitre 5:
SQL : L a n g a g e d e M a n i p u l a t i o n
des données
137
Objectifs du cours
1.
Définir le langage « LMD »
2.
Insertion des données
3.
Mise à jour des données
4.
Suppression des données
138
Définir le langage LMD
LMD : Langage de Manipulation des Données (DML, Data
Manipulation Language)
i.
Il Permet la manipulation des tables, soit l’insertion, la
mise à jour et la suppression des données.
ii. Il est composé de 3 Requêtes :
UPDATE, INSERT, DELETE.
139
Insertion des données
– Syntaxe IMPLICITE
(1/3)
1er cas: Insertion dans toutes les colonnes
INSERT INTO <nom_de_la_table> VALUES
( <valeur_colonne1>,
<valeur_colonne2>, …
<valeur_colonne’>
);
Remarque: le nombre de valeurs de colonnes doit être égal au nombre de
colonne de la table et conformément à leurs types
140
Insertion des données
– Syntaxe EXPLICITE
2ème cas: Insertion dans quelques colonnes
INSERT INTO <nom_de_la_table>
( <colonne1>,
<colonne2>,
<colonne3> )
VALUES
( <valeur_colonne1>,
<valeur_colonne2>,
<valeur_colonne3> );
(2/3)
140
Insertion des données
– Remarques
(3/3)
i.
Les valeurs à ajouter doivent vérifier les contraintes
définies au moment de la définition des données. Tout
enregistrement ne vérifiant pas les contraintes sera rejeté.
ii.
Les champs ayant été créés avec la contrainte Not Null
devront, obligatoirement, avoir des valeurs.
iii. Insertion à partir d'une autre table :
INSERT INTO nom_table [(les_champs_de_la_table)] Requête;
141
Insertion des données
– Exercice - Enoncé
(1/2)
Soit le schéma relationnel suivant :
CLIENTS (CodeClient, NomClient, AdrClient, TelClient)
COMMANDES (NumCommande, Date, CodeClient#)
Questions:
1. Créer les 2 tables avec les contraintes d’intégrité (clés
primaires et étrangères)
142
Insertion des données
– Exercice - Enoncé
(2/2)
2. Insérer les lignes suivantes:
CLIENTS
CodeClient
NomClient
AdrClient
TelClient
C01
Bensalem Ali
3 rue tunis 2080 tunis
71123800
C02
Toumi salma
-
71129870
COMMANDES
NumCommande
Date
CodeClient
110
03/04/2011
C01
111
09/07/2011
C02
143
Mise à jour des données
(1/2)
Syntaxe:
UPDATE <nom_table> SET <colonne_a_modifié> = <nouvelle_valeur>
WHERE ( <condition_de_mise_à_jour> );
Exemple:
Le client Bensalem Ali vient de changer d’adresse et habite avec le client
Toumi salma à « 15 rue Basra Bizerte 7000 », veuillez mettre à jour les
deux adresses.
143
Mise à jour des données
- Remarques
(2/2)
i.
Il n'est pas possible de mettre à jour plus qu'une table à la
fois.
ii.
La modification des données n’est pas autorisée que si les
contraintes sont toujours valides.
iii. Les valeurs peuvent être des constantes, des expressions,
des résultats de sous-requêtes ou NULL (pour supprimer
la valeur initiale du champ).
iv. Si la clause WHERE n’apparaît pas dans la commande, il
s’agit de mettre à jour tous les enregistrements de la
table avec la même valeur.
144
Suppression des données
Syntaxe:
DELETE FROM <nom_table> WHERE ( <conditions> );
Chapitre 6:
SQL : L a n g a g e d’ i n t e r r o g a t i o n
des données
146
Objectifs du cours.
1.
Définir le LID
2.
Savoir formuler des Requêtes simples « SELECT »
3.
Distinguer les fonctions mono lignes/multi lignes
4.
Définir les Jointures, les Opérateurs ensemblistes et les
sous-interrogations
147
1ère Partie :
Les Requêtes simples « la clause SELECT »
Objectifs de la partie :
Définir «LID», savoir sélectionner des
colonnes avec ou sans doublons, avec ou sans
des conditions connaître les Expressions
arithmétiques, la Valeur « NULL », les Alias
de colonne, les opérateurs logique et ceux de
comparaison.
148
LID.
(1/2)
Le langage LID permet, comme son nom l’indique, d’interroger
une BD. Il sert à rechercher, extraire, trier, mettre en forme des
données et calculer d’autres données à partir des données
existantes.
La structure de base d’une interrogation est formée des 3 clauses
suivantes :
SELECT *|<liste champ(s)> FROM <nom_table>
WHERE <condition(s)> ;
149
LID.

(2/2)
La clause SELECT : indique les colonnes à récupérer. (ou
encore des champs projetés).

La clause FROM indique le nom de la ou des table(s)
impliquée(s) dans l’interrogation.

La clause WHERE correspond aux conditions de sélection
des champs.

Chaque nom de champ ou de table est séparé par une
virgule.
150
Sélection des colonnes.
SELECT
*
FROM employees;
Résultat:
Toutes les colonnes
Affiche tous les champs
de la table
151
Sélection des colonnes.
SELECT first_name, last_name
FROM employees;
Résultat:
Une/plusieurs colonnes
Affiche les champs :
« last_name » et
« first_name »
152
Expressions arithmétiques.
i.
Définition
Une expression contient des données de type NUMBER,
DATE et des opérateurs arithmétiques.
Opérateur
Description
+
Addition
-
Soustraction
*
Multiplication
/
Division
153
Expressions arithmétiques.
Exemple 1
SELECT min_salary + max_salary , min_salary - max_salary,
min_salary * max_salary, min_salary / max_salary
FROM jobs;
Résultat:
154
Expressions arithmétiques.
Exemple 2
Ecrire la requête qui permet d’afficher le nom, prénom de
tous les employés ainsi que leur salaire annuel avec une
augmentation de 50 dinars par mois.
155
Valeur «NULL».
Définition
 NULL est une valeur qui n’est pas disponible, non affectée ou inconnue.
 NULL est différent de zéro, espace ou chaîne vide
Exemple 1:
SELECT employee_id, commission_pct
FROM employees ;
Résultat:
156
Valeur «NULL».
Dans les expressions arithmétique.
Exemple 2 :
SELECT Employee_id, (1+commission_pct)*salary
FROM employees;
Résultat:
157
Alias de colonne.

Renomme un en-tête de colonne

Suit le nom de colonne

Peut utiliser le mot clé « as »

Doit obligatoirement être inclus entre guillemets s’il
contient des espaces, des caractères spéciaux ou s’il y a
des majuscules et des minuscules
(1/2)
158
Alias de colonne.
Exemple
(2/2)
SELECT first_name as nom, last_name prenom
FROM employees;
Résultat:
SELECT first_name as "nom de l’employee", last_name "prenom de l’employee"
FROM employees;
Résultat:
159
Opérateur de concaténation.

Concatène des colonnes et/ou des chaines de caractères

Est représenté par le symbole ||
Exemple:
SELECT 'le nom est ' ||first_name|| ', le prénom est '||last_name as "nom et
prenom de l’employe"
FROM employees;
Résultat:
160
Eliminer les doublons

le mot-clé DISTINCT élimine les doublons.
Exemple:
SELECT DISTINCT(commission_pct)
FROM employees;
Résultat:
161
Restriction avec la clause « WHERE »
Syntaxe :
SELECT<nom_des colonnes> FROM <nom_de_la_table >
WHERE <conditions>;
Exemple: liste des employés du département 20
SELECT last_name , first_name FROM employees
WHERE department_id=20;
Résultat:
162
Opérateurs de comparaison.
OPERATEUR
=
<
<=
>
>=
<> Ou !=
BETWEEN val1 AND val2
In (liste de valeurs)
LIKE
DESCRIPTION
Egal à
Inférieur à
Inférieur à ou égal
Supérieur à
Supérieur à ou égale à
Différent
val1 <= val <= val2
Valeur de la liste
Comme
( _ :un caractère, %=plusieurs caractères)
IS NULL
Correspond à une valeur NULL
(1/2)
163
Opérateurs logiques.
OPERATEUR
AND
OR
NOT
(2/2)
DESCRIPTION
Retourne TRUE si les deux conditions sont VRAIES
Retourne TRUE si au moins une des conditions est
VRAIE
Inverse la valeur de la condition
TRUE si la condition est FAUSSE
FALSE si la condition est VRAIE
164
Trier avec « ORDER by ».
Définition
Triez les lignes selon un ordre bien précis avec la clause
ORDER BY:

ASC : ordre croissant (par défaut)

DESC : ordre décroissant
Remarque: La clause ORDER BY vient en dernier dans
l’instruction SELECT
165
Trier avec « ORDER by ».
Exemple
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC;
Résultat:
166
Exercices d’applications.
(1/2)
( nous allons utilisé la table « employees » sous le schèma HR )

Afficher la liste de tous les employés.

Afficher le nom, le prénom, la date d’embauche de tous les employés et
renommer les colonnes comme suit: « nom de l’employe », « prenom de
l’employe » et « date dembauche »

Afficher le nom et le prénom des employés triés par date d’embauche.

Afficher les employés qui ont été embauché au cours de l’année 1990.

Afficher la liste des employés dont le salaire est > 2800.

Afficher la liste des employés des départements 10, 30 et 50.
167
Exercices d’applications.

(2/2)
Afficher la liste des employés dont le salaire entre 4000 et 6000 du
département 20

Afficher la liste des employés dont la commission_pct est NULL.

Afficher la liste des employés dont le nom commence par la lettre ‘A’

Afficher la liste des employés dont le prénom comporte la lettre ‘s’

Afficher la liste des employés dont la deuxième lettre du nom est ‘i’

Afficher la liste des employés embauchés pendant les années entre 1986
et 1990

Afficher la liste des employés dont le job est différent de 'CLERK‘ ou
'MANAGER'
2ème Partie :
Les Fonctions Mono lignes
Objectifs de la partie:
Définir et savoir utiliser les :
i.
ii.
iii.
iv.
v.
vi.
Fonctions de caractères
Fonctions de manipulation des caractères
Fonctions de manipulation des dates
Fonctions numériques
Fonctions de conversions
Autres fonctions
169
Fonctions de caractères.
Conversion Minuscule/Majuscule(1/2)
Il existe trois fonctions principales:
 LOWER : convertir les caractères « M » en « m »
 UPPER : convertir les caractères « m » en « M »
 INITCAP : convertir l’initiale de chaque mot en « M » et les
caractères suivants en « m »

Remarque: Une fonction mono ligne est une fonction qui s’applique
enregistrement par enregistrement.
170
Fonctions de caractères.
Conversion Minuscule/Majuscule(2/2)
SELECT LOWER(last_name) as "prénom" FROM employees;
SELECT UPPER(last_name) as "prénom" FROM employees;
SELECT INITCAP(last_name) as "prénom" FROM employees;
171
Fonctions de manipulation des caractères.

CONCAT(chaine1,chaine2) : concatène 2 chaines = ||

SUBSTR(chaine,
pos, taille)
Définitions (1/2)
: extrait une sous chaîne d’une autre
chaîne

LENGTH(ch) : taille d’une chaîne en caractères

INSTR(ch,sch) : position d’une chaîne de caractères dans une
autre chaîne

TRIM(ch) : élimine les espaces à gauche et à droite

LTRIM(ch) : élimine les espaces à gauche

RTRIM(ch) : élimine les espaces à droite
172
Fonctions de manipulation des caractères.

Définitions (2/2)
LPAD (chaine, nbr, carac) : complète une chaîne de caractères sur la
gauche avec une autre chaîne pour avoir n caractères.

RPAD
(chaine, nbr, carac):
complète une chaîne de caractères sur la
droite avec une autre chaîne pour avoir n caractères.

ASCII (chaine) : retourne le code ascii du premier caractère de
la chaîne.

CHR (nbr): retourne le caractère (inverse de ascii).
173
Fonctions de manipulation des caractères.
SELECT 'station' ch1, 'agil' ch2,
Concat ('station 1','agil') "la station",
Substr ('station 1',9,1) "numéro station",
Length ('agil') "longueur ch1",
Instr ('agil','i') "position de i",
Length (Trim(' agil ')) "trim",
Length (Rtrim(' agil ')) "Rtrim",
Length (Ltrim(' agil ')) "Ltrim",
Rpad ('agil',8,'*') "RPAD", Lpad ('agil',8,'-') "LPAD",
ASCII ('test') " code ascii " , CHR(75)
FROM Dual;
Exemples
174
Fonctions numériques.
Présentation

ROUND (x, n) : Arrondir la valeur de x à la précision spécifiée n

TRUNC (x, n) : Tronquer la valeur de x à la précision spécifiée n

FLOOR (x) : si n<x<n+1 alors FLOOR(x)=n

CEIL (x) : si n<x<n+1 alors CEIL(x)=n+1

MOD (x, y) : reste de la division de x sur y

REMAINDER (m, n) : reste d’une division calculé comme suit :
m-(n*q) avec q égale à la partie entière du quotient
175
Fonctions numériques.
Round
SELECT round(123.646, 0) "0 chiffres" , round(123.646, 1) "1 chiffres",
round(123.646, 2) "2 chiffres", round(123.646, 3) "3 chiffres"
FROM Dual;
Résultat:
(1/2)
176
Fonctions numériques.
Round
SELECT round(123.646, -1) "1 chiffres" ,round(123.646, -2) "2 chiffres",
round(123.646, -3) "3 chiffres"
FROM Dual;
Résultat:
(2/2)
177
Fonctions numériques.
SELECT
TRUNC
TRUNC (123.646, 0) "n=0", TRUNC (123.646, 1) "n=1",
TRUNC (123.646, 2) "n=2", TRUNC (123.646, 3) "n=3", TRUNC (123.636, -1)
"n=-1", TRUNC (123.646, -2) "n=-2", TRUNC (123.646, -3) "n=-3"
FROM Dual;
Résultat:
178
Fonctions numériques.
SELECT
FLOOR/ CEIL
floor(-2.56), floor(-2.02), floor(-2.8),
ceil(-2.56), ceil(-2.02), ceil(-2.8)
FROM dual;
Résultat:
SELECT
floor(2.56), floor(2.02), floor(2.8),
ceil(2.56), ceil(2.02), ceil(2.8)
FROM dual;
Résultat:
179
Fonctions numériques.
SELECT
MOD/ REMAINDER
MOD (12, 4), MOD (16, 6)
FROM Dual;
Résultat:
SELECT
remainder (15, 6), remainder (15, 5),
remainder (15, 4), remainder (-15,4)
FROM Dual;
15-(2*6) = 3 / 15-(3*5) = 0 / 15-(4*4) = -1 / -15-(-4*4) = 1
Résultat:
180
Fonctions de manipulation des dates.
(1/3)

MONTHS_BETWEEN (date1,date2): nombre de mois entre deux dates

ADD_MONTHS (date, nb_mois): Ajoute des mois calendaires à une date

NEXT_DAY (date, jour) : le jour suivant

LAST_DAY (date) : le dernier jour du mois

ROUND (date, précision) : arrondi une date

TRUNC (date, précision) : tronque une date

EXTRACT (day/month/year/hour/minute/seconde from date): extraction du
jour, mois, année, heure, minute et seconde
181
Fonctions de manipulation des dates.
SELECT
(2/3)
sysdate "date du jour",
sysdate+2 "Date jr plus 2jrs",
to_date ('10/09/2012','dd/mm/yyyy')-10 "date du jour moins 10" ,
Trunc (sysdate - to_date('01/05/2012','dd/mm/yyyy'),0)
"tronquer une date"
FROM dual ;
Résultat:
182
Fonctions de manipulation des dates.
(3/3)
SELECT
Trunc (months_between (to_date ('2012/01/01', 'yyyy/mm/dd'), to_date
('2012/03/15', 'yyyy/mm/dd') ),2) "nbr de mois",
next_day(to_date ('2012/03/01', 'yyyy/mm/dd'), 'Monday') "lundi suivant",
last_day(to_date ('2012/03/01', 'yyyy/mm/dd')) "dernier jr du mois mars12" ,
add_months(to_date ('2012/03/01', 'yyyy/mm/dd'),3) "ajouter 3 mois"
FROM Dual;
Résultat:
183
Fonctions de conversions.

TO_DATE : Convertir une Chaine en format Date

TO_NUMBER : Convertir une Chaine en format Numérique

TO_CHAR : Convertir une Date /un nombre en une Chaine
184
Fonctions de conversions.
OPTION
Options avec To_char
DESCRIPTION
yyyy
l’année (quatre chiffres)
month
nom complet du mois en minuscule
mon
abréviation du nom du mois en minuscule (trois caractères)
day
nom complet du jour en minuscule
DD
jour du mois (01-31)
D
jour de la semaine (de 1 à 7, dimanche étant le 1)
dy
abréviation du nom du jour en minuscule (3 caractères)
ddd
jour de l'année (001-366)
q
trimestre
w
numéro de semaine du mois (de 1 à 5) (la première semaine commence
le premier jour du mois.)
ww
numéro de semaine dans l'année (de 1 à 53) (la première semaine
commence le premier jour de l'année.
185
Autres Fonctions.
(1/5)
 NVL (nom_col, valeur) : remplace une valeur nulle
 NVL2 (expr,val1,val2) : si expr n’est pas nulle alors elle est remplacée
par val1 sinon par val2.
 NULLIF (val1,val2) : si val1= val2 la valeur NULL est retournée sinon
val1
 Case : évalue une liste de conditions et retourne un résultat parmi les cas
possibles
186
Autres Fonctions.

(2/5)
Ecrire les requêtes SELECT qui permettent de:

Remplacer « commission_pct » par 0 au niveau de la table
« employees » si elle est null

Remplacer « commission_pct » par 0 au niveau de la table
« employees » si elle est null sinon par 1

Afficher
la
liste
des
employés
en
ajoutant
une
« nom_departement » qui affiche :

Si department_id=10 , nom_departement=‘depart_10’

Si department_id=20 , nom_departement=‘depart_20’

Si department_id=30 , nom_departement=‘depart_30’

…
colonne
187
Autres Fonctions.
(3/5)
 ROW_NUMBER : retourne le numéro séquentiel d'une ligne d'une
partition d'un ensemble de résultats, en commençant à 1 pour la première
ligne de chaque partition. Ne prend pas en considération les doublons
 RANK: retourne le rang de chaque ligne au sein de la partition d'un
ensemble de résultats. Compte les doublons mais laisse des trous
 DENSE_RANK : retourne le rang des lignes à l'intérieur de la partition
d'un ensemble de résultats, sans aucun vide dans le classement.
Compte les doublons mais ne laisse pas des trous
188
Autres Fonctions.
(4/5)
SELECT
Row_number() over
(partition by <col x> order by <col_y>
DESC/ASC), Col1,…colN
FROM <nom_table> ;
A retenir:
- La clause <order by> est obligatoire.
- La clause <partition by> est facultative, est utilisée pour faire un ordre par
ensemble de lignes selon <colx>.
- Rank et dense_rank ont la même syntaxe.
189
Autres Fonctions.
(5/5)
Ecrire les requêtes SELECT qui permettent de :

Afficher la liste des employees numérotés par « department_id ».

Afficher la liste des employees numérotés par département et selon le
salaire décroissant :

Utiliser « row_number »

Utiliser « rank »

Utiliser « dense_rank »
3ème Partie :
Les Fonctions Multi lignes ( ou fonctions de groupe )
Objectif du cours :
Définir la clause « GROUP BY »,
la clause « HAVING »
191
Fonctions Multi lignes.
Définitions
(1/3)
Une fonction mono ligne est une fonction qui s’applique enregistrement par
enregistrement.
Une fonction multi ligne ou fonction de groupe s’applique sur un groupe
d’enregistrements et donne un résultat par groupe.

Clause GROUP BY : Définit le critère de groupement pour la fonction

Clause HAVING : Permet de mettre des conditions sur les groupes
d’enregistrements
192
Fonctions Multi lignes.
Définitions
 COUNT : Nombre de lignes,
 SUM : Somme des valeurs,
 AVG : Moyenne des valeurs,
 MIN : Minimum,
 MAX : Maximum,
 STDDEV: Ecart type,
 VARIANCE: Variance
(2/3)
194
Fonctions Multi lignes.
SELECT
Exemple1
COUNT (salary) as count,
Trunc (SUM (salary),2) as sum,
MIN (salary) as min,
MAX (salary) as max,
Trunc (AVG (salary),2) as avg,
Trunc (VARIANCE (salary),2) as variance,
Trunc (STDDEV(salary),2) as ecart
FROM employees;
Résultat:
195
Fonctions Multi lignes.
Syntaxe de la clause GROUP BY
SELECT <colonnes>, <fonction de groupe>
FROM table
WHERE <conditions>
GROUP BY <col>|<expr>
HAVING <conditions>
ORDER BY <col>|<expr>
196
Fonctions Multi lignes.
Exemple2
SELECT department_id,
COUNT(employee_id) "nbr employes"
FROM employees
12
Départements
GROUP BY department_id;
SELECT department_id, count(employee_id) "nbr employes"
FROM employees
GROUP BY department_id
HAVING department_id<40;
ème
4
Partie :
Les Jointures
Objectifs de cette partie :
i.
Equijointure et jointure interne, Jointure naturelle
ii.
Jointure externe
iii.
Non équijointure
iv.
Produit cartésien
198
Les Jointures.

Définition.
Une jointure permet d’extraire des données de plusieurs
tables à la fois.

La condition de jointure peut être exprimée dans la clause
« WHERE » ou « ON ».

Précédez le nom de la colonne par le nom de la table lorsque
celui-ci figure dans plusieurs tables
199
Types de Jointures.

Equijointure ou jointure interne

Jointure naturelle

Jointure externe

Non équijointure

Produit cartésien
200
Equijointure.

Définition
Une jointure interne ou équijointure est une jointure avec
une condition de jointure contenant un opérateur d‘égalité.

C’est la plus répandue, elle combine les lignes qui ont des
valeurs équivalentes pour les colonnes de la jointure.

Généralement dans ce type de jointure, ce sont les Primary
Key et Foreign Key qui sont utilisées.
201
Equijointure.
Syntaxe
SELECT table1.column, table2.column
FROM table1
INNER JOIN table2
ON (table1.column_name = table2.column_name) ;
(1/2)
202
Equijointure.
SELECT
Syntaxe
T1.Colonne1, …T1.ColonneN,
T2.Colonne1, …T2.ColonneN
FROM table1 T1 INNER JOIN table2 T2
ON T1.C1=T2.C1
WHERE <Condition(s)>
Équivalent à :
SELECT
T1.Colonne1, …T1.ColonneN,
T2.Colonne1, …T2.ColonneN
FROM T1 ,T2
WHERE T1.C1=T2.C1 AND <Condition(s)>
(2/2)

T1 : Alias de la table : table1

T2 : Alias de la table : table2

C1 : colonne permettant la
jointure entre les 2 tables
( primary key + foreign key)
203
Equijointure.
Exemple
Exemple1:
SELECT nomE,
e.numdept, nomdept
FROM emp e INNER JOIN dept d
ON e.numdept=d.numdept;
Exemple2:
SELECT nomE, e.numdept, nomdept
FROM emp e INNER JOIN dept d
ON e.numdept=d.numdept
WHERE e.numdept=11;
204
Jointure naturelle.
Définition
 La jointure naturelle est une équijointure.
 La clause NATURAL JOIN est basée sur toutes les colonnes
des deux tables portant le même nom.
 Elle sélectionne les lignes des deux tables dont les valeurs sont
identiques dans toutes les colonnes qui correspondent.
 Si les colonnes portant le même nom présentent des types de
données différents, une erreur est renvoyée.
205
Jointure naturelle.
Syntaxe
SELECT colonne1, colonne2…
FROM Table1
NATURAL JOIN Table2
WHERE Condition(s) ;
Conditions autres que la condition
de jointure
206
Jointure naturelle.
Exemple
Exemple 1:
SELECT nomE, numdept,nomdept
FROM emp NATURAL JOIN dept;
Exemple 2:
SELECT nomE, numdept,nomdept
FROM emp NATURAL JOIN dept
WHERE numdept=11;
207
Non équijointure.

Définition
Il s'agit là d'utiliser n'importe quelle condition de jointure
entre deux tables, exceptée la stricte égalité. Ce peuvent être
les conditions suivantes :
208
Jointure externe.
Définition

JOINTURES EXTERNES = OUTER JOINS.

Une jointure externe élargie le résultat d’une jointure interne
(INNER JOINS) et permet d’extraire des enregistrements qui
ne répondent pas aux critères de jointure.
 Une jointure externe renvoie toutes les lignes qui satisfont la
condition de jointure et retourne également une partie de ces
lignes de la table pour laquelle aucune des lignes de l’autre ne
satisfait pas la condition de jointure.
209
Jointure externe.
Types de jointures externes
SELECT t1.column, t2.column..
FROM table1 t1
LEFT | RIGHT | FULL OUTER JOIN table2 t2 ON
(t1.column_name = t2.column_name) ;
 Le sens de la jointure externe LEFT ou RIGHT de la clause
OUTER JOIN désigne la table dominante.
 FULL = INNER + LEFT + RIGHT
210
Jointure externe.
Gauche
Exemple:
SELECT nomE, e.numdept, nomdept
FROM dept d LEFT JOIN emp e
ON e.numdept=d.numdept
211
Jointure externe.
Droite
Exemple:
SELECT nomE, e.numdept,nomdept
FROM dept d RIGHT JOIN emp e
ON e.numdept=d.numdept
212
Jointure externe.
complète
Exemple:
SELECT nomE, e.numdept,nomdept
FROM dept d FULL JOIN emp e
ON e.numdept=d.numdept
213
Produit Cartésien.
Définition
On obtient un produit cartésien lorsque :
 Une condition de jointure est omise
 Une condition de jointure est incorrecte
 A chaque ligne de la table 1 sont jointes toutes les lignes de
la table 2.
 Le nombre de lignes renvoyés est égal n1 * n2 où
 n1 est le nombre de lignes de la table 1
 n2 est le nombre de lignes de la table 2
214
Produit Cartésien.
Syntaxe
SELECT « nom_colonne1 », « nom_colonne2 »…
FROM table1 t1
CROSS JOIN table2 t2
Exemple:
Select * from employees CROSS JOIN departments
 On va avoir 107*27 lignes = 2889 lignes
215
Produit Cartésien.
Exemple
SELECT * From emp e
INNER JOIN dept d
ON e.numdept=e.numdept
 OU
SELECT * From emp, dept
 On va avoir 9*4 lignes
216
Jointure.
Récapitulatif
SELECT
Jointure
interne
FROM
<table gauche>
[INNER]JOIN <table droite>
ON <condition de jointure>
SELECT
Jointure
externe
FROM
<table gauche>
LEFT | RIGHT | FULL [OUTER]JOIN
ON <condition de jointure>
<table droite>
SELECT
Jointure
Jointure
naturelle
croisée
FROM
<table gauche>
NATURAL JOIN <table droite>
(USING <noms de colonnes>]
SELECT
FROM
<table gauche>
CROSS
JOIN <table
droite>
5ème Partie :
ensemblistes
i.
UNION
ii.
UNION ALL
iii.
INTERSECT
iv.
MINUS
Les Opérateurs
218
Les opérateurs ensemblistes.
OPERATEUR
INTERSECT
DESCRIPTION
Ramène toutes les lignes communes aux deux
requêtes
UNION
Toutes les lignes distinctes ramenées par les deux
requêtes
UNION ALL
Toutes les lignes ramenées par les deux requêtes y
compris les doublons
MINUS
Toutes les lignes ramenées par la première requête
sauf les lignes ramenées par la seconde requête
219
Union(ALL).
Exemple
 Créer une table d’archivage qui contient les informations des
employés qui ont été embauchés après l’année 2009.
 Ecrire une requête qui va afficher tous les employés:
SELECT * from emp
Union (ALL)
SELECT * from emp2
220
Intersect/Minus.
Exemple
Ecrire les requêtes permettant de :
 Afficher les employés qui ont été archivés.
 Afficher les employés qui n’ont pas été archivés.
SELECT * from emp
Intersect/minus
SELECT * from emp2 ;
221
Exercice d’application.
 Ecrire une requête qui permet d’afficher ce résultat à partir de
la table ‘dept’ :
6ème Partie :
Les Sous interrogations
i.
Sous interrogations mono lignes
ii.
Sous interrogations multi lignes
223
Sous interrogations.

Définition
La sous-interrogation (requête interne) est exécutée une seule
fois avant la requête principale

Le résultat de la sous-interrogation est utilisé par la requête
principale (requête externe)

Une sous-interrogation est utilisée dans les clauses suivantes :
 WHERE
 HAVING
 FROM
224
Sous interrogations mono lignes.
Définition
Une sous-interrogation peut ramener un seul résultat on
l’appelle sous interrogation mono ligne.
Les opérateurs de comparaison mono ligne sont :
=, !=, <, >, <=, >=
225
Sous interrogations mono lignes.
Exemple1
Exemple de Mise à jour avec une sous interrogation :
l’employé numéro 112 est affecté au même poste et même
département que l’employé numéro 111
UPDATE employee_id SET (job_id, department_id)
= ( SELECT job_id, department_id
FROM employees
WHERE employee_id=111 )
WHERE employee_id=112 ;
226
Sous interrogations mono lignes.
Exemple2
Exemple de Suppression avec une sous interrogation :
Supprimer tous les employés du département ‘SALES’
DELETE FROM employees
WHERE Department_id =
( SELECT department_id
FROM departments
WHERE department_name=‘SALES’ );
228
Sous interrogations multi lignes.

Définition
(1/3)
Une sous-interrogation peut ramener plusieurs lignes à
condition que l'opérateur de comparaison admette à sa
droite un ensemble de valeurs.

Les opérateurs permettant de comparer une valeur à un
ensemble de valeurs sont :

l'opérateur IN et

les opérateurs obtenus en ajoutant ANY ou ALL à la
suite des opérateurs de comparaison classique :
=, !=, <, >, <=, >=.
229
Sous interrogations multi lignes.

Définition
(2/3)
ANY : la comparaison sera vraie si elle est vraie pour au
moins un élément de l'ensemble (elle est donc fausse si
l'ensemble est vide).

ALL : la comparaison sera vraie si elle est vraie pour tous
les éléments de l'ensemble (elle est vraie si l'ensemble est
vide).

L'opérateur IN est équivalent à = ANY,

L'opérateur NOT IN est équivalent à != ALL.
230
Sous interrogations multi lignes.
Opérateur de comparaison
WHERE salaire IN (1200,1600,2000,2900)
WHERE salaire NOT IN (1200,1600,2000,2900)
WHERE salaire >ANY (1200,1600,2000,2900)
Définition
(3/3)
Résultat
SALAIRE doit être égale à une des valeurs
dans la liste
SALAIRE ne doit pas être égale à une des
valeurs dans la liste
SALAIRE doit être supérieur à au moins une
des valeurs.
Donc plus que le minimum (+ de 1200).
WHERE salaire <ANY (1200,1600,2000,2900)
SALAIRE doit être inférieur à au moins une
des valeurs.
Donc moins que le maximum (- de 2900).
WHERE salaire >ALL (1200,1600,2000,2900)
SALAIRE doit être supérieur au maximum
de toutes les valeurs.
Donc plus que le maximum (+ de 2900).
WHERE salaire <ALL (1200,1600,2000,2900)
SALAIRE doit être inférieur au minimum de
toutes les valeurs.
Donc moins que le minimum (- de 1200).
Téléchargement