Bases de données

publicité
Bases de données
1
I. Aperçu de l’architecture de Bases de données et
des SGBD
• SGBD (système de gestion de bases de données) permet
aux utilisateurs de :
– définir, créer, maintenir une BD avec accès contrôlé aux données
• BD : ensemble cohérent de données liées entre elles
• SGBD peut contenir :
– matériel, logiciels (utilitaires), données, utilisateurs,
procédures
– matériel : constitué du système d ’informations (SI)
pour disposer de la base de données et y accéder
2
SQL
3
1. SQL
• Standard de fait normalisé
– pour la gestion des données (Langage de Manipulation
de Données, LMD),
– et aussi pour la gestion du schéma (Langage de
Définition des Données, LDD)
1. Gestion des données
Implante les opérateurs principaux de l'algèbre relationnelle
+ Fonctions ensemblistes et "spéciales"
2. Gestion du schéma
Création, modification de tables, index...
4
2. Forme d'une requête SQL
Select
From
Where
Liste d’attributs
Noms de Relations
Conditions
• Clause Where optionnelle, peut être multiple
– Where age>18 and sexe=1
• Résultat de la requête = une relation
 Aucune modification dans la base
– la relation résultat n'est pas mémorisée dans la base
– les relations initiales ne sont en aucun cas modifiées
5
3. Algèbre relationnelle
• Elle définit des opérations sur les relations
• Dans la plupart des systèmes relationnels, la
réponse à une requête s’obtient par l’utilisation
d’un ou plusieurs opérateurs relationnels
• Ces opérateurs sont définis par une algèbre
relationnelle formalisée
6
Sélection - Exemple
• “ Donnez les commandes passées après le mois
d’Octobre ”
 date>octobre(commande)
date > Octobre
select n°com, date, montant
from commande
where date >"octobre"
Commande
7
Projection - Exemple
 Nom,Dpt(Etudiant)
select distinct nom, Dpt
from Etudiant
Etudiant
n°Et
Dpt
@ Dpt
521
Loulou TC
Lyon
642
Babette
251
Fifi
662
Nom
Nom
Dpt
Loulou
TC
Babette
IF
Fifi
TC
Nom, Dpt
IF Marseille
TC
Lille
Loulou TC
Lille
 Dpt,@Dpt(Etudiant)
Dpt, @Dpt
select distinct Dpt, @Dpt
from Etudiant
Dpt
@ Dpt
TC
Lyon
IF
Marseille
TC
Lille
8
SQL : modification des données
• Chargement d'une nouvelle occurrence
Insert into Etudiant Values (265096582955569, "Dupont
Anne", "4 Rue du Bois, 69001 Lyon");
• Modification d'une occurrence
Update Etudiant
Set adresse = "10 Rue de Pix, 69001 Lyon"
Where nom = "Dupont Anne";
• Suppression d'une occurrence
Delete From Etudiant
Where No-SS = 265096582955569;
9
SQL : recherche des valeurs nulles
• Is [Not] Null permet de vérifier si l'attribut est
renseigné ou non pour une occurrence
• "Donner les n°SS et Nom des étudiants dont on ne
connaît pas le domicile"
Select N°SS-Et, Nom
From Etudiant
Where Adresse Is Null;
N°SS-Et
1640164777888
Nom
Hillman
10
SQL : opérateurs arithmétiques et
fonctions ensemblistes
• Opérateurs arithmétiques
–
–
–
–
addition +
soustraction multiplication *
division /
• Fonctions ensemblistes
–
–
–
–
–
Max : Fournit la valeur maximale
Min : Fournit la valeur minimale
Count : Fournit la cardinalité d’un ensemble
Sum : Somme de toutes les valeurs
Avg : Moyenne de toutes les valeurs
11
SQL : autres opérateurs
• Distinct
– élimine les valeurs dupliquées - select distinct nom from...
• Order by
– présente les résultats triés par ordre ascendant (Asc) [par défaut] ou
descendant (Desc) - select... From... Where... order by nom desc
• Group by
– Partitionne la relation en parties distinctes sur un critère donné
-select… from…where… group by couleur
• Having
– donne un critère de sélection sur chaque sous-groupe de la relation
(sous-groupe défini par group by) - select… from…where… group by
couleur having count(x)>1
• Between
– donne un intervalle de valeurs - where age between 10 and 15
• Like
– donne une forme pour une chaîne de caractères - where nom like 'D%'
12
SQL pour la gestion du schéma
• Dictionnaire
– contient la déclaration des relations et une description
– est stocké sous forme d'une base de données : métabase
• Des instructions SQL spécifiques
–
–
–
–
–
–
déclaration du types des données
définition de contraintes
création/suppression/modification de relations
index et clusters
relations dérivées : vues et photographies
contrôle d'accès
13
Création d'une table - Exemple
• Version de base
Create Table Etudiant
(
n°SS-ET
Number (14),
Nom
Char (20),
Adresse
Varchar2 (300)
);
14
Contraintes
• Peuvent être mises sur la ligne de l'attribut
concerné ou en fin d'instruction create
– Not Null
• l'attribut concerné doit toujours être renseigné
– Primary Key
• clé primaire de la relation (identifiant)
– Unique
• la valeur de l'attribut concerné est différente pour toutes les
occurrences (cas de clés concurrentes)
– References tab(att)
• col prend ses valeurs parmi les valeurs de la clé att de la relation
tab
– et bien d'autres...
15
Contraintes nommées
• Constraint nom_contrainte contrainte
– ajoute des contraintes nommées sur les valeurs
• Permet de les enlever / les réactiver par
programmation
– Alter table… Disable / Enable : Oracle
– Set constraints… Deferred / Immediate : norme SQL2
16
Création d'une table et remplissage en
passant
• Remplissage en passant
Create Table minidepartement (
cle number primary key,
data char(20))
as select dept, nom from Departement);
• crée la table et la remplit en prenant les valeurs de
2 colonnes de la table Département
17
Modification et suppression d'une table
• Ajouter une colonne à une table existante
Alter table Etudiant
add (N°Etud number(5));
• Modifier une colonne existante d'une table
Alter Table Etudiant
modify (Adresse Char(100)) ;
• Supprimer une table
Drop table Etudiant;
18
Contrôle d'accès
• But : protection des données
• Donner des privilèges à certains utilisateurs
– lecture Select
– insertionInsert
– modification Update ou Update <nom attribut>
• Un utilisateur peut
– donner un privilège à un autre,
– en même temps l'autoriser à transmettre ce privilège
=> arbre des privilèges transmis
• Les privilèges qu'un utilisateur donne sont un sousensemble de ses droits propres
19
Sélection (5/25)
• "Donnez tous les renseignements concernant les
étudiants dont le nom est Dupont"
Select
*
From
Where
Etudiant
nom = "Dupont";
N°Et
40
Nom
Dupont
Adresse
Lyon
20
Sélection + projection (6/25)
• Dans la grande majorité des cas, la projection et la
sélection sont associées
• "Donnez les noms des étudiants habitant Lyon"
Select
nom
From
Where
Etudiant
adresse = "Lyon";
Nom
Durand
Dupont
21
Fonctions ensemblistes (17/25)
• "Salaire moyen des maîtres de conférences"
Select Avg (Salaire)
From Enseignant
Where Grade = 'Maître de Conférence';
Avg(Salaire)
10 666,6667
22
Fonctions ensemblistes (18/25)
• "Donnez le nom des maîtres de conférences qui
gagnent plus que la moyenne des salaires des
enseignants"
Select Nom From Enseignant
Where Grade = 'Maitre de Conference'
And Salaire > (Select Avg(Salaire) From Enseignant);
NB : sous Mysql, pas d'imbrication de select.
Mais variables :
select @moySal:=avg(salaire) from Enseignant;
select nom from Enseignant
where grade="Maitre de conf"
and salaire >@moySal;
23
Fonctions ensemblistes (19/25)
• "Donnez le nombre d’UV auxquelles est inscrit
l’étudiant n° 20"
Select Count (N°UV)
From Inscription
Where N°Et = 20;
Count(N°UV)
3
24
Order by (21/25)
• "Noms des assistants par ordre alphabétique"
Select Nom
From Enseignant
Where Grade = 'Assistant'
Order By Nom Asc;
Nom
Dupont
Simon
25
Group by (22/25)
• "Donnez le salaire moyen des enseignants par
grade"
Select Grade, Avg (Salaire)
From Enseignant
Group By Grade;
Grade
Assistant
Maître de Conférence
Avg (Salaire)
8 500
10 666,6667
26
Having (23/25)
• "Donnez le N°SS des enseignants responsables de
plus de 1 UV"
Select Responsable From UV
Group By Responsable
Having Count (N° UV) > 1;
Responsable
70
27
Between (24/25)
• "Donner les noms des enseignants dont le salaire
est entre 10100 et 11100"
Select Nom
From Enseignant
Where Salaire Between 10100 And 11100;
Nom
Grey
28
Like (25/25)
• "Donnez les noms des étudiants dont le nom
commence par D"
Select Nom
From Etudiant
Where Nom Like 'D%';
29
Téléchargement