===== 3.2.1 Opérateurs mono-table =====
Extraction d'information à partir d'une table unique :
* projection $\pi$ = extraction de colonnes
* sélection $\sigma$ = extraction de lignes
==== Projection : π ===
**Projection**
* Soit $r$ une relation de schéma $R$.
* Soit $S$ un ensemble d'attributs, avec $S$ ⊆ $R$
La **projection** $\pi_S(r)$ est une nouvelle relation de schéma $S$ obtenue à partir des éléments de $r$ restreints au schéma $S$
$$\pi_S(r) = \{t(S)|t \in R\}$$
(avec $t(S)$ la restriction de $t$ au schéma $S$)
**Exemple**
**Catalogue** :
^nom_fournisseur^adresse_fournisseur^composant^ prix^
|Sage|33, College street, London|transistor|4,4|
|MoxCom|77 Ashley square,Mumbay|micro controller|3,7|
|MoxCom|77 Ashley square,Mumbay|radio tuner|7,0|
Requete : //Donner la liste des fournisseurs (avec leur adresse)//:
$$u = \pi_\text{nom_fournisseur, adresse_fournisseur} (\text{Catalogue})$$
$\rightarrow$ **u** :
^nom_fournisseur^adresse_fournisseur^
|Sage|33, College street, London|
|MoxCom|77 Ashley square,Mumbay|
==== Sélection : σ ====
**Condition sur R**
* On considère le schéma $R (A_1, …, A_n)$
* Une condition $F$ sur $R$ :
* est un ensemble de contraintes sur les valeurs des attributs $A_1$, …, $A_n$
* construites à l'aide d'opérateurs booléens classiques :
* ∧(et),
* ∨(ou),
* ¬(non),
* =, ≠, >,<, ≥ ,≤, ...
* et de valeurs numériques ou de texte.
**Exemples** :
$$ F = (A_1 = 3) ∧ (A_1 > A_2) ∧ (A_3 ≠ 4)$$
$$ F = (A_1 = 2) ∨ (A_2 = "Dupont")$$
**Sélection**
* Soit $r$ une relation de schéma $R$
* Soit $F$ une condition sur $R$
La **sélection** $σ_F(r)$ est une nouvelle relation de schéma $R$ , constituée de l'ensemble des enregistrements de $r$ qui satisfont la condition $F$.
$$σ_F(r) = \{ t ∈ r | F( t ) \text{est vrai} \}$$
**Exemple** :
Requête : //Donner la liste des fournisseurs qui vendent des micro-controleurs//
$$u = Π_\text{nom_fournisseur}( σ_\text{Composant = micro controller} ( \text{Fournisseur} ))$$
**u** :
^nom_f^
|Moxcom|
**Exemple**
**Pays** :
^nom_pays^superficie^population ^PIB/hab^
|Algérie|2.300.000|31.300.000|1630$|
|Niger|1.200.000|11.400.000|890$|
|Arabie Saoudite|2.150.000|24.300.000|8110$|
Requête : //Donner la liste des pays dont le PIB/hab est > 1000$//
$$u = Π_\text{nom_pays}( σ_\text{PIB/hab > 1000 } ( \text{Pays} ))$$
**u** :
^nom_pays^
|Algérie|
|Arabie Saoudite|
==== Structure d'une requête SQL====
SELECT A1,A2, …, An // liste d’attributs
FROM R // nom de la table
WHERE F // condition sur les attributs
cette requête est semblable à :
* une sélection algébrique $σ_F$
* suivie par une projection algébrique $Π_{A1, …, An}$
soit :
$$Π_{A1, …, An}( σ_F ( R ))$$
**Exemples :**
* //Qui fournit des transistors ?//
SELECT nom_fournisseur
FROM Fournisseur
WHERE composant = ’transistor’;
* //Liste de toutes les commandes de transistors ://
SELECT *
FROM Commandes
WHERE composant = ’transistor’
* //Qui fournit des micro-controleurs à moins de 5$?//
SELECT nom_fournisseur
FROM Catalogue
WHERE composant = ’micro controller’ AND prix < 5
__Up__ : [[public:STD-3:CM2:Interrogation des bases de données]]
__Next__ : [[public:STD-3:CM2:Interrogation des bases de données:3.2.2 Opérateurs multi-tables]]