BDFinal
BDFinal
2
Introduction
3
Qu'est-ce qu'une base de données ?
De façon informelle, on peut considérer une Base de Données comme un ensemble
structuré de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications,
interrogeables et modifiables par un groupe d'utilisateurs en un temps opportun.
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
7
Propriétés d'un SGBDr
• les propriétés fondamentales d'un SGBDr sont:
- Base formelle reposant sur des principes parfaitement définis
- Organisation structurée des données dans des tables interconnectées (d'où le qualificatif relationnelles), pour
pouvoir détecter les dépendances et redondances des informations
- Implémentation d'un langage relationnel ensembliste permettant à l'utilisateur de décrire aisément les
interrogations et manipulation qu'il souhaite effectuer sur les données
- Indépendance des données vis-à-vis des programmes applicatifs (dissociation entre la partie "stockage de
données" et la partie "gestion" - ou "manipulation")
- Gestion des opérations concurrentes pour permettre un accès multi-utilisateur sans conflit
- Gestion de l'intégrité des données, de leur protection contre les pannes et les accès illicites
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
• 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 sinon 2 clés identiques détermineraient 2 lignes
identiques (d'après la définition d’une clé), ce qui est absurde
INTÉGRITÉ RÉFÉRENTIELLE
• Relations dépendantes
• LES DÉPENDANCES :
Liaisons de un à plusieurs exprimées par des attributs
particuliers: clés étrangères ou clés secondaires
Les contraintes de référence ont un impact important pour les
opérations de mises à jour, elles permettent d’éviter les anomalies de
mises à jour
Exemple :
CLIENT (no_client, nom, adresse)
ACHAT (no_produit, no_client, date, qte)
Clé étrangère no_client dans ACHAT
• insertion tuple no_client = X dans ACHAT
vérification si X existe dans CLIENT
• suppression tuple no_client = X dans CLIENT
soit interdire si X existe dans ACHAT
soit supprimer en cascade tuple X dans ACHAT
soit modifier en cascade X = NULL dans ACHAT
• modification tuple no_client = X en X’ dans CLIENT
soit interdire si X existe dans ACHAT
soit modifier en cascade X en X’ dans ACHAT
Redondances internes
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
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
2. Une table sans dépendance fonctionnelle anormale est dite normalisée
3. Décomposer une table de manière à éliminer ses dépendances anormales consiste
à normaliser cette table
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)
<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 (VENTE.IdPro =
PRODUIT.IdPro)
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 »
91
Les structures physiques - Les index
92
Les structures physiques - Les index
93
Les structures physiques - Les index
Index
94
Les structures physiques - Les index
95
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
96
Qu’est ce qu’index de base de données?
1. Une base de données sans index oblige le moteur du SGBD de parcourir de A à Z pour fournir le résultat
3. Les SGBDR créent automatiquement un index la contrainte d’unicité (UNIQUE) dans une table
4. Il n’y a pas d’index crée automatiquement par le SGBD derrière une clé étrangère(FOREIGN KEY)
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
Les structures physiques
101
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 :
La table country contient sept colonnes :
— Code : est l’identifiant unique d’un pays e.g ’FIN’ pour Finlande,
etc. Son type est TEXT et c’est la clé primaire de la table country.
— Name : est le nom du pays e.g. ’Finland’, ’Sweden’. Son type est
TEXT et sa valeur ne peut pas être NULL.
— Continent : est le nom du continent où se trouve le pays e.g.
’Africa’, ’Europe’, etc. Son type est TEXT et sa valeur ne peut pas être
NULL.
— SurfaceArea : est la superficie du pays. Son type est REAL et sa
valeur est strictement positive et ne peut pas être NULL.
— Population : est la population du pays. Son type est INTEGER et
sa valeur est strictement positive et ne peut pas être NULL.
— HeadOfState : est le nom du chef d’état du pays e.g. ’Vladimir
Putin’ pour la Russie. Son type est TEXT et sa valeur ne peut pas être
NULL.
— Capital : est la capitale du pays. Son type est INTEGER et c’est
une clé étrangère qui référence la colonne ID de la table city. Sa valeur
ne peut pas être NULL.
Exemple de création de tables
• 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 sur plusieurs tables
Donner le nom de toutes les villes d’Algérie. 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 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 city.Name pour la colonne Name de la table city et country.Name pour la
À 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
Exemple
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
Fin du Module
142
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 ».
143
Classification des commandes du SQL et manuel de
référence
• 4 types de commandes
144
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.
145
Le DML : commandes des tuples :
INSERT, UPADTE, DELETE
• Ce sont les commandes qui vont permettre de créer, modifier, détruire
les tuples.
146
Le DSL : SELECT : l’algèbre relationnelle
• Le SELECT est la commande qui permet de consulter les données de
la BD.
• Le SELECT me en oeuvre l’algèbre relationnelle.
147
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
148
SQL : CONSULTATION DE LA BASE DE DONNEES
PRINCIPALES NOTIONS
• Projection - Restriction SELECT / FROM / Where
• Distinct year / month / day
• Tri length / substr / concat
• Attribut calculé in, between, like
• Projection primaire Order by / asc / desc
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
Il y a 5 grandes catégories d’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
Il y a 3 grandes catégories d’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
La projection primaire
Exemple
FROM emp;
155
Projection avec élimination des doublons : la clause distinct
Exemple
FROM emp ;
156
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 à :
157
Création d'attributs calculés
FROM table ;
FROM emp;
158
Autres exemples
159
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;
160
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é.
161
Les opérations possibles pour calculer un attribut
162
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.
163
Première syntaxe : équivalent de IF imbriqués (else-if)
164
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.
165
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 :
166