Sélection de colonnes (la projection) C’est une opération qui permet de sélectionner un ensemble de colonnes d’une relation. Le résultat d’une projection est une relation ayant autant de lignes que la relation initiale Le formalisme d’une projection : R=Projection (R1, liste des attributs) Représentation graphique : Liste des attributs
Sélection de colonnes (la projection) : Traduction en langage SQL La commande SELECT la plus simple a la syntaxe suivante : SELECT * FROM nom_table ; Dans laquelle : nom_table est le nom de la table sur laquelle porte la sélection. * signifie que toutes les colonnes de la table sont sélectionnées. On peut limiter la sélection à certaines colonnes, en indiquant une liste de noms de colonnes à la place de l'astérisque. SELECT nom_col1, nom_col2, ...FROM nom_table ; Exemple : SELECT nom_acteur,age_acteur FROM acteur; La clause DISTINCT ajoutée derrière la commande SELECT permet d'éliminer les duplications.
Sélection de lignes (restriction) C’est une relation qui sélectionne un ensemble de lignes (n-uplets) d’une relation, en fonction d’un critère de sélection Le résultat d’une restriction est une relation de même schéma que la relation initiale Le formalisme d’une restriction est le suivant : R = SELECTION (R1, condition) Représentation graphique
Sélection de lignes (restriction) Traduction en langage SQL : la clause Where La clause WHERE permet de spécifier quelles sont les lignes à sélectionner. Elle est suivie d'un prédicat qui sera évalué pour chaque ligne de la table. Les lignes pour lesquelles le prédicat est vrai seront sélectionnées. SELECT * FROM nom_table WHERE predicat ; Exemple : SELECT nom_acteur, salaire FROM acteur WHERE salaire>250000;
Quelques précisions sur les prédicats Un prédicat n'est ni plus ni moins que la façon dont on exprime une propriété. Les prédicats, qu'ils soient simples ou composés, sont constitués à partir d'expressions que l'on compare entre elles. Expression simple Une expression simple peut être : une variable désignée par un nom de colonne, une constante. Les expressions peuvent être de trois types : numérique, chaîne de caractères ou date. A chacun de ces types correspond un format de constante : Constante numérique Ex : -10, 2.5, 1.2 E-10 Constante chaîne de caractères : Ex :'MARTIN' Constante date : Ex : '01-FEB-85‘
Conditions de sélection après la clause ‘Where’ La condition de sélection exprimée derrière la clause WHERE peut être spécifiée à l'aide : des opérateurs de comparaison : =, >, <, <=, >=, <> des opérateurs logiques : AND, OR, NOT des opérateurs : IN, BETWEEN, LIKE, IS
Exemples SELECT * FROM ETUDIANT WHERE Age IN (19, 20, 21, 22, 23) ; WHERE Age BETWEEN 19 AND 23 ; WHERE CodePostal LIKE '42%' ; SELECT * FROM ETUDIANT WHERE CodePostal LIKE '42___' ; WHERE Ville IS NULL ; WHERE Ville IS NOT NULL ;
Opération JOINTURE Cet opérateur porte sur 2 relations qui doivent avoir au moins un attribut défini dans le même domaine (ensemble des valeurs permises pour un attribut). La condition de jointure peut porter sur l'égalité d'un ou de plusieurs attributs définis dans le même domaine (mais n'ayant pas forcément le même nom). Les n-uplets de la relation résultat sont formés par la concaténation des n-uplets des relations d'origine qui vérifient la condition de jointure. Formalisme : R = JOINTURE (R1, R2, condition d'égalité entre attributs) Représentation graphique
Opération JOINTURE Traduction en langage SQL En SQL, il est possible d'enchaîner plusieurs jointures dans la même instruction SELECT. En SQL de base : SELECT * FROM table1, table2, table3, ... WHERE table1.attribut1=table2.attribut1 AND table2.attribut2=table3.attribut2 AND Exemple : SELECT * FROM Produit, Détail_Commande WHERE Produit.CodePrd=Détail_Commande.CodePrd ;
Opérateurs ensemblistes Les opérateurs ensemblistes correspondent aux opérateurs habituels de la théorie des ensembles, définis sur des tables de mêmes schémas considérées comme des ensembles de tuples Union Intersection Différence
Union Cet opérateur porte sur deux relations qui doivent avoir le même nombre d'attributs définis dans le même domaine (ensemble des valeurs permises pour un attribut). On parle de relations ayant le même schéma. La relation résultat possède les attributs des relations d'origine et les n-uplets de chacune, avec élimination des doublons éventuels. R1 = UNION (E1, E2)
Union Traduction en langage SQL SELECT liste d'attributs FROM table1 UNION SELECT liste d'attributs FROM table 2 ; Exemple : On désire connaître les enseignants élus au CA ou syndiqués SELECT n°enseignant, NomEnseignant FROM E1 SELECT n°enseignant, NomEnseignant FROM E2 ;
Intersection Cet opérateur porte sur deux relations de même schéma. La relation résultat possède les attributs des relations d'origine et les n-uplets communs à chacune. Le formalisme : R2 = INTERSECTION (E1, E2)
Intersection Traduction en langage SQL Exemple : On désire connaître les enseignants du CA qui sont des représentants syndicaux SELECT n°enseignant, NomEnseignant FROM E1 WHERE n°enseignant IN (SELECT n°enseignant FROM E2) ; Ou INTERSECT SELECT n°enseignant, NomEnseignant FROM E2 ;