Interrogation d’une base de données relationnelle.

Post on 17-Jun-2022

9 views 0 download

Transcript of Interrogation d’une base de données relationnelle.

Interrogation d’une base de données relationnelle.

Bases de données relationnellesÉpisode 2

Bases de données (2) : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Schéma relationnel

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

SELECT FROM

INSEE DEP REG NOM boulangeries population

83122 83 93 Salles-sur-Verdon

4 245

52450 52 44 Saint-Loup-sur-Aujon

1 142

46127 46 27 Gourdon 6 4094

SELECT * FROM communes

Projection

INSEE DEP REG NOM boulangeries population

83122 83 93 Salles-sur-Verdon

4 245

52450 52 44 Saint-Loup-sur-Aujon

1 142

46127 46 27 Gourdon 6 4094

SELECT INSEE, NOM, population FROM communes

Projection

INSEE NOM population

83122 Salles-sur-Verdon

245

52450 Saint-Loup-sur-Aujon

142

46127 Gourdon 4094

SELECT INSEE, NOM, population FROM communes

Colonne calculée

INSEE NOM population Taux

83122 Salles-sur-Verdon

245

52450 Saint-Loup-sur-Aujon

142

46127 Gourdon 4094

SELECT INSEE, NOM, population, boulangeries/population AS TauxFROM communes

Colonne calculée

INSEE NOM population Taux

83122 Salles-sur-Verdon

245 0

52450 Saint-Loup-sur-Aujon

142 0

46127 Gourdon 4094 0

SELECT INSEE, NOM, population, boulangeries/population AS TauxFROM communes

Colonne calculée

INSEE NOM population Taux

83122 Salles-sur-Verdon

245 0.0163265306122449

52450 Saint-Loup-sur-Aujon

142 0.007042253521126761

46127 Gourdon 4094 0.0014655593551538837

SELECT INSEE, NOM, population, boulangeries*1.0/population AS TauxFROM communes

Colonne calculée

INSEE NOM habitants B10000

83122 Salles-sur-Verdon

245 163

52450 Saint-Loup-sur-Aujon

142 70

46127 Gourdon 4094 14

SELECT INSEE, NOM, population AS habitants,boulangeries*10000/population AS B10000

FROM communes

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

SELECT FROM

INSEE DEP REG NOM boulangeries population

83122 83 93 Salles-sur-Verdon

4 245

52450 52 44 Saint-Loup-sur-Aujon

1 142

46127 46 27 Gourdon 6 4094

SELECT * FROM communes

Restriction

INSEE DEP REG NOM boulangeries population

83122 83 93 Salles-sur-Verdon

4 245

52450 52 44 Saint-Loup-sur-Aujon

1 142

46127 46 27 Gourdon 6 4094

SELECT * FROM communes WHERE boulangeries <=5

Restriction

INSEE DEP REG NOM boulangeries population

83122 83 93 Salles-sur-Verdon

4 245

52450 52 44 Saint-Loup-sur-Aujon

1 142

02441 02 32 Louâtre 0 195

SELECT * FROM communes WHERE boulangeries <=5

Restriction

INSEE DEP REG NOM boulangeries population

26124 26 84 Étoile-sur-Rhône

1 5478

35176 35 53 Guipry-Messac

4 6961

37156 37 24 Montlouis-sur-Loire

5 10666

SELECT * FROM communes WHERE boulangeries <=5 AND population > 4000

QCM

Quelle requête renvoie les noms des communes ayant moins d’habitants que de lettres dans leur nom ?

SELECT NOM FROM communes WHERE length(NOM) < population

SELECT INSEE FROM communes WHERE length(NOM) > population

SELECT NOM FROM communes WHERE population < length(NOM)

SELECT NOM FROM regions WHERE length(NOM) > population

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Schéma de la base de données

Jointure : produit cartésien

DEP REG CHEFLIEU NOM REG CHEFLIEU NOM

01 84 01053 Ain 01 97105 Guadeloupe

01 84 01053 Ain 02 97209 Martinique

01 84 01053 Ain 03 97302 Guyane

61 28 61001 Orne 28 76540 Normandie

61 28 61001 Orne 53 35238 Bretagne

SELECT * FROM departements CROSS JOIN regions

Jointure

DEP REG CHEFLIEU NOM REG CHEFLIEU NOM

01 84 01053 Ain 01 97105 Guadeloupe

01 84 01053 Ain 02 97209 Martinique

01 84 01053 Ain 03 97302 Guyane

61 28 61001 Orne 28 76540 Normandie

61 28 61001 Orne 53 35238 Bretagne

SELECT * FROM departements JOIN regions ON departements.REG = regions.REG

Jointure

DEP REG CHEFLIEU NOM REG CHEFLIEU NOM

61 28 61001 Orne 28 76540 Normandie

14 28 14118 Calvados 28 76540 Normandie

01 84 01053 Ain 84 69123 Auvergne-Rhône-Alpes

29 53 29232 Finistère 53 35238 Bretagne

SELECT * FROM departements JOIN regions ON departements.REG = regions.REG

Jointure

DEP REG CHEFLIEU NOM REG CHEFLIEU NOM

61 28 61001 Orne 28 76540 Normandie

14 28 14118 Calvados 28 76540 Normandie

01 84 01053 Ain 84 69123 Auvergne-Rhône-Alpes

29 53 29232 Finistère 53 35238 Bretagne

SELECT * FROM departements AS d JOIN regions AS r ON d.REG = r.REG

Jointure avec projection

DEP REG CHEFLIEU NOM REG CHEFLIEU NOM

61 28 61001 Orne 28 76540 Normandie

14 28 14118 Calvados 28 76540 Normandie

01 84 01053 Ain 84 69123 Auvergne-Rhône-Alpes

29 53 29232 Finistère 53 35238 Bretagne

SELECT DEP, d.REG, d.NOM AS NOM_DEP, r.NOM AS NOM_REGFROM departements AS d JOIN regions AS r ON d.REG = r.REG

Jointure avec projection

DEP REG NOM_DEP NOM_REG

61 28 Orne Normandie

14 28 Calvados Normandie

01 84 Ain Auvergne-Rhône-Alpes

29 53 Finistère Bretagne

SELECT DEP, d.REG, d.NOM AS NOM_DEP, r.NOM AS NOM_REGFROM departements AS d JOIN regions AS r ON d.REG = r.REG

Jointure, projection et restriction

DEP REG NOM_DEP NOM_REG

61 28 Orne Normandie

14 28 Calvados Normandie

01 84 Ain Auvergne-Rhône-Alpes

29 53 Finistère Bretagne

SELECT DEP, d.REG, d.NOM AS NOM_DEP, r.NOM AS NOM_REGFROM departements AS d JOIN regions AS r ON d.REG = r.REGWHERE r.NOM = 'Normandie'

Jointure, projection et restriction

DEP REG NOM_DEP NOM_REG

61 28 Orne Normandie

14 28 Calvados Normandie

27 28 Eure Normandie

50 28 Manche Normandie

76 28 Seine-Maritime

Normandie

SELECT DEP, d.REG, d.NOM AS NOM_DEP, r.NOM AS NOM_REGFROM departements AS d JOIN regions AS r ON d.REG = r.REGWHERE r.NOM = 'Normandie'

Jointure, projection et restriction

DEP REG NOM_DEP NOM_REG

61 28 Orne Normandie

14 28 Calvados Normandie

27 28 Eure Normandie

50 28 Manche Normandie

76 28 Seine-Maritime

Normandie

SELECT DEP, d.REG, d.NOM AS NOM_DEP, r.NOM AS NOM_REGFROM departements AS d JOIN regions AS r ON d.REG = r.REGWHERE r.NOM = 'Normandie'

Jointure, projection et restriction

DEP NOM_DEP

61 Orne

14 Calvados

27 Eure

50 Manche

76 Seine-Maritime

SELECT DEP, d.NOM AS NOM_DEPFROM departements AS d JOIN regions AS r ON d.REG = r.REGWHERE r.NOM = 'Normandie'

ORDER BY

DEP NOM_DEP

14 Calvados

27 Eure

50 Manche

61 Orne

76 Seine-Maritime

SELECT DEP, d.NOM AS NOM_DEPFROM departements AS d JOIN regions AS r ON d.REG = r.REGWHERE r.NOM = 'Normandie'ORDER BY DEP

QCM

Que renvoie la requête suivante ?

SELECT communes.NOM, departements.NOM FROM communes JOIN departements ON CHEFLIEU = INSEE;

Les noms des communes et de leur département.

Les noms des régions et de leurs chefs-lieux.

Les noms des départements et de leurs chefs-lieux.

Les noms des communes qui sont dans un département

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Schéma de la base de données

Agrégation

SELECT COUNT(*) FROM communes

COUNT(*)

34966

Agrégation

SELECT COUNT(*), SUM(population), AVG(boulangeries), MAX(boulangeries)FROM communes

COUNT(*) SUM(population) AVG(boulangeries) MAX(boulangeries)

34966 66523318 1.400960933478236 2079

Agrégation avec restriction

SELECT COUNT(*) FROM communes WHERE NOM = 'Saint-Loup'

COUNT(*)

9

Conclusion

Au revoir