nitiation aux bases de donnees ycee ellevue cours

7
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE Fabien Hospital 1/7 COURS 6 : REVISIONS BASES DE DONNEES 1. INTRODUCTION ........................................................................................................................................... 1 1.1. Principe de l’architecture .......................................................................................... 1 1.2. Organisation d’une Base de donnĂ©es ........................................................................ 2 2. OPERATEURS ................................................................................................................................................ 4 2.1. OpĂ©rateurs simples ................................................................................................... 4 2.2. OpĂ©rateurs complexes .............................................................................................. 4 3. SYNTAXE SQL ............................................................................................................................................... 5 4. CONSULTATION D’UNE BASE DE DONNEES EN PYTHON ............................................................... 7 CompĂ©tences attendues : Client/serveur architecture trois-tiers Vocabulaire des bases de donnĂ©es : relation, attribut, domaine, schĂ©ma de relation ; notion de clĂ© primaire OpĂ©rateurs usuels sur les ensembles dans un contexte de bases de donnĂ©es : union, intersection, diffĂ©rence. OpĂ©rateurs spĂ©cifiques de l’algĂšbre relationnelle : projection, sĂ©lection (ou restriction), renommage, Jointure symĂ©triques ou simples, produit et division cartĂ©siennes ; fonctions d’agrĂ©gation : min, max,somme, moyenne, comptage 1. INTRODUCTION Les bases de donnĂ©es appartiennent aux systĂšmes informatiques qui nous aident Ă  gĂ©rer des donnĂ©es trĂšs diverses. Nous avons donc, d’un cĂŽtĂ©, un serveur de donnĂ©es quelque part sur la Toile, avec des disques magnĂ©tiques et leurs pistes qui gardent prĂ©cieusement des sĂ©quences de bits, des structures d’accĂšs compliquĂ©es comme des index ou des arbres-B, des hiĂ©rarchies de mĂ©moires avec leurs caches et, de l’autre, un utilisateur. Un moteur de recherche de la Toile ne fait pas autre chose, seulement il le fait sur un systĂšme de fichiers Ă  l’échelle de la planĂšte. Les systĂšmes qui gĂšrent aussi des donnĂ©es mais qui sont bien plus sophistiquĂ©s que les systĂšmes de fichiers : les systĂšmes de gestion de bases de donnĂ©es. (SGBD) Ce sont des logiciels complexes, rĂ©sultats de dizaines d’annĂ©es de recherche et de dĂ©veloppement. Ils permettent Ă  des individus ou des programmes d’exprimer des requĂȘtes pour interroger des bases de donnĂ©es ou pour les modifier. Nous nous focaliserons ici sur les plus rĂ©pandus d’entre ces systĂšmes, les systĂšmes relationnels, parmi lesquels nous trouvons : - des logiciels commerciaux trĂšs rĂ©pandus comme celui d’Oracle ; - et des logiciels libres trĂšs utilisĂ©s comme MySQL. 1.1. Principe de l’architecture Abstraction : le systĂšme doit organiser et prĂ©senter les donnĂ©es de façon intuitive et permettre de les manipuler en restant Ă  un niveau abstrait sans avoir Ă  considĂ©rer des dĂ©tails d’implĂ©mentation. IndĂ©pendance : nous distinguons trois niveaux, physique, logique et externe. Le but est de pouvoir modifier un niveau (par exemple, ajouter un nouvel utilisateur externe avec de nouveaux besoins) sans modifier les autres niveaux. UniversalitĂ© : capturer toutes les donnĂ©es d’une entreprise, d’un groupe, d’une organisation quelconque, pour tout type d’applications Une premiĂšre architecture est celle des systĂšmes client/serveur. La base de donnĂ©es est gĂ©rĂ©e sur un serveur. L’application tourne sur une autre machine, le client. De plus en plus, cette architecture s e complique avec l’introduction d’un troisiĂšme “tiers” , une machine qui gĂšre l’interface, typiquement un navigateur Web. On appelle SGBD un systĂšme de gestion de base de donnĂ©es, en anglais DBMS (Data Base Management System). Nous pouvons noter diffĂ©rentes Ă©volutions gĂ©nĂ©rĂ©es par des amĂ©liorations dans les matĂ©riels disponibles :

Upload: others

Post on 18-Jun-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 1/7

COURS 6 : REVISIONS BASES DE DONNEES

1. INTRODUCTION ........................................................................................................................................... 1 1.1. Principe de l’architecture .......................................................................................... 1 1.2. Organisation d’une Base de donnĂ©es ........................................................................ 2

2. OPERATEURS ................................................................................................................................................ 4 2.1. Opérateurs simples ................................................................................................... 4 2.2. Opérateurs complexes .............................................................................................. 4

3. SYNTAXE SQL ............................................................................................................................................... 5 4. CONSULTATION D’UNE BASE DE DONNEES EN PYTHON ............................................................... 7

Compétences attendues :

Client/serveur architecture trois-tiers Vocabulaire des bases de données : relation, attribut, domaine, schéma de relation ; notion de clé

primaire

Opérateurs usuels sur les ensembles dans un contexte de bases de données : union, intersection,

différence.

OpĂ©rateurs spĂ©cifiques de l’algĂšbre relationnelle : projection, sĂ©lection (ou restriction), renommage,

Jointure symĂ©triques ou simples, produit et division cartĂ©siennes ; fonctions d’agrĂ©gation : min,

max,somme, moyenne, comptage

1. INTRODUCTION

Les bases de données appartiennent aux systÚmes informatiques qui nous aident à gérer des données trÚs diverses.

Nous avons donc, d’un cĂŽtĂ©, un serveur de donnĂ©es quelque part sur la Toile, avec des disques magnĂ©tiques et

leurs pistes qui gardent prĂ©cieusement des sĂ©quences de bits, des structures d’accĂšs compliquĂ©es comme des index

ou des arbres-B, des hiĂ©rarchies de mĂ©moires avec leurs caches et, de l’autre, un utilisateur.

Un moteur de recherche de la Toile ne fait pas autre chose, seulement il le fait sur un systĂšme de fichiers Ă  l’échelle

de la planÚte. Les systÚmes qui gÚrent aussi des données mais qui sont bien plus sophistiqués que les systÚmes de

fichiers : les systÚmes de gestion de bases de données. (SGBD)

Ce sont des logiciels complexes, rĂ©sultats de dizaines d’annĂ©es de recherche et de dĂ©veloppement. Ils permettent Ă 

des individus ou des programmes d’exprimer des requĂȘtes pour interroger des bases de donnĂ©es ou pour les

modifier. Nous nous focaliserons ici sur les plus rĂ©pandus d’entre ces systĂšmes, les systĂšmes relationnels, parmi

lesquels nous trouvons :

- des logiciels commerciaux trĂšs rĂ©pandus comme celui d’Oracle ;

- et des logiciels libres trÚs utilisés comme MySQL.

1.1. Principe de l’architecture

Abstraction : le systÚme doit organiser et présenter les données de façon intuitive et permettre de les

manipuler en restant Ă  un niveau abstrait sans avoir Ă  considĂ©rer des dĂ©tails d’implĂ©mentation.

Indépendance : nous distinguons trois niveaux, physique, logique et externe. Le but est de pouvoir modifier

un niveau (par exemple, ajouter un nouvel utilisateur externe avec de nouveaux besoins) sans modifier les

autres niveaux.

UniversalitĂ© : capturer toutes les donnĂ©es d’une entreprise, d’un groupe, d’une organisation quelconque,

pour tout type d’applications

Une premiÚre architecture est celle des systÚmes client/serveur. La base de données est gérée sur un serveur.

L’application tourne sur une autre machine, le client. De plus en plus, cette architecture se complique avec

l’introduction d’un troisiùme “tiers” , une machine qui gùre l’interface, typiquement un navigateur Web.

On appelle SGBD un systÚme de gestion de base de données, en anglais DBMS (Data Base Management System).

Nous pouvons noter différentes évolutions générées par des améliorations dans les matériels disponibles :

Page 2: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 2/7

l’accroissement des performances notamment fondĂ©es sur les mĂ©moires vives de plus en plus massives, et

des mémoires flash encore plus massives ;

l’utilisation de plus en plus de parallĂ©lisme massif dans des grappes de machines pour traiter d’énormes

volumes de donnĂ©es. On parle parfois de “big data” ;

pour simplifier la gestion de donnĂ©es, on tend Ă  la dĂ©porter dans les nuages (le cloud), c’est-Ă -dire Ă  mettre

ses données dans des grappes de machines gérées par des spécialistes comme Amazon.

1.2. Organisation d’une Base de donnĂ©es

Généralement, une base de données s'organise de la maniÚre suivante :

BASE DE DONNEES/DATABASE TABLE(S)/TABLE(S) CHAMPS/FIELD(S)

VALEUR(S)/VALUE(S)

Les Ă©lĂ©ments d'une base de donnĂ©es sont rangĂ©s en tables, qui elles-mĂȘmes contiennent des champs qui peuvent

avoir plusieurs valeurs.

Le modĂšle le plus courant pour reprĂ©senter les bases de donnĂ©es est le modĂšle relationnel, qui utilise l’algĂšbre

relationnelle.

Dans le modÚle relationnel, les données sont organisées en tableaux à deux dimensions que nous appellerons des

relations. À la diffĂ©rence des mathĂ©maticiens, nous supposons les relations de taille finie.

Une table ou relation est donc un tableau fini à deux dimensions, dans lequel les éléments de chaque colonne sont

tous de mĂȘme type.

Une colonne est appelée attribut.

À chaque attribut est associĂ© un domaine đ·đ‘– = 𝑑𝑜𝑚(𝐮𝑖), gĂ©nĂ©ralement Ă©gal Ă  un type

usuel, comme des chaĂźnes de caractĂšres, oĂč des adresses postales, des dates, des entiers

positifs, des noms propres, etc

Exemple des films en créant la base de données CINEMA

FILM SEANCES

Titre RĂ©alisateur Acteur Titre Salle Heure

Interstallar C. Nolan Matthew McConaughey La famille BĂ©lier 1 19 :00

Imitation Game M.Tyldum Matthew Goode Imitation Game 2 20 :00

La famille Bélier E. Lartigau François Damiens Interstellar 3 19 :15

Le Hobbit 3 P. Jackson Martin Freeman Interstellar 3 22 :30

Page 3: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 3/7

Donner 3 attributs avec 3 domaines différents :

-

-

-

Plus gĂ©nĂ©ralement, on appelle schĂ©ma relationnel 𝑆 = (𝐮1, 
 , 𝐮𝑛) un ensemble fini d’attributs, et alors une table

ou relation est un ensemble fini de n-uplets de đ·1 × 
 × đ·đ‘›.

On peut aussi noter 𝑆 = ((𝐮1, đ·1), . . ., (𝐮𝑛, đ·đ‘›)), et 𝑅(𝑆) pour une relation 𝑅 de schĂ©ma relationnel 𝑆. Par

exemple :

𝑆 = ((𝐮𝑐𝑡𝑒𝑱𝑟; đ‘‡đ‘’đ‘„đ‘Ąđ‘’); (đ‘…Ă©đ‘Žđ‘™đ‘–đ‘ đ‘Žđ‘Ąđ‘’đ‘ąđ‘Ÿ; đ‘‡đ‘’đ‘„đ‘Ąđ‘’); (𝑆𝑎𝑙𝑙𝑒; ℕ); (đ»đ‘’đ‘ąđ‘Ÿđ‘’; ℝ)) ∶

L’aritĂ© d’un schĂ©ma relationnel est son nombre d’attributs.

Donner le schĂ©ma relationnel et l’aritĂ© de FILM :

Une clef permet de diffĂ©rencier toutes les lignes de la table 𝑅.

On peut citer comme exemple le numĂ©ro d’abonnĂ©, ou le numĂ©ro de film mais pas le nom du rĂ©alisateur, ni du film.

Dans le cas oĂč la clef est constituĂ©e d’un unique attribut, on parle d’identifiant.

On choisit en gĂ©nĂ©ral une clef particuliĂšre qu’on appelle clef primaire.

Exemple CINEMA : Ici il n’y a pas encore de clĂ© ! Il faudra donner une clĂ© primaire Ă  chacun des films.

L’algĂšbre relationnelle consiste en un petit nombre d’opĂ©rations de base qui, appliquĂ©es Ă  des relations, produisent

de nouvelles relations. Ces opĂ©rations peuvent ĂȘtre composĂ©es pour construire des expressions algĂ©briques de plus

en plus complexes.

Pour rĂ©pondre Ă  la question OĂč et Ă  quelle heure puis-je voir un film avec Francois Damiens ?, et pour faciliter la

lisibilitĂ© de ces formules logiques, on peut exprimer une requĂȘte en dĂ©finissant prĂ©cisĂ©ment la forme du n-uplet

(nommĂ©e res) en lui affectant les variables libres que l’on cherche Ă  obtenir :

𝑟𝑒𝑠(𝑠, ℎ), ∃𝑡, 𝑟 ; (đčđŒđżđ‘€ (𝑡, 𝑟," đč𝑟𝑎𝑛𝑐𝑜𝑖𝑠 đ·đ‘Žđ‘šđ‘–đ‘’đ‘›đ‘ ") ∧ đ‘†đžđŽđ‘đ¶đžđ‘†(𝑡, 𝑠, ℎ))

L’intĂ©rĂȘt de ce procĂ©dĂ© est qu’on peut ensuite rĂ©utiliser les n-uplets rĂ©sultats exactement comme s’il

s’agissait d’une relation. C’est ce qu’on appelle le mĂ©canisme des vues.

Une vue est une relation, qui au lieu d’ĂȘtre stockĂ©e dans la base de donnĂ©es, est dĂ©finie

intentionnellement.

Un utilisateur de la base de donnĂ©es peut l’utiliser comme n’importe quelle autre relation.

En pratique, les machines utilisent le langage SQL (pour Structured Query Language) qui exprime

diffĂ©remment les mĂȘmes questions. Par exemple la question prĂ©cĂ©dente s’exprime en SQL comme une

REQUETE :

SELECT salle, heure FROM Film, Seance WHERE Film.titre = Seance.titre AND acteur= "Francois Damiens"

Par la suite, nous allons donc Ă©tudier comment Ă©crire en algĂšbre relationnelle la question qui nous sert d’exemple. Il

nous faudra trois opĂ©rations, la jointure, la sĂ©lection et la projection, que nous composerons dans l’expression

suivante de l’algùbre relationnelle :

đžđ»đ” = 𝜋𝑠𝑎𝑙𝑙𝑒,ℎ𝑒𝑱𝑟𝑒 (𝜋𝑡𝑖𝑡𝑟𝑒(𝜎𝑎𝑐𝑡𝑒𝑱𝑟 = "đčđ‘Ÿđ‘Žđ‘›đ‘đ‘œđ‘–đ‘ đ·đ‘Žđ‘šđ‘–đ‘’đ‘›đ‘ ")(đčđŒđżđ‘€) ) ⋈ đ‘†đžđŽđ‘đ¶đžđ‘†)

L’opĂ©ration de sĂ©lection, dĂ©notĂ©e 𝜎, filtre une relation, ne gardant que les n-uplets satisfaisant une condition, ici

acteur = ," đčđ‘Ÿđ‘Žđ‘›đ‘đ‘œđ‘–đ‘ đ·đ‘Žđ‘šđ‘–đ‘’đ‘›đ‘ ". L’opĂ©ration de projection, dĂ©notĂ©e 𝜋, permet aussi de filtrer de l’information d’une

relation mais cette fois en Ă©liminant des colonnes. L’opĂ©ration peut-ĂȘtre la plus exotique de l’algĂšbre, la jointure,

dĂ©notĂ©e ⋈, combine des n-uplets de deux relations.

Page 4: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 4/7

2. OPERATEURS

2.1. Opérateurs simples

2.1.1. Union, intersection, différence

Soit 𝑅1(𝑆) et 𝑅2(𝑆) deux relations de mĂȘme schĂ©ma relationnel 𝑆.

Alors les relations 𝑅1 âˆȘ 𝑅2, 𝑅1 ∩ 𝑅2 𝑒𝑡 𝑅1 − 𝑅2, appelĂ© respectivement union, intersection, diffĂ©rence de 𝑅1 et de

𝑅2, sont les relations de schĂ©ma relationnel 𝑆 qui contiennent les lignes qui appartiennent respectivement Ă  𝑅1 ou Ă 

𝑅2, à 𝑅1 et à 𝑅2, à 𝑅1 mais pas à 𝑅2.

2.1.2. Projection

Soit 𝑅 une table de schĂ©ma relationnel 𝑆 = (𝐮1, 
 , 𝐮𝑛) et soit 𝑆â€Č = (𝐮𝑖1; , 
 , 𝐮𝑖𝑘) une partie de 𝑆, c’est-Ă -dire

qu’on ne garde que certains attributs. La projection de 𝑅 𝑠𝑱𝑟 𝑆â€Č est la table :

𝜋𝑆â€Č(R) = {(𝑒𝐮𝑖1, 
 , 𝑒𝐮𝑖𝑘), 𝑒 ∈ 𝑅}

2.1.3. SĂ©lection

Si 𝐮 est un attribut de 𝑅, 𝑒𝑡 𝑎 un Ă©lĂ©ment du domaine de 𝐮 alors on appelle sĂ©lection ou restriction de 𝑅 selon la

condition 𝐮 = 𝑎, la relation contenant les lignes de 𝑅 satisfaisant la condition 𝐮 = 𝑎.

𝜎𝐮=𝑎(𝑅) = {𝑒 ∈ 𝑅, 𝑒. 𝐮 = 𝑎}

2.1.4. Renommage

Soit 𝐮𝑖 un attribut de 𝑅. On peut changer son nom, on dit qu’on renomme son nom en đ” ∶ đœŒđ”â†đŽ(𝑅) est la relation

𝑅 dans laquelle on a juste changĂ© le nom de 𝐮𝑖 𝑒𝑛 đ”.

2.2. Opérateurs complexes

2.2.1. Produit et division cartésienne

Soit 𝑅(𝑆) 𝑒𝑡 𝑅â€Č(𝑆â€Č) deux relations. On note 𝑆 âˆȘ 𝑆â€Č l’union de 𝑆 et de 𝑆â€Č s’ils sont disjoints (𝑆â€Čâ€Č = 𝑆 ⊎ 𝑆â€Č Ă©quivaut Ă  𝑆â€Čâ€Č = 𝑆 + 𝑆â€Č et ∩ 𝑆â€Č = ∅ ).

On dĂ©finit alors le produit cartĂ©sien 𝑅 × 𝑅â€Č comme Ă©tant la relation de schĂ©ma 𝑆 ⊎ 𝑆â€Č contenant les couples

(𝑒, 𝑒â€Č) tels que 𝑒 ∈ 𝑅 𝑒𝑡 𝑒â€Č ∈ 𝑅â€Č.

Si

𝑆 = (𝐮1 , 
 , 𝐮𝑛) 𝑒𝑡 𝑆â€Č = (đ”1 , 
 , đ”đ‘š)

alors 𝑅 × 𝑅â€Č admet pour schĂ©ma 𝑆 ⊎ 𝑆â€Č = (𝐮1 , 
 , 𝐮𝑛 , đ”1 , 
 , đ”đ‘š), et

𝑅 × 𝑅â€Č = {(đ‘„1 , 
 , đ‘„đ‘›, 𝑩1, 
 , 𝑩𝑚) | (đ‘„1, 
 , đ‘„đ‘›) ∈ 𝑅 𝑒𝑡 (𝑩1, 
 , 𝑩𝑚) ∈ 𝑅â€Č}

2.2.2. Jointure symétrique

Cette opĂ©ration, dĂ©notĂ© ⋈, s’applique Ă  deux relations quelconques I et J d’attributs V et W, respectivement, et

produit une relation d’attributs 𝑉 âˆȘ 𝑊 :

đŒ ⋈ đœ = {𝑡 𝑠𝑱𝑟 𝑉 âˆȘ 𝑊 |𝑖𝑙 đ‘’đ‘„đ‘–đ‘ đ‘Ąđ‘’ 𝑣 ∈ đŒ 𝑒𝑡 đ‘€ ∈ đœ, 𝑡|𝑉 = 𝑣 𝑒𝑡 𝑡|𝑊 = đ‘€}

Quand 𝑑𝑜𝑚(𝑉) = 𝑑𝑜𝑚(𝑊), đŒ ⋈ đœ = đŒ ∩ đœ (c’est l’intersection ensembliste classique),

Quand 𝑑𝑜𝑚(𝑉) ∩ 𝑑𝑜𝑚(𝑊) = ∅ ; alors đŒ ⋈ đœ est le produit cartĂ©sien de I et J, dĂ©notĂ© đŒ × đœ.

Ici on ne considĂšre que les jointures symĂ©triques 𝑑𝑜𝑚(𝑉) = 𝑑𝑜𝑚(𝑊) donc la relation est

đŒ ⋈ đœ = {(𝑒, 𝑒â€Č) ∈ đŒ × đœ | 𝑒. 𝑉 = 𝑒â€Č𝑊} = 𝜎𝑉=𝑊(đŒ × đœ )

2.2.3. Fonctions d’agrĂ©gation : min, max, somme, moyenne, comptage

On regroupe les lignes d’une relation selon un critùre puis on applique la fonction. Ceci produit une nouvelle table.

Page 5: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 5/7

Soit 𝑅 une relation de schĂ©ma 𝑆. Soit 𝐮 𝑒𝑡 đ” deux attributs de 𝑅, c’est Ă  dire deux Ă©lĂ©ments de 𝑆. On note

đŽđ›Ÿđ‘“(đ”)(𝑅) la table obtenue :

- On regroupe les lignes qui ont le mĂȘme attribut 𝐮, ce qui forme des agrĂ©gats,

- puis on applique la fonction 𝑓 sur les agrĂ©gats, ce qui crĂ©e une table dont les attributs sont 𝐮 𝑒𝑡 𝑓(đ”).

Plus gĂ©nĂ©ralement, soit 𝐮1; 
 ; 𝐮𝑛 𝑒𝑡 đ”1; 
 ; đ”đ‘š des attributs de 𝑅, 𝑒𝑡 𝑓1 ; 
 ; 𝑓𝑚 des fonctions d’agrĂ©gation sur les

đ”đ‘— . On note 𝐮1; 
 ; đŽđ‘›đ›Ÿđ‘“1(đ”1); 
 ; 𝑓𝑚(đ”đ‘š)(𝑅) la table obtenue en agrĂ©geant selon les 𝐮𝑖 (tous les 𝐮𝑖 doivent ĂȘtre Ă©gaux), et

en appliquant les fonction 𝑓𝑗 sur les agrĂ©gats.

3. SYNTAXE SQL

L’algĂšbre relationnelle fait partie des fondements des bases de donnĂ©es relationnelles, utilisĂ© en interne par le

SGBD pour Ă©valuer les requĂȘtes. Le langage SQL quant Ă  lui est destinĂ© aux utilisateurs du SGBD et, Ă  l’heure

actuelle, est le langage standard d’interrogation. Il marie d’une certaine façon l’algùbre relationnelle et le calcul

relationnel de n-uplets.

Le langage de dĂ©finition de donnĂ©es permet la modification du schĂ©ma d’une base de donnĂ©es. Il propose trois

opérations : la création (CREATE), la suppression (DROP) et la modification (ALTER). Par exemple, la création

d’une table a pour syntaxe :

CREATE TABLE (table) ((définitions de colonnes) [( contraintes de table)]).

Le langage DDL permet de spĂ©cifier qu’un ensemble d’attributs est clĂ© primaire (PRIMARY KEY), qu’une

sĂ©quence d’attributs est clĂ© Ă©trangĂšre (FOREIGN KEY/REFERENCES). Il permet aussi de contraindre le

domaine d’un attribut (CHECK) ou qu’un ensemble d’attributs ne contient pas de valeur manquante (NOT NULL).

Enfin, il permet, Ă  la maniĂšre de PRIMARY KEY, de prĂ©ciser qu’un ensemble d’attributs ne contient pas de

doublons (UNIQUE) ; à la différence de PRIMARY KEY, il est possible de spécifier plusieurs UNIQUE sur la

mĂȘme table.

Exemple CINEMA : table SALLES

CREATE TABLE SALLES( Nom VARCHAR(30) PRIMARY KEY, Adresse VARCHAR(255) UNIQUE NOT NULL, Telephone VARCHAR(10) );

L’attribut Nom est

Maintenant que les tables sont créées on peut insérer des données :

INSERT INTO salles VALUES(’ABC, ’51 rue des Ecoles’, ’0561545160’);

Le dernier aspect du langage SQL que nous Ă©tudierons est l’interrogation des donnĂ©es grĂące Ă  l’instruction

SELECT :

SELECT (liste d’expressions) FROM (liste de tables) WHERE (conditions) GROUP BY (liste d’attributs) HAVING (conditions) ORDER BY (liste d’attributs)

Les rĂŽles des trois premiĂšres lignes sont les suivants :

La clause SELECT spécifie le schéma de sortie (projection).

La clause FROM précise les tables impliquées et leurs liens (produit cartésien et jointures).

La clause WHERE fixe les conditions que doivent remplir les n-uplets résultats (sélection).

Page 6: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 6/7

Les trois derniùres clauses nous font sortir du calcul et de l’algùbre relationnelle :

La clause GROUP BY comment regrouper des n-uplets (agrégation) ?

La clause HAVING impose une condition sur les groupes (i.e. permet d’éliminer l’intĂ©gralitĂ© d’un

groupe, en se basant sur la valeur d’un agrĂ©gat calculĂ© sur ce groupe).

Enfin ORDER BY définit les critÚres de tris des résultats.

La clause SELECT est suivie d’une liste d’expressions qui reprennent les opĂ©rations de l’algĂšbre relationnel. Le

tableau suivant regroupe ces expressions les plus courantes :

AVG() pour calculer la moyenne d’un set de valeur.

COUNT() pour compter le nombre de lignes concernées.

MAX() pour récupérer la plus haute valeur.

MIN() pour récupérer la plus petite valeur.

SUM() pour calculer la somme de plusieurs lignes.

Page 7: NITIATION AUX BASES DE DONNEES YCEE ELLEVUE COURS

C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE

Fabien Hospital 7/7

4. CONSULTATION D’UNE BASE DE DONNEES EN PYTHON

Il est possible d’interroger la base de donnĂ©es en utilisant Python. Pour cela, on utilise le formalisme suivant :

import os # Import des commandes permettant de gĂ©rer les rĂ©pertoires de travail os.chdir(‘C:/Users/Revisions Bdd’) # on se place dans le rĂ©pertoire ou se trouve la base de donnĂ©e import sqlite3 # Import des commandes permettant de manipuler la base de donnĂ©es basesql = u"aeroports.db3" # Base de donnĂ©es initiale cnx = sqlite3.connect(basesql ) curseur = cnx.cursor () requete = "SELECT * FROM airports" curseur .execute(requete)

Le prĂ©fixe u permet d’importer les fichiers encodĂ©s en UTF-8. Dans

une certaine mesure, les caractÚres spéciaux sont alors pris en compte.

Le curseur est un objet contenant le rĂ©sultat de la requĂȘte. Pour visualiser la premiĂšre entitĂ© de la requĂȘte, la syntaxe

est la suivante :

data = curseur.fetchone() print (data)

Attention, Ă  chaque utilisation de fetchone(), l’entitĂ© est supprimĂ©e du curseur. Pour parcourir chacune des entitĂ©s,

on peut utiliser la syntaxe suivante :

for cur in curseur : print (cur)

Attention, cette opĂ©ration peut s’avĂ©rer maladroite si la requĂȘte a un grand nombre d’entitĂ©s.

Donner la requĂȘte SQL qui dĂ©termine le nombre de bases d’hydravion existantes. En utilisant la fonction

d’agrĂ©gation COUNT pour obtenir un rĂ©sultat Ă©quivalent

requete2 =

Donner la requĂȘte SQL ainsi que son expression en algĂšbre relationnelle qui permet de trouver liste des villes

françaises (iso_country=’FR’) hĂ©bergeant de telles bases.

requete3 =