Introduction Aux Bases de Données
Introduction Aux Bases de Données
1
Introduction aux Bases de données
2
Introduction
3
Qu'est-ce qu'une base de données ?
4
Système de Gestion de Base de Données
Un Système de Gestion de Base de Données peut être défini comme un ensemble de logiciels
Autrement dit, il permet de décrire, modifier, interroger et administrer les données. C'est, en fait,
l'interface entre la base de données et les utilisateurs (qui ne sont pas forcément informaticiens).
5
Ob j e c t i f s d 'un SGBD
Un SGBD doit résoudre certains problèmes et répondre à des besoins précis :
INDEPENDANCE PHYSIQUE (données/programmes)
Possibilité de modifier l'organisation physique (accès) sans modifier les programmes.
INDEPENDANCE LOGIQUE
Modification du schéma conceptuel sans modification des programmes.
MANIPULATION DES DONNEES
Manipulations des données par des utilisateurs qui n'ont pas la connaissance de l'organisation de la
base et qui disposent de langages évolués "naturels".
EFFICACITE DES ACCES AUX DONNEES
Possibilités pour les utilisateurs avertis de manipuler les données à partir de langages hôtes (Pascal,
Fortran, C, Java...). Efficacité et rapidité au niveau des accès sur les supports.
ADMINISTRATION CENTRALISEE DES DONNEES
L'administrateur de la base définit les structures de données, de stockage et de contrôle.
6
Ob j e c t i f s d 'un SGBD
7
Propriétés d'un SGBDr
8
Composants des SGBD
- la description des données au moyen d'un Langage de Définition de Données (LDD). Le résultat de
la compilation est un ensemble de tables, stockées dans un fichier spécial appelé dictionnaire (ou
répertoire) des données
- la manipulation des données au moyen d'un Langage de Manipulation de Données (LMD) prenant
en charge leur consultation et leur modification de façon optimisée, ainsi que les aspects de sécurité
- la sauvegarde et la récupération après pannes, ainsi que des mécanismes permettant de pouvoir
revenir à l'état antérieur de la base tant qu'une modification n'est pas finie (notion de transaction)
- les accès concurrents aux données en minimisant l'attente des utilisateurs et en garantissant
l'obtention de données cohérentes en cas de mises à jours simultanées
9
Architecture d’un SGBD
ARCHITECTURE DES SGBD
• Couche externe
Couche interne
stockage des données sur des supports physiques, gestion des structures de
mémorisation (fichiers) et d'accès (gestion des index, des clés, ...)
• Couche logique
• Le niveau externe comprend les "vues" spécifiques définies pour la manipulation des données. Il
prend en compte les contraintes d'accès imposées par la nature des applications à considérer
(indépendamment des caractéristiques techniques) et exprime les besoins en données des différents
utilisateurs, ou applications.
Niveau interne ou Physique
• Il correspond à la représentation en machine, aussi efficace que possible, du schéma conceptuel : le schéma
physique intègre les caractéristiques techniques (choix du SGBD, du matériel, du système d’exploitation…).
• L'efficacité doit tenir compte d'une part des contraintes d'implantation (taille des disques, optimisation du
système de fichiers…), d'autre part des critères d'utilisation (traitement interactif ou en batch, selon la
fréquence d’utilisation et la durée du traitement…).
Architecture du type client-serveur (client-server architecture)
BD
Réseau
Programme
SGBD
d'application
Logiciel Logiciel
intermédiaire intermédiaire
Pilote de Pilote de
télécommunication télécommunication
Client Serveur
Architecture 3 tiers
BD
Réseau Réseau
BD réparties:
• Les données sont distribuées et/ou dupliquées sur différents sites du réseau (ex: internet) qui possèdent un
BD BD
locale locale
Réseau Réseau
Programme
SGBD réparti SGBD réparti
d'application
Logiciel Logiciel Logiciel
intermédiaire intermédiaire intermédiaire
Pilote de Pilote de Pilote de
télécommunication télécommunication télécommunication
Serveur de Serveur de
Client
données données
Base de données parallèles
Mémoire vive
Unité de Unité de Unité de
traitement traitement traitement
BD parallèles: Les données peuvent être distribuées sur plusieurs disques d'un
même site, et l'exécution des requêtes peut être parallélisée sur les différentes unités
de traitement (CPU) du site.
Entrepôt de données
Un utilisateur ou un programme d’application interagit avec la base de données via des appels au
SGBD exprimés sous forme de requêtes SQL. Le SGBD garantit une qualité de service absolue dans
l’exécution de ces requêtes, garantie qui comporte quatre propriétés : atomicité, cohérence, isolation
29
LES TRANSACTIONS
Atomicité: L’exécution d’une requête est atomique si cette dernière, quoi qu’il arrive, est exécutée
complètement (en cas de réussite) ou pas du tout (en cas d’échec ou d’incident).
Cohérence. Une requête de modification exécutée sur des données cohérentes laisse celles-ci dans un état final
également cohérent. Concrètement, le SGBD garantit le respect de toutes les contraintes d’intégrité imposées
aux données.
Isolation. Les opérations sur les données sont exécutées comme si chaque requête
disposait de la base de données pour elle seule.
Durabilité. Lorsque le SGBD a confirmé qu’une mise à jour a été effectuée avec
succès, il garantit qu’elle est permanente.
30
Organisation de la mise en oeuvre d 'un SGBD
31
CONCEPTS DES BASES DE DONNEES
32
CONCEPTS DES BASES DE DONNEES
• Tables, lignes et colonnes
33
Valeur null
• L'absence de valeur est indiquée par un marqueur spécial, dit valeur null. Généralement représenté
par <null> ou par rien.
34
Identifiants et clés étrangères
35
Identifiants et clés étrangères
36
Identifiants et clés étrangères
• Un identifiant définit une contrainte d'unicité. Il existe d'autres moyens de définir cette contrainte.
• Une table peut posséder plusieurs identifiants. On choisit l'un d'eux, qu'on déclare primaire. Les autres sont
dès lors secondaires
• Un identifiant est minimal si chacune de ses colonnes est nécessaire pour garantir la contrainte d'unicité.
• Il est possible de déclarer une table sans identifiant mais ceci n'est pas recommandé.
37
Identifiants et clés étrangères
• Une clé étrangère définit une contrainte référentielle. Il existe d'autres moyens de définir cette contrainte.
• Si une des colonnes d'une clé étrangère est facultative, il est recommandé de les rendre toutes facultatives.
• Une clé étrangère référence en principe l'identifiant primaire de la table cible.
• Une clé étrangère et l'identifiant qu'elle référence ont la même composition : même nombre de colonnes et
colonnes de mêmes types prises deux à deux.
• Il se peut qu'une clé étrangère soit également un identifiant.
• Il se peut que les colonnes d'une clé étrangère appartiennent, en tout ou en partie, à un identifiant.
38
Identifiants et clés étrangères
• Un identifiant minimal est aussi appelé clé candidate (candidate key). [*]
• Un identifiant primaire s'appelle aussi clé primaire (primary key).
• Il n'existe pas d'autre terme pour désigner les identifiants secondaires
• Clé étrangère = foreign key.
39
Schéma et contenu
40
Schéma et contenu
Le contenu d'une table est formé d'un ensemble de lignes conformes au schéma.
• Le contenu d'une table est sujet à de fréquentes modifications. Le schéma d'une table peut évoluer mais
moins fréquemment
41
Exemple de base de données
42
Exemple de base de données
43
Exemple de base de données
Variantes de schéma
44
Modifications et contraintes d'intégrité
Une contrainte d'intégrité est une règle qui définit la cohérence d'une donnée ou d'un ensemble de données de
la BD. Le modèle relationnel impose les contraintes structurelles suivantes :
INTÉGRITÉ DE DOMAINE
INTÉGRITÉ DE CLÉ
INTÉGRITÉ RÉFÉRENCIELLE
45
INTÉGRITÉ DE DOMAINE
• Les contraintes de domaine sont des colonnes définies par l'utilisateur qui aident l'utilisateur à
saisir la valeur en fonction du type de données. Et s'il rencontre une mauvaise entrée, il donne le
• Valeur NULL
valeur conventionnelle pour représenter une information inconnue
• dans toute extension possible d'une relation, il ne peut exister 2 n-uplets ayant
même valeur pour les attributs clés.
intégrité référentielle
l´intégrité référentielle est une situation dans laquelle pour chaque information
50
Redondances internes
Observation
Les données TITRE et AUTEUR sont répétées autant de fois qu'il existe de livres identiques.
Cette table viole le principe premier des bases de données : tout fait du
domaine d'application est enregistré une et une seule fois.
51
Redondances internes
Problèmes
gaspillage d'espace
si on modifie la valeur d'un titre, il faut répercuter cette modification
dans toutes les lignes similaires
si on supprime l'unique exemplaire d'un livre, on perd les informations
sur son auteur et son titre
52
Redondances internes
Suggestion
Rassembler les données communes (ISBN, TITRE, AUTEUR) dans une
table spécifique
53
Redondances internes
Deux questions
1. Comment détecter les situations de redondance ?
2. Comment les corriger ?
54
LES DÉPENDANCES FONCTIONNELLES
Dépendance fonctionnelle
• Soit R(A1, A2, ...., An) un schéma de relation
Soit X et Y des sous ensembles de {A1,A2,...An)
On dit que Y dépend fonctionnellement de X (X->Y) si à
chaque valeur de X correspond une valeur unique de Y
• on écrit : X → Y
• on dit que : X détermine Y
• Ex.:
no_client → nom_client
Un nom du client ne peut pas avoir deux numéros.
no_CIN → nom_client
On ne peux pas avoir deux citoyens qui ont le même no-CIN
La réciproque est fausse
LES DÉPENDANCES FONCTIONNELLES
• La D.F. peut porter sur la concaténation de plusieurs propriétés.
• Num_Commande + nom_Client df→ quantité_commande
• D.F. élémentaire
On dit qu’il ya une D.F. élementaire entre A et B, si A → B et si aucune partie de A ne détermine B
(l’ensemble OK)
• Exemple:
Numero Client + Nom Client df
→ Adresse (ne vérifie pas la condition)
Numero Client → Adresse (OK)
• D.F.E directe
• Si cette dépendance est une dépendance élémentaire A →B et s’il n’existe pas de propriété C tel que
A → C et C → B ( on élimine la transitivité).
On dit que :
il existe une dépendance fonctionnelle de ISBN vers TITRE et AUTEUR
ISBN détermine ou est un déterminant de TITRE et AUTEUR
TITRE et AUTEUR dépendent de ou sont déterminés par ISBN
57
Redondances internes
Notion de dépendance fonctionnelle
Deux observations
1. par définition, un identifiant détermine toutes les colonnes de la table
2. si un groupe de colonnes détermine chaque colonne de la table, il
constitue par définition un identifiant de la table
58
Redondances internes
Réponse
Il y a redondance interne dès qu'il existe un déterminant qui n'est
pas un identifiant de la table
59
Redondances internes
Comment corriger les situations de redondance
Réponse
En décomposant la table T en deux fragments T1 et T2 :
T1(déterminant, déterminé)
T2.déterminant est une clé étrangère vers T1
60
Redondances
Dernières remarques
1. Une table qui est le siège d'une dépendance fonctionnelle anormale est dite non
normalisée
4. Il est essentiel que toutes les tables d'une base de données soient normalisées
62
LES FORMES NORMALES
La théorie de la normalisation
La théorie de la normalisation est une théorie destinée à concevoir un bon schéma d'une base de données sans
redondance d'information et sans risques d'anomalie de mise à jour. Elle a été introduite dès l'origine dans le
modèle relationnel. Elles traduisent des contraintes sur les données.
La décomposition
Objectif:
- décomposer les relations du schéma relationnel sans perte d’informations
- aboutir au schéma relationnel normalisé
• Le schéma de départ est le schéma universel de la base
• Par raffinement successifs ont obtient des sous relations sans perte
d’informations et qui ne seront pas affectées lors des mises à jour (non
redondance)
Les formes normales
Dans une base de données relationnelle, une forme normale désigne un type de relation particulier entre
les entités.
Le but essentiel de la normalisation est d’éviter les anomalies transactionnelles pouvant découler d’une
mauvaise modélisation des données et ainsi éviter un certain nombre de problèmes potentiels tels que les
anomalies de lecture, les anomalies d’écriture, la redondance des données et la contre-performance.
• Notion intuitive de FN
une « bonne relation » peut être considérée comme une fonction de la clé primaire vers les attributs restants
1ère Forme Normale 1FN
• Une relation est en 1FN si tout attribut est atomique (non décomposable)
• Contiennent des valeurs non répétitives (pas de liste, tableau ……)
Contre-exemple
ELEVE (no_elv, nom, prenom, liste_notes)
Un attribut ne peut pas être un ensemble de valeurs
Décomposition
ELEVE (no_elv, nom, prenom)
NOTE (no_elv, no_matiere, note)
• Constant dans le temps (age, Date de naissance)
2ème Forme Normale 2FN
Contre-exemple
Décomposition
Ceci correspond à la non transitivité des D.F. ce qui évite les redondances.
En 3FN une relation préserve les D.F. et est sans perte.
Contre-exemple
une relation en 2FN qui n'est pas en 3FN
VOITURE (matricule, marque, modèle, puissance)
on vérifie qu'elle est en 2FN ; elle n'est pas en 3FN car la clé =matricule, et la
puissance dépend de (marque, modèle)
Décomposition
VOITURE (matricule, marque, modèle)
MODELE (marque, modèle, puissance)
L’algèbre relationnelle
I. Les opérations
OPÉRATIONS
- opérandes : 1 ou 2 relations
- résultat : une relation
OPÉRATIONS SPÉCIFIQUES
PROJECTION
RESTRICTION
JOINTURE
DIVISION
UNION
L'union de deux relations R1 et R2 de même schéma est
une relation R3 de schéma identique qui a pour n-uplets les
n-uplets de R1 et/ou R2
On notera :
R3 = R1 R2 ou UNION (R1,R2)
INTERSECTION
L’intersection entre deux relations R1 et R2 de même schéma est une
relation R3 de schéma identique ayant pour n-uplets les n-uplets
communs à R1 et R2
On notera :
R3 = R1 ∩ R2 ou Intersect(R1,R2)
DIFFÉRENCE
La différence entre deux relations R1 et R2 de même
schéma est une relation R3 de schéma identique ayant pour
n-uplets les n-uplets de R1 n'appartenant pas à R2
On notera :
R3 = R1 − R2 ou MINUS(R1,R2)
PROJECTION
La projection d'une relation R1 est la relation R2 obtenue en
supprimant les attributs de R1 non mentionnés puis en éliminant
éventuellement les nuplets identiques
On notera :
R2 = πR1 (Ai, Aj, ... , Am)
la projection d'une relation R1 sur les attributs Ai, Aj, … , Am
La projection permet d’éliminer des attributs d’une relation
• Elle correspond à un découpage vertical :
Requête 1 :
« Quels sont les références et les prix des produits ? »
PRODUIT (IdPro, Nom, Marque, Prix)
Requête 2 :
« Quelles sont les marques des produits ? »
PRODUIT (IdPro, Nom, Marque, Prix)
La jointure de deux relations R1 et R2 est une relation R3 dont les n-uplets sont
obtenus en concaténant les nuplets de R1 avec ceux de R2 et en ne gardant que
ceux qui vérifient la condition de liaison
On notera : R3 = R1 × R2 (condition) ou JOIN(R1,R2)(condition)
la jointure de R1 avec R2 suivant le critère condition
• Le schéma de la relation résultat de la jointure est la concaténation des schémas
des opérandes (s'il y a des attributs de même nom, il faut les renommer)
• Les n-uplets de R1 × R2 (condition) sont tous les couples (u1,u2) d'un n-uplet de
R1 avec un n-uplet de R2 qui satisfont "condition"
• La jointure de deux relations R1 et R2 est le produit cartésien des deux relations
suivi d'une restriction
• La condition de liaison doit être du type :
<attribut1> :: <attribut2>
où : attribut1 1ère relation et attribut2 2ème relation
:: est un opérateur de comparaison (égalité ou inégalité)
La jointure permet de composer 2 relations à l'aide
d'un critère de liaison
Jointure naturelle
Jointure où l'opérateur de comparaison est l'égalité dans le résultat on
fusionne les 2 colonnes dont les valeurs sont égales
La jointure permet d'enrichir une relation
Requête 5 :
« Donnez pour chaque vente la référence du produit, sa désignation, son
prix, le numéro de client, la date et la quantité vendue »
- un n-uplet (a1, a2, … , an) appartient à R3 si (a1, a2, … , an, b1, b2, … , bm)
appartient à R1 pour tous (b1, b2, … , bm) R2.
On notera : R3 = R1 ÷ R2
la division de R1 par R2
la division permet de rechercher dans une relation les sous n-uplets qui sont complétés
par tous ceux d'une autre relation Elle permet de répondre à des questions qui sont
formulées avec le quantificateur universel : « pour tout ... »
Requête 6 :
« Quels sont les élèves qui sont inscrits à tous les sports ? »
Requêtes sur le schéma CLIENT, PRODUIT, VENTE
Requête 1 :
Donner les no des produits de marque Apple et de prix < 5000 Dhs
Requête 2 :
Donner les no des clients ayant acheté un produit de marque Apple
Requête 3 :
Donner les no des clients n'ayant acheté que des produits de marque Apple
Requête 4
Donner les no des clients ayant acheté tous les produits de marque Apple
Le langage algébrique
Le langage algébrique permet de formuler une question
par une suite d'opérations de l'algèbre relationnelle
Requête 8 :
« Donner les no des produits de marque Apple et de prix
< 5000 Dhs »
R1 = σPRODUIT (marque = Apple')
R2 = σPRODUIT (prix < 5000)
R3 = R1∩R2
RESUL = πR3 (IdPro)
Requête 9 :
« Donner les no des clients ayant acheté un produit de
marque Apple »
R1 = VENTE×PRODUIT ([Link] =
[Link])
R2 = σR1 (marque = 'Apple')
R3 = πR2 (IdCli)
R4 = σR1 (marque ≠ 'Apple')
R5 = πR4 (IdCli)
RESUL = R3 − R5
Requête 11 :
« Donner les no des clients ayant acheté tous les
produits de marque Apple »
92
Les structures physiques - Les index
93
Les structures physiques - Les index
94
Les structures physiques - Les index
Index
95
Les structures physiques - Les index
96
Quel est l’intérêt d’un index dans une base de données?
données
enregistrements de la table
3. L’impact des index sur les requêtes d’écriture est moins important
97
Comment créer un index?
La syntaxe générale de l’ordre SQL de création d’un index:
CREATE INDEX<nom index>
ON <nom_table>(<liste_colones>)
Exemple 1: création d’un index sur une seule colonne:
CREATE INDEX idx_nomProduit
ON produit (NomProduit)
Exemple 2: création d’un index sur deux colonnes:
CREATE INDEX idx_nomCategorie
ON produit (NomProduit, categorie)
Exemple 3: création d’un index unique:
CREATE UNIQUE INDEX idx_refProduit
ON produit (RefProduit)
98
Quels sont les types d’index?
1. B-Tree(arbre équilibré)
2. Hash (index de hachage)
99
Les structures physiques
Espace de stockage
La table est une collection de lignes dont les éléments doivent être stockés sur un
disque. Les lignes seront rangées dans un espace spécial qui leur est réservé : un
espace de stockage. L'espace correspond à un fichier occupant tout ou partie d'un
disque (voire de plusieurs disques).
Un espace de stockage est caractérisé notamment par son adresse, son volume
initial, la manière dont il grandit ou se réduit selon les besoins, les tables dont il
accueille les lignes, la technique de rangement des lignes.
100
Le langage SQL
Définition
SQL (Structured Query Language) est le langage de programmation utilisé pour définir et manipuler des bases
de données relationnelles organisées sous forme de tables contenant des lignes et des colonnes.
Définition
SQL est à la fois un langage de définition de données et un langage de manipulation de données :
— D’une part, en tant que langage de définition de données, SQL permet d’implémenter
en offrant des instructions qui permettent de créer des tables et des colonnes.
— D’autre part, en tant que langage de manipulation de données, SQL offre une multitude
données.
Langage de définition de données
• Création d’une table
L’instruction SQL qui permet de créer une table s’appelle CREATE TABLE. Sa syntaxe est la suivante :
L’instruction CREATE TABLE permet de créer une table et de définir le nom, le type de données et les éventuelles
contraintes d’intégrité de chaque colonne.
Types de données
L’ensemble des types de données utilisés dans les différents SGBDs du marché varie légèrement d’un SGBD à un autre.
type numériques
Types de données
type String
Contraintes d’intégrité
• Une contrainte d’intégrité est un mécanisme qui s’assure que les valeurs d’une colonne donnée soient toujours cohérentes.
• quatre contraintes d’intégrités seront prises en considération :
1. PRIMARY KEY : Déclare la colonne comme étant la clé primaire de la table. Cette contrainte peut être utilisée dans sa version
multi-colonne pour définir une clé primaire composée de plusieurs attributs.
2. NOT NULL : S’assure que la colonne ne contienne pas de valeurs NULL.
3. CHECK(C) : S’assure que toutes les valeurs de la colonne satisfont la condition C.
4. REFERENCES Tab(Col) : Déclare la colonne comme clé étrangère qui référence la colonne Col de la table Tab.
Exemple de création de tables
• Les instruction respectives de création des tables country, city et countryLanguage de la base de
données World sont données dans ce qui suit :
• L’instruction SQL qui permet de supprimer une table s’appelle DROP TABLE. Sa syntaxe est la suivante :
• DROP TABLE [ Nom_de_la_table ];
Exemple de suppression d’une table
Les instructions suivantes permettent de supprimer les tables country, city et countryLanguage:
• Insertion de données
L’instruction SQL qui permet d’insérer des données dans une table s’appelle INSERT INTO. Sa syntaxe est la suivante :
Où v1,v2, ... sont les valeurs du tuple à ajouter dans la table. Ces valeurs doivent être données dans l’ordre dans lequel les colonnes ont été déclarées
Afin d’illustrer l’utilisation de l’instruction INSERT INTO, ce qui suit est un exemple d’ajout de la ville de Tanger dans la table city :
Ce qui suit est un autre exemple d’ajout dans la table countryLanguage des langues parlées au Maroc:
L’instruction SQL qui permet de supprimer des données dans une table s’appelle DELETE FROM. Sa syntaxe est la suivante :
WHERE [ Condition ];
Cette instruction supprime tous les tuples d’une table qui vérifient la condition qui suit le mot-clé WHERE.
Exemple de suppression de données
Afin d’illustrer l’utilisation de l’instruction DELETE FROM, ce qui suit est un exemple de suppression de tous les pays d’Afrique :
L’instruction SQL qui permet de mettre à jour les données d’une table s’appelle UPDATE. Sa syntaxe est la suivante :
UPDATE [ Nom_de_la_table ]
WHERE [ Condition ];
L’instruction UPDATE effectue la modification qui suit le mot clé SET sur tous les tuples de la table qui vérifient la condition qui suit
le mot clé WHERE.
Exemple de mise à jour de données
Afin d’illustrer l’utilisation de l’instruction UPDATE, ce qui suit est un exemple qui fait la mise à jour suivante « Donald Trump est le
UPDATE country
SET HeadOfState = ’Donald ␣ Trump ’
WHERE Code = ’USA ’;
Recherche de données
La recherche de données en SQL se fait de manière similaire à celle de l’algèbre relationnel dans la mesure où elle s’appuie entre autres
sur les opérations de projection, de restriction et de jointure. L’instruction SQL qui permet d’effectuer une recherche de données
s’appelle SELECT. Sa syntaxe est la suivante :
SELECT [ Colonne ] , [ Colonne ], ...
FROM [ Table ], [ Table ], ...
WHERE [ Condition ];
— la projection sur les colonnes qui suivent le mot-clé SELECT (Le symbole * peut être utilisée pour projeter sur toutes les colonnes).
— du produit cartésien des tables qui suivent le mot-clé FROM
— et restreint le résultat aux tuples qui satisfont la condition qui suit le mot-clé WHERE. Les opérateurs logique AND et OR peuvent être
utilisés pour construire la condition
Exemples de requêtes d’interrogations d’une seule table
Afin d’illustrer l’utilisation de l’instruction SELECT, nous allons traduire des requêtes exprimées en langage naturel vers des requêtes
exprimées en SQL :
Donner le nom de chaque pays et le nom de son chef d’état.
SELECT Name , HeadOfState
FROM country ;
Donner le nom de chaque pays et le code de sa capitale.
SELECT Name , Capital
FROM country ;
Donner le nom des pays dont la superficie dépasse 1000000m2.
SELECT Name
FROM country
WHERE SurfaceArea > 1000000;
Exemples de requêtes d’interrogations d’une seule table
Exemples de requêtes d’interrogations d’une seule table
Exemples de requêtes d’interrogations sur plusieurs tables
Cette requête nécessite de faire une jointure entre les tables city et country. Elle peut être exprimée de la manière suivante :
Remarque1
La jointure est exprimée comme une condition du WHERE. C’est-à-dire qu’il n’est pas nécessaire de faire appel à une autre instruction
SQL pour faire la jointure. En outre, les éventuelles restrictions peuvent être exprimées avant (ou après) la jointure en utilisant
l’opérateur AND. Cette manière d’exprimer la jointure comme une restriction découle du fait qu’en algèbre relationnelle, une jointure
Remarque2
Il est éventuellement nécessaire de désambiguïser (définir) le nom des colonnes. En effet, dans l’exemple précédent, la colonne Name
existe dans deux tables différentes : city et country. Pour faire la différence entre ces deux colonnes, il est nécessaire de précéder le nom
de la colonne par le nom de la table suivi d’un point. Par exemple [Link] pour la colonne Name de la table city et [Link]
À l’instar de l’algèbre relationnelle, le langage SQL offre les trois principales opérations ensemblistes vues dans le chapitre qui porte sur l’algèbre
relationnelle, à savoir :
Ces trois opérations peuvent être utilisées entre deux instructions SELECT. Et comme en algèbre relationnelle, les deux instructions SELECT doivent
avoir les mêmes colonnes, c’est-à-dire, la même projection.
Opérations ensemblistes
opérations ensemblistes
Donner le nom des pays d’Afrique et d’Asie. Nous pouvons diviser cette requête en deux requêtes : la première retourne les pays
d’Afrique et la seconde retourne les pays d’Asie. Puis, nous devons faire l’union des résultats des deux requêtes :
SELECT Name
FROM country
WHERE Continent = ’Africa ’
UNION
SELECT Name
FROM country
WHERE Continent = ’Asia ’;
Exemples :
• Quelles sont les villes du royaume uni (United Kingdom) qui ont des homonymes aux Canada?
Exemples :
• Quelles sont les langues parlées à la fois en Suisse (Switzerland) et en Belgique (Belgium)?
Exemple
• Quelles sont les langues parlées uniquement en Afrique du sud (South Africa)?
Exemple
WHERE [ Condition ]
LIMIT [ Nombre_maximum_de_tuples ];
Contrairement à l’algèbre relationnelle, SQL offre la possibilité de trier les résultats retournés par instruction SELECT. Le tri se fait
selon l’ordre croissant ou décroissant des valeurs d’une colonne. L’instruction qui permet de trier les résultats s’appelle ORDER BY. Sa
syntaxe est la suivante :
WHERE [ Condition ]
L’instruction ORDER BY trie le résultat de l’instruction SELECT selon l’ordre croissant (ASC) ou décroissant (DESC) des valeurs de la colonne qui
suit le mot-clé ORDER BY.
Exemples
Exemples
Fonctions
• Le langage SQL offre plusieurs fonctions pour effectuer des traitements sur les données. Le tableau suivant donne la signification de
chacune de ces fonctions.
Fonctions
L’appel d’une de ces fonction doit se faire directement après le mot-clé SELECT et ne peut être utilisé que sur une et une seule colonne
de projection. La syntaxe de l’utilisation des fonctions est la suivante :
WHERE [ Condition ]
Exemples
Exemples
Révision
Select mono-table
• NULL
• NULL signifie : « non renseigné ».
• C’est la seule information codée qu’on rentre dans une table.
• La valeur « 0 », par contre, ne signifie pas du tout « non renseignée », mais bien « valeur = 0 »,
comme on dirait « valeur = 500 ».
• Quand un attribut peut valoir NULL, on dit qu’il n’est « pas obligatoire ».
• Quand un attribut ne peut pas valoir NULL, on dit qu’il est « obligatoire » ou « NOT NULL ».
144
Classification des commandes du SQL et manuel de référence
• 4 types de commandes
145
Le DDL : commandes des tables : CREATE, ALTER, DROP
• Ce sont les commandes qui vont permettre de créer, modifier, détruire les tables : CREATE
TABLE, ALTER TABLE, DROP TABLE.
• Ces commandes permettront aussi de créer, modifier et supprimer d’autres objets de la BD : les
BD, les séquences (auto-incréments ORACLE), les index, les vues, etc. CREATE DATABASE,
CREATE VIEW, CREATE INDEX, etc
146
Le DML : commandes des tuples : INSERT, UPADTE, DELETE
• Ce sont les commandes qui vont permettre de créer, modifier, détruire les tuples.
147
Le DSL : SELECT : l’algèbre relationnelle
148
Le DCL : commandes de contrôle
• La commande CREATE USER permet de créer des utilisateurs qui pourront se connecter à la base
de données. DROP USER et ALTER USER permettront la suppression et la modification.
• La commande GRANT permet de donner des droits aux utilisateurs : droits de création,
modification, suppression de tables, et droits de création, modification, suppression et consultation
de tuples. Cette commande permet aussi de créer des utilisateurs.
• La commande REVOKE permet de supprimer les droits créés par la commande GRANT.
• La commande COMMIT permet de valider les modifications dans la BD (les commandes du
DML). Selon les environnements, les modifications peuvent être validée automatiquement par
défaut ou pas (variable d’environnement AUTOCOMMIT à vrai ou à faux).
• La commande ROLLBACK permet au contraire de revenir en arrière, s’il n’y a pas eu de validation
manuelle ou automatique
149
La commande de recherche : le select
La commande SELECT permet de faire des opérations de recherche et de calcul à partir des tables de
la base de données.
On peut diviser toutes les opérations réalisables par un select en deux grandes catégories :
150
Les opérations s’appliquant à une seule table
• Les filtres sur les colonnes = Projection. On choisit une ou plusieurs colonnes.
• Les filtres sur les lignes = Restriction. On choisit une ou plusieurs lignes.
• Les tris
151
Les opérations s’appliquant à plusieurs tables
• Les opérations ensemblistes classiques : union, intersection, différence qui travaillent plutôt sur des tuples de
même nature (donc sur la même table).
• Le produit cartésien et la jointure associée qui permet de travailler sur deux colonnes de 2 tables différentes.
152
Projection = filtre des colonnes
C’est assez rare qu’on veuille tous les attributs. Il faut en tout cas se limiter à ce qui est nécessaire.
La projection d'une table est une nouvelle table constituée de tous les tuples et de certains attributs de
la table de départ.
153
Deux types de projection
Quand on crée une nouvelle table, en toute rigueur, il faut éviter qu'il y ait des tuples en double.
154
Projection avec élimination des doublons : la clause distinct
Exemple
La clause distinct permet, à partir d'une projection, d'éliminer les tuples en doubles
FROM emp ;
155
Remarques sur la clé primaire
Si la liste d'attributs projetés contient la clé primaire, alors le distinct ne sert à rien:
FROM table ;
équivaut à :
156
Création d'attributs calculés
Il est possible de créer des attributs qui soient le résultat d'une opération arithmétique ou autre faite à
partir d'autres attributs.
FROM table ;
FROM emp;
157
Renommer un attribut
➢ Exemple de renommage
SELECT NE, nom, sal, comm, sal + comm AS salaireTotal
FROM emp;
On met « AS » entre l’ancien nom et le nouveau nom.
SELECT ancien_nom AS nouveau_nom FROM table;
Remarques
Si le nouveau nom contient des espaces, on écrira :
SELECT ancien_nom AS "nouveau nom" FROM table;
On peut se passer du AS :
SELECT ancien_nom nouveau_nom FROM table;
158
Les opérations possibles pour calculer un attribut
Le IF permet de faire des tests dans le SELECT avec 2 alternatives, 2 embranchements. Le passage
par un embranchement permet de renvoyer une valeur et une seule : celle de l’attribut calculé.
159
Les opérations possibles pour calculer un attribut
160
Les opérations possibles pour calculer un attribut
Dans tous les cas, le CASE WHEN renvoie une seule valeur : c’est celle qui sera prise en compte
dans la projection.
En général le ELSE final ou un DEFAULT permet de garantir que tous les cas possibles seront
traités.
161
Première syntaxe : équivalent de IF imbriqués (else-if)
• La première syntaxe permet de calculer le nouvel attribut à partir d’une succession de tests distincts les
uns des autres. C’est un « else if » algorithmique classique.
162
Deuxième syntaxe : switch classique
• La deuxième syntaxe permet de calculer le nouvel attribut à partir d’une succession de
comparaisons d’égalité entre une expression unique de départ et différentes valeur : c’est un «
case » ou un « switch » algorithmique classique.
163
Autres exemples
164
Select imbriqué dans la projection
On peut imbriquer un select dans les attributs projetés à condition que ce select ne renvoie qu’une seule valeur.
Exemple :
FROM emp;
Usage :
165
Fin du Module
166