Exemples

ExempleNom et Prénom des acteurs

1
SELECT nom, prenom
2
FROM acteur;

Algèbre :

\(\pi_{nom, prenom}(ACTEUR)\)

Calcul :

\(res=\{x_{nom}, x_{prenom} \mid \exists x_{id}, ACTEUR(x_{id}, x_{nom}, x_{prenom})\}\)

ExempleDirecteur du film numéro 42

Notons que nous utilisons la définition de la table Film telle qu'elle a été donnée au début de cette séquence : idfilm, titre, directeur, annee, titre_vo.

1
SELECT directeur
2
FROM film f
3
WHERE f.idfilm = 42

Algèbre :

\(\pi_{directeur}(\sigma_{idfilm = 42}(FILM))\)

Calcul :

\(res=\{x_{directeur} \mid \exists x_{titre},x_{annee},x_{titre\_vo}, FILM(42, x_{titre}, x_{directeur}, x_{annee}, x_{titre\_vo})\}\)

La clause FROM accepte en paramètre une liste de tables. La requête porte alors sur le produit cartésien de ces tables. Pour effectuer une jointure entre les tables, il convient d'utiliser les opérateurs de jointure du langage. Le mot-clé JOIN placé entre deux tables indique qu'il faut en faire la jointure. La condition de jointure est précisée avec le mot-clé ON. Une jointure naturelle (une jointure sur un attribut clé primaire, et l'autre attribut clé étrangère lié à cette clé primaire) s'exprime avec le mot-clé NATURAL JOIN.

ExempleTitre d'un film avec la liste des identifiants de ses acteurs.

Dans le cas de l'algèbre, on utilise la jointure naturelle, c'est-à-dire que ce sont les attributs ayant le même nom dans les deux tables jointes qui sont choisis, et l'opérateur utilisé est l'égalité.

1
SELECT f.titre AS titre, jd.idacteur AS id
2
FROM film f JOIN jouedans jd ON f.idfilm = jd.idfilm;

Autre possibilité (équivalente) en utilisant le produit cartésien.

1
SELECT f.titre AS titre, jd.idacteur AS id
2
FROM film f , jouedans jd
3
WHERE f.idfilm = jd.idfilm;

Algèbre :

\(\pi_{titre, idacteur}(FILM \bowtie JOUEDANS)\)

ce qui signifie :

\(\pi_{titre, idacteur}(FILM \underset{FILM.idfilm = JOUEDANS.idfilm}{\bowtie} JOUEDANS)\)

Calcul :

\(res=\{titre, idacteur \mid \exists (idfilm, directeur, annee), FILM(idfilm, titre, directeur, annee)\wedge JOUEDANS(idfilm, idacteur)\)

La clause WHERE permet d'exprimer la sélection. SQL supporte des opérateurs de comparaison (<, <=, =, >=, >, <>), logiques (AND, OR), de test de valeur manquante (IS NULL, IS NOT NULL), de recherche textuelle (LIKE), de sélection d'intervalle (BETWEEN), de liste (IN), et d'imbrication de blocs (IN, EXIST, NOT EXIST, ALL, SOME, ANY).

ExempleTitre des films datant d'avant 2000

1
SELECT titre FROM film
2
WHERE annee < 2000;

Algèbre :

\(\pi_{titre}(\sigma_{annee < 2000}(FILM))\)

Calcul :

\(res=\{titre \mid \exists (idfilm, directeur, annee),FILM(idfilm, titre, directeur, annee)\wedge (annee<2000)\}\)

ExempleTitre et directeur des films produits entre 2003 et 2013 dont le titre commence par 'L'

1
SELECT titre, directeur FROM film
2
WHERE annee BETWEEN 2003 AND 2013
3
AND titre LIKE 'L%';

Algèbre :

\(\pi_{titre, directeur}(\sigma_{annee > 2013\>\wedge\>annee < 2000\>\wedge titre\>LIKE\>'L\%'}(FILM))\)

Calcul :

\(res=\{titre, directeur \mid \exists (idfilm, annee),FILM(idfilm, titre, directeur, annee)\wedge (annee>2000)\wedge (annee<2013)\}\)