===== 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]]