[ppt]bases de données et langage sql · web viewbases de données introduction aux bases de...

55
1 Bases de Données Introduction aux Bases de Données et au langage SQL

Upload: hoangtu

Post on 16-Sep-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

1

Bases de Données

Introduction aux Bases de Données et au langage SQL

2

Bases de Données

Introduction aux Bases de Données et au langage SQL

Support et outils disponibles sur la page

ybertini.free.fr/aes

3

Informations

Consulter

Stocker

But des Bases de Données (BDD)

4

Plan

I - Définitions II - Modèle relationnel III- Langage SQL

5

I- Définitions (1)

Base de données (BDD) :

ensemble de donnéesorganisées suivant un modèleconsultable par de nombreux utilisateurs

6

Exemple de BDD

Annuaire téléphonique

NOM PRENOM TEL.Benoit Jean 04 76 45 65 56

Bernard Francois 04 76 56 68 32

Bourdan Pierre 04 76 23 54 66

Tableau Libre

accès

7

I- Définitions (2)

SGBD pour support informatique(Système de Gestion de Bases De Données)

Ensemble de logiciels capables :concevoir, enregistrer, consulter les données sur

support informatiquesécuriser les données :

intégrité du contenu droits d ’accès

8

Exemples de SGBD

Microsoft QUERY Microsoft ACCESS

Deux SGBD tout en un

9

Domaines d ’utilisation

SGBD (Système de Gestion de Bases De Données)

Traiter un grand nombre d’objets similairesclients pour les assurancespatients dans les hôpitauxcomptes dans les banques livres dans les bibliothèques…

10

Plan

I - Définitions II - Modèle relationnel III- Langage SQL

11

Modèle Relationnel (1)

BDDLangage pour Manipuler

Modèle pour Organiser

Yves:

But des BDD : gerer des informations. Deux questions : comment les stocker, et comment les consulter.

12

Modèle Relationnel (2)BDD relationnelle

BDD relationnelle = collection de relations relation = table (tableau)

14

Modèle Relationnel (3)La Relation - définition

ANNUAIRE

NOM PRENOM TEL Benoit Jean 04 76 45 65 56

Benoit Francois 04 76 56 68 32

Bourdan Jean 04 76 23 54 66

Bouvier Jacqueline 04 76 18 34 35

Nom : ANNUAIREAttributs :(NOM, PRENOM, TEL)

Occurrences :• 4 abonnés • décrits suivant valeurs d’attributs

15

Modèle Relationnel (5)Clé de relation

Clé d ’une relation: attribut(s) si la valeur de la clé est fixée

une seule occurrence possède cette valeur

Question : quelle est la clé d ’ANNUAIRE ? Nom Prenom Tel

NOM PRENOM TEL Benoit Jean 04 76 45 65 56

Benoit Francois 04 76 56 68 32

Bourdan Jean 04 76 23 54 66

Bouvier Jacqueline 04 76 18 34 35

Yves Bertini
questions en QCM : clef = nom, prenom ou tel ?

16

Modèle Relationnel (5)Clé de relation

Clé d ’une relation: attribut(s) si la valeur de la clé est fixée

une seule occurrence possède cette valeur

Question : quelle est la clé d ’ANNUAIRE ? Nom Prenom Tel

NOM PRENOM TEL Benoit Jean 04 76 45 65 56

Benoit Francois 04 76 56 68 32

Bourdan Jean 04 76 23 54 66

Bouvier Jacqueline 04 76 18 34 35

1 n° téléphone 1 seul abonné

Yves Bertini
questions en QCM : clef = nom, prenom ou tel ?

17

Modèle Relationnel (6)Schéma de relation

Schéma d ’une relation :Nom relation ( clé, attribut1, attribut2, … )

Schéma de l’ANNUAIRE :

ANNUAIRE ( TEL ), NOM, PRENOM=

ANNUAIRE ( NOM, PRENOM, TEL )

18

Exemple de BDDCompagnie d ’Aviation

Polycopié page 2

3 relations : vol, pilote et avion. schéma des relations :

vol(numvol, depart, arrivee, numav, numpil, jdep, hdep,jarr, harr)pilote(numpilote,nom,prenom)Avion(numavion, type, cap)

Schéma de la BDD (à suivre …)

19

Plan

I - Définitions II - Modèle relationnel III- Langage SQL

définitionun exemple de requête et traitementrequêtes typiques

20

SQL - langage relationnel

BDD

Modèle pour Organiser

Langage pour Manipuler

21

Structured Query Langage (SQL) langage d’interrogation (Anglais) inventé par IBM (1973)

SQL - langage relationnel Définition

Requête SQL

Réponse : relation

SGBD

Yves
SGBD comprend le SQL mais pas le francais

22

Requête en Français

Exemple :

Nom du pilote prénommé Antoine ?

Démarche : 1. tables (relations) mises en jeu2. attributs3. conditions de filtrage

valeurs imposées aux attributs des occurrences

DupuisPRENOM = ‘Antoine’

Yves
Repondez a cette question.Si on analyse la demarche, pour repondre:- identifie table- dans la table, cherche les colonnes qui inter

23

Requête en SQLDéfinition

3 parties (SFW)

Select <liste attributs à afficher résultat>From <listes tables>Where <condition de filtrage des occurrences>;

24

Requête en SQLExemple

En Français :Nom du pilote prénommé Antoine ?

Traduction SQL :

SelectFromWhere

pilote.nompilotepilote.prenom = ‘Antoine’;

25

Requête en SQL Execution par SGBD

Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’ ;

nomDupuis

RELATION_REP

26

Requête en SQL Traitement des Requêtes par SGBD

1. Choix des tables 2. Sélection des occurrences 3. Projection des attributs

Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’ ;

Yves
Les sgbd traitent les requetes en 3 etapesVoir sur l'exemple

27

Traitement des Requêtes1. Choix des Tables

Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’;

numvol depart arrivee numav numpil jdep hdep jarr harrV0001V0002V0003V0004V0005V0006V0007V0008

ParisLondresBerlinLondresBruxellesBerlinParisNew York

San FranciscoMoscouMadridMadridRomeAmsterdamBruxellesParis

A0001A0003A0002A0004A0006A0005A0001A0001

P0002P0001P0003P0006P0005P0001P0002P0003

15/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99

10:0010:3011:1506:2010:0014:3018:0003:00

16/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99

09:3017:0018:0009:3015:1017:0020:0021:30

numpilote nom prenomP0001P0002P0003P0004P0005P0006

DupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

numavion type capA0001A0002A0003A0004A0005A0006

Boeing 747Airbus 320Airbus 300Boeing 737DC 10Boeing 747

420300280250120410

VOL

PILOTE

AVION

28

Traitement des Requêtes2. Sélection des occurrences

Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’;

numpilote nom prenomP0001P0002P0003P0004P0005P0006

DupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

29

Traitement des Requêtes (3)3. Projection des attributs

Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’;

numpilote nom prenomP0001 Dupuis Antoine

30

Traitement des Requêtes (4)Résultat

Select pilote.nomFrom piloteWhere pilote.prenom = ‘Antoine’

nomDupuis

31

Plan

I - Définitions II - Modèle relationnel III- Langage SQL

définitionun exemple de requête et traitement requêtes typiques

Projection Sélection jointure

32

Requêtes typiquesProjection

R1 : Nom et prénom de tous les pilotes ?

SelectFromWhere

pilotepilote.nom, pilote.prenom

nom prenomDupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

33

Requêtes typiquesSélection (1)

R2 : Attributs des pilotes de prénom Georges?

SelectFromWhere

pilote*

pilote.prenom=‘Georges’

numpilote nom prenomP0002P0004

SimonAndré

GeorgesGeorges

34

Conditions élémentaires (1)

Syntaxe : <attribut> <Opérateur> <valeur> Valeur

nombre : 12.6mots : ‘ Georges ’dates : { d ‘1999-05-15 ’ }

Opérateurs de comparaisons=, <, <=, >, >=, <>

Conditions élémentaires : pilote.prenom = ‘ Georges ’avion.cap > 300

35

Conditions élémentaires (1)Trouver les erreurs

1. vol.depart = "Londres"2. vol.numpil = P00023. avion.cap < '300'4. avion.type = 'AIRBUS 300'5. avion.type = 'Airbus300'6. vol.jdep > {d 1999-05-15}7. vol.numavion = 'A0002'8. avions.numavion = 'A0002'9. vol.numav ≠ 'A0002'

36

Conditions élémentaires (1)Trouver les erreurs

vol.depart = "Londres"

vol.depart = 'Londres'

37

Conditions élémentaires (1)Trouver les erreurs

vol.numpil = P0002

vol.numpil = 'P0002'

38

Conditions élémentaires (1)Trouver les erreurs

avion.cap < '300'

avion.cap < 300

39

Conditions élémentaires (1)Trouver les erreurs

avion.type = 'AIRBUS 300'

avion.type = 'Airbus 300'

40

Conditions élémentaires (1)Trouver les erreurs

avion.type = 'Airbus300'

avion.type = 'Airbus 300'

41

Conditions élémentaires (1)Trouver les erreurs

vol.jdep={d 1999-05-15}

vol.jdep={d '1999-05-15'}

42

Conditions élémentaires (1)Trouver les erreurs

vol.numavion = 'A0002'

vol.numav = 'A0002'

43

Conditions élémentaires (1)Trouver les erreurs

avions.numavion = 'A0002'

avion.numavion = 'A0002'

44

Conditions élémentaires (1)Trouver les erreurs

vol.numav ≠ 'A0002'

vol.numav <> 'A0002'

45

Conditions composées (2) Combinaisons logiques :

AND : vol.depart = ‘Londres’ And vol.arrivee = ‘Madrid’

Question : numéro des vols qui vérifient cette condition.

OR :avion.type = ‘Airbus 300’ Or avion.type = ‘Airbus 200’

Question : numéro des avions qui vérifient cette condition.

46

Conditions composées (3)

Vols pour Madrid ou Rome

Avions de capacité entre 200 et 300

Vols de Paris vers Londres ou Berlin

vol.arrivee = ‘Madrid’ Or vol.arrivee = ‘Rome’

avion.cap >= 200 And avion.cap <= 300

vol.depart = ‘Paris’ And( vol.arrivee = ‘Londres’ Or vol.arrivee = ‘Berlin’ )

47

Requêtes typiques (2) Sélection

R3 ’ : Attributs des vols décollant pour Madrid le 15/05/99 ?

SelectFromWhere

vol*

vol.arrivee=‘Madrid’ And vol.jdep={d ‘1999-05-15’} 

numvol depart arrivee

numav numpil jdep hdep jarr harr

V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00

48

Requêtes typiquesJointure

R6 ’ : Nom du pilote du vol V0001 ?

numvol depart arrivee numav numpil jdep hdep jarr harrV0001V0002V0003...

ParisLondresBerlin...

San FranciscoMoscouMadrid...

A0001A0003A0002...

P0002P0001P0003...

15/05/9915/05/9915/05/99...

10:0010:3011:15...

16/05/9915/05/9915/05/99...

09:3017:0018:00...

numpilote nom prenomP0001P0002P0003P0004P0005P0006

DupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

référence

49

Schéma de BDDSchéma des relations + références

numvol depart arrivee numav numpil jdep hdep jarr harrV0001V0002V0003...

ParisLondresBerlin...

San FranciscoMoscouMadrid...

A0001A0003A0002...

P0002P0001P0003...

15/05/9915/05/9915/05/99...

10:0010:3011:15...

16/05/9915/05/9915/05/99...

09:3017:0018:00...

numpilote nom prenomP0001P0002P0003P0004P0005P0006

DupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

numavion type capA0001A0002A0003A0004A0005A0006

Boeing 747Airbus 320Airbus 300Boeing 737DC 10Boeing 747

420300280250120410

50

Requêtes typiquesJointure naturelle R5 : Attributs des vols et des pilotes des vols?

SelectFromWhere

pilote, vol*

pilote.numpilote = vol.numpilnumpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harrP0002P0001P0003P0006P0005P0001P0002P0003

SimonDupuisFrançoisMathieuArthurDupuisSimonFrançois

GeorgesAntoineLucFrançoisLouisAntoineGeorgesLuc

V0001V0002V0003V0004V0005V0006V0007V0008

ParisLondresBerlinLondresBruxellesBerlinParisNew York

San FranciscoMoscouMadridMadridRomeAmsterdamBruxellesParis

A0001A0003A0002A0004A0006A0005A0001A0001

P0002P0001P0003P0006P0005P0001P0002P0003

15/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99

10:0010:3011:1506:2010:0014:3018:0003:00

16/05/9915/05/9915/05/9916/05/9916/05/9916/05/9916/05/9917/05/99

09:3017:0018:0009:3015:1017:0020:0021:30

Yves
2 tables -> condition de jointure traduction en SQL reference entre tables

51

Requêtes typiquesProduit cartésien

Select *From pilote, volnumpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harrP0001P0002P0003P0004P0005P0006

DupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

V0001V0001V0001V0001V0001V0001

ParisParisParisParisParisParis

San FranciscoSan FranciscoSan FranciscoSan FranciscoSan FranciscoSan Francisco

A0001A0001A0001A0001A0001A0001

P0002P0002P0002P0002P0002P0002

15/05/9915/05/9915/05/9915/05/9915/05/9915/05/99

10:0010:0010:0010:0010:0010:00

16/05/9916/05/9916/05/9916/05/9916/05/9916/05/99

09:3009:3009:3009:3009:3009:30

... ... ... ... ... ... ... ... ... ... ... ...P0001P0002P0003P0004P0005P0006

DupuisSimonFrançoisAndréArthurMathieu

AntoineGeorgesLucGeorgesLouisFrançois

V0008V0008V0008V0008V0008V0008

New YorkNew YorkNew YorkNew YorkNew YorkNew York

ParisParisParisParisParisParis

A0001A0001A0001A0001A0001A0001

P0003P0003P0003P0003P0003P0003

17/05/9917/05/9917/05/9917/05/9917/05/9917/05/99

03:0003:0003:0003:0003:0003:00

17/05/9917/05/9917/05/9917/05/9917/05/9917/05/99

21:3021:3021:3021:3021:3021:30

Page 4

52

Requêtes typiquesJointure

NE PAS OUBLIER CONDITION DE JOINTURE

2 tables 1 condition de jointure 3 tables 2 conditions de jointure

53

Encore des requêtes

R6’ : Nom du pilote du vol V0001 ?

SelectFromWhere

pilote, volpilote.nom

pilote.numpilote = vol.numpil And vol.numvol = ‘V0001’

nomSimon

54

Encore des requêtes

R8 : Numéro des vols, type et capacité des avions, et nom de leurs pilotes ?

Select

FromWhere

pilote, vol, avion

vol.numvol, avion.type, avion.cap, pilote.nom

pilote.numpilote = vol.numpil And vol.numav = avion.numavion

55

Encore des requêtes

numvol type cap nomV0001V0002V0003V0004V0005V0006V0007V0008

Boeing 747Airbus 300Airbus 320Boeing 737Boeing 747DC 10Boeing 747Boeing 747

420280300250410120420420

SimonDupuisFrançoisMathieuArthurDupuisSimonFrançois

56

Encore des requêtes R8 : Numéro, type d’avion, capacités et nom des pilotes

des vols?Select vol.numvol, avion.type, avion.cap, pilote.nomFrom pilote, vol, avionWhere pilote.numpilote=vol.numpil And

vol.numav=avion.numavion

numvol type cap nomV0001V0002V0003V0004V0005V0006V0007V0008

Boeing 747Airbus 300Airbus 320Boeing 737Boeing 747DC 10Boeing 747Boeing 747

420280300250410120420420

SimonDupuisFrançoisMathieuArthurDupuisSimonFrançois