TABLE DES MATIÈRES
4
5 L’algèbre relationnelle 53
5.1 Les opérateurs de l’algèbre relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.1.1 La sélection, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1.2 La projection, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1.3 Le produit cartésien, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.1.4 L’union, ...................................... 57
5.1.5 La différence, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.1.6 Jointure, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2 Expression de requêtes avec l’algèbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.1 Sélection généralisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.2 Requêtes conjonctives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.3 Requêtes avec et . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3 Exercices ........................................... 62
6 Le langage SQL 65
6.1 Requêtes simples SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.1.1 Sélections simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.1.2 La clause WHERE ................................... 68
6.1.3 Valeurs nulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2 Requêtes sur plusieurs tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.2.1 Jointures ....................................... 70
6.2.2 Union, intersection et différence . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.3 Requêtes imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.3.1 Conditions portant sur des relations . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.3.2 Sous-requêtes correllées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.4 Agrégration.......................................... 74
6.4.1 Fonctions d’agrégation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.4.2 La clause GROUP BY ................................ 75
6.4.3 La clause HAVING .................................. 76
6.5 Mises-à-jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.5.1 Insertion ....................................... 76
6.5.2 Destruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.5.3 Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.6 Exercices ........................................... 77
7 Schémas relationnels 79
7.1 Schémas............................................ 80
7.1.1 Définition d‘un schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.1.2 Utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.2 Contraintes et assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.3 Vues.............................................. 83
7.3.1 Création et interrogation d’une vue . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.3.2 Mise à jour d’une vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.4 Triggers ............................................ 85
7.4.1 Principes des triggers ................................. 85
7.4.2 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.5 Exercices ........................................... 87
8 Programmation avec SQL 89
8.1 Interfaçage avec le langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.1.1 Un exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.1.2 Développement en C/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.1.3 Autres commandes SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.2 L’interface Java/JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95