Interrogation d’une base de données relationnelle.

37
Interrogation d’une base de données relationnelle. Bases de données relationnelles Épisode 2

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

Page 1: Interrogation d’une base de données relationnelle.

Interrogation d’une base de données relationnelle.

Bases de données relationnellesÉpisode 2

Page 2: Interrogation d’une base de données relationnelle.

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

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Page 3: Interrogation d’une base de données relationnelle.

Schéma relationnel

Page 4: Interrogation d’une base de données relationnelle.

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Page 5: Interrogation d’une base de données relationnelle.

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

Page 6: Interrogation d’une base de données relationnelle.

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

Page 7: Interrogation d’une base de données relationnelle.

Projection

INSEE NOM population

83122 Salles-sur-Verdon

245

52450 Saint-Loup-sur-Aujon

142

46127 Gourdon 4094

SELECT INSEE, NOM, population FROM communes

Page 8: Interrogation d’une base de données relationnelle.

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

Page 9: Interrogation d’une base de données relationnelle.

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

Page 10: Interrogation d’une base de données relationnelle.

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

Page 11: Interrogation d’une base de données relationnelle.

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

Page 12: Interrogation d’une base de données relationnelle.

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Page 13: Interrogation d’une base de données relationnelle.

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

Page 14: Interrogation d’une base de données relationnelle.

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

Page 15: Interrogation d’une base de données relationnelle.

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

Page 16: Interrogation d’une base de données relationnelle.

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

Page 17: Interrogation d’une base de données relationnelle.

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

Page 18: Interrogation d’une base de données relationnelle.

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Page 19: Interrogation d’une base de données relationnelle.

Schéma de la base de données

Page 20: Interrogation d’une base de données relationnelle.

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

Page 21: Interrogation d’une base de données relationnelle.

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

Page 22: Interrogation d’une base de données relationnelle.

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

Page 23: Interrogation d’une base de données relationnelle.

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

Page 24: Interrogation d’une base de données relationnelle.

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

Page 25: Interrogation d’une base de données relationnelle.

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

Page 26: Interrogation d’une base de données relationnelle.

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'

Page 27: Interrogation d’une base de données relationnelle.

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'

Page 28: Interrogation d’une base de données relationnelle.

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'

Page 29: Interrogation d’une base de données relationnelle.

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'

Page 30: Interrogation d’une base de données relationnelle.

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

Page 31: Interrogation d’une base de données relationnelle.

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

Page 32: Interrogation d’une base de données relationnelle.

Bases de données : Requêtes

Introduction Une seule table

Colonnes Lignes

Deux tables Agrégation

Page 33: Interrogation d’une base de données relationnelle.

Schéma de la base de données

Page 34: Interrogation d’une base de données relationnelle.

Agrégation

SELECT COUNT(*) FROM communes

COUNT(*)

34966

Page 35: Interrogation d’une base de données relationnelle.

Agrégation

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

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

34966 66523318 1.400960933478236 2079

Page 36: Interrogation d’une base de données relationnelle.

Agrégation avec restriction

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

COUNT(*)

9

Page 37: Interrogation d’une base de données relationnelle.

Conclusion

Au revoir