0% ont trouvé ce document utile (0 vote)
3 vues15 pages

Introduction aux requêtes SQL conjonctives

Ce document présente les requêtes SQL conjonctives, en se concentrant sur les requêtes mono-variables et multi-variables. Il explique la structure des requêtes, l'utilisation des variables nuplet et l'importance de la clause DISTINCT pour éliminer les doublons. Des exemples pratiques illustrent comment formuler des requêtes pour extraire des données spécifiques à partir de tables de logements et d'activités.

Transféré par

Niass
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues15 pages

Introduction aux requêtes SQL conjonctives

Ce document présente les requêtes SQL conjonctives, en se concentrant sur les requêtes mono-variables et multi-variables. Il explique la structure des requêtes, l'utilisation des variables nuplet et l'importance de la clause DISTINCT pour éliminer les doublons. Des exemples pratiques illustrent comment formuler des requêtes pour extraire des données spécifiques à partir de tables de logements et d'activités.

Transféré par

Niass
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cours de bases de données,

[Link]

SQL conjonctif

1Philippe Rigaux
SQL, première partie
Cette session présente les requêtes SQL conjonctives, celles qui s’expriment sans
négation ni disjonction.

Dans cette session :

• Forme d’un requête SQL : variables-nuplet, conditions, construction du


nuplet-résultat
• Requête mono-variables
• Requêtes multi-variables

Ces diapositives correspondent au support en ligne disponible


sur le site [Link]

2
Variables nuplet

SQL manipule des nuplets libres de la forme t(a1 , a2 , · · · , an ) Nous les appellerons des
variables nuplet.

La quantification porte sur la variable nuplet t : ∃t et ∀t.

On désigne les attributs en les rattachant à t : t.a1 , t.a2 , etc.

On peut exprimer des comparaisons : [Link] =0 a0 ou [Link] = [Link]

3
Requête mono-variable
Les requêtes les plus simples utilisent une seule variable nuplet. Leur forme logique est :

{t.a1 , t.a2 , · · · , [Link] |T (t) ∧ Fcond (t)}

La forme SQL :
select [distinct] t.a1, t.a2, ..., [Link]
from T as t
where <condition>

C’est un “bloc” avec trois clauses :


• le from définit la variable libre et sa portée
• le where définit la condition sur la variable libre
• le select (avec distinct optionnel) construit le nuplet-
résultat

4
Parlons du distinct
Une relation n’a pas de doublons. Or certaines requêtes peuvent en produire :
select [Link] from Logement as l

type
Auberge
Hôtel
Gîte
Hôtel
Le distinct garantit que les doublons sont éliminés.
select distinct [Link] from Logement as l

Certaines requêtes ne peuvent pas produire de doublon ! À


approfondir.

5
Premier exemple
Code, nom et type des logements en Corse.

select [Link], [Link], [Link]


from Logement as t
where [Link] = ’Corse’

Correspond à la formule

{[Link], [Link], [Link]|Logement(t) ∧ [Link] = ’Corse’}

Forme simplifiée.
select code, nom, type
from Logement
where lieu = ’Corse’

6
Interprétation
La variable peut être affectée à tous les nuplets de la table définie par la portée.
On garde toutes les affectations qui satisfont la condition Fcond .
La seule affectation correcte est surlignée ci-dessous.

code nom capacité type lieu


pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

Trivial ? Oui, et tant mieux, car cette interprétation fonctionne


pour toutes les requêtes.

7
Requête multi-variables
Regardons pour deux variables : la généralisation est facile.

Forme de la requête :
select [distinct] t1.a1, ..., [Link], t2.a1, ..., [Link]
from T1 as t1, T2 as t2
where <condition>

Interprétation
Parmi toutes les affectations possibles des variables, on ne
conserve que celles qui satisfont la condition exprimée par
Fcond .

8
Un exemple détaillé : logements où on peut
pratiquer le ski
Nous avons besoin de deux variables :
• la première s’affecte aux nuplets de Activité ;
• la seconde s’affecte aux nuplets de Logement
• l’attribut codeActivité de la première est Ski.
• les deux variables partagent le même code logement

select [Link], [Link]


from Logement as l, Activité as a
where [Link] = [Link]
and [Link]é = ’Ski’

9
Interprétation : affectation des deux variables
Logement (variable l)
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

Activité (variable a)
codeLogement codeActivité
ca Randonnée
ge Piscine
ge Ski
pi Plongée
pi Voile

10
Deuxième exemple : les paires de logements qui sont
du même type
Nous avons besoin de deux variables,
• chacune ayant pour portée la table Logement
• les deux variables partagent le même attribut type

select distinct [Link] as nom1, [Link] as nom2


from Logement as l1, Logement as l2
where [Link] = [Link]

Soit la formule

{l1 .nom, l2 .nom|Logement(l1 )∧Logement(l2 )∧l1 .type = l2 .type}

11
Interprétation : affectation des deux variables
Logement (variable l1 )
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

Logement (variable l2 )
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

12
Autre affectation possible
Logement (variable l1 )
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

Logement (variable l2 )
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

13
Encore une autre (et trois autres encore possibles)
Logement (variable l1 )
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

Logement (variable l2 )
code nom capacité type lieu
pi U Pinzutu 10 Gîte Corse
ta Tabriz 34 Hôtel Bretagne
ca Causses 45 Auberge Cévennes
ge Génépi 134 Hôtel Alpes

14
À retenir

Quelle que soit sa complexité, l’interprétation d’une requête SQL peut toujours se faire
de la manière suivante.

• Chaque variable du from peut être affectée à tous les nuplets de sa portée.
• Le where définit une condition sur ces variables : seules les affectations satisfaisant
cette condition sont conservées
• Le nuplet résultat est construit à partir de ces affectations

15

Vous aimerez peut-être aussi