Un support de cours magistraux de Bases de données

SQL

Pierre Crescenzo



retour au sommaire


  1. Introduction

    De nombreux langages informatiques sont associés aux systèmes de gestion de bases de données. SQL est le plus répandu d'entre eux.

    SQL signifie Structured Query Language (langage de requête structuré).

    SQL fait l'objet de plusieurs normalisations internationales, la première datant de 1986, et est encore en cours d'évolution actuellement.

    Les implémentations de SQL se conforment généralement à l'algèbre relationnelle (cf. chapitre 5 Modèle relationnel : algèbre) mais il n'est pas rare qu'elles s'en écartent sur plusieurs points. Par exemple, certaines admettent des occurrences identiques au sein d'une relation, ce qui est impossible dans le modèle relationnel.

    SQL permet :

    1. de réaliser les opérations de l'algèbre relationnelle,
    2. de créer, modifier et supprimer des occurrences dans une relation et
    3. de créer, modifier et supprimer des relations dans une base.
  2. Relations utiles

    Sauf mention contraire, les relations ci-dessous sont utilisées dans tous les exemples et exercices de ce chapitre.

    numéroÉtudiant nom adresse
    12 Dupont Lyon
    23 Durand Lyon
    34 Martin Saint-Étienne
    78 Paul
    89 Simpson Villeurbanne
    123 Durand Villeurbanne
    Étudiant

    numéroEnseignant nom grade salaire
    12 Dupont Assistant 700
    45 Simon Assistant 1000
    56 Didier Maître de Conférences 980
    67 Gray Maître de Conférences 1020
    90 Collot Maître de Conférences 1200
    Enseignant

    numéroModule titre responsable
    10 Mathématiques 56
    20 Physique 56
    30 Français 12
    40 Anglais 67
    Module

    numéro numéroModule
    12 10
    12 30
    12 40
    23 10
    34 40
    78 10
    78 30
    78 40
    89 30
    123 10
    123 30
    123 40
    Inscription

    numéro numéroModule
    12 30
    23 10
    34 40
    78 40
    89 30
    123 30
    123 40
    Diplôme

    numéro numéroModule
    12 30
    45 10
    45 20
    Enseignement
  3. Projection

    • La projection s'exprime en SQL au moyen de la clause select.
    • Syntaxe : select listeAttributs from relation
    • Par exemple, πnom,adresseÉtudiant se traduit en select nom,adresse from Étudiant
    • La relation sur laquelle porte la projection n'est pas modifiée : le résultat est une nouvelle relation.
    • Attention : Les implémentations de SQL ne suppriment généralement pas les doublons !
    • Attention : Malgré son nom, select réalise une projection et pas une sélection !
  4. Sélection

    • La sélection s'exprime en SQL au moyen de la clause where.
    • Syntaxe : select * from relation where condition
    • Par exemple, σnom="Dupont"Étudiant se traduit en select * from Étudiant where nom="Dupont"
    • La relation sur laquelle porte la sélection n'est pas modifiée : le résultat est une nouvelle relation.
    • Attention : C'est where qui réalise la sélection, et non select !
  5. Composition d'une projection et d'une sélection

    • La projection et la sélection peuvent être composées, c'est-à-dire qu'il est possible de réaliser les deux en même temps. Cette composition est très couramment utilisée en SQL.
    • Syntaxe : select listeAttributs from relation where condition
    • Par exemple, πnom,adresseσnom="Dupont"Étudiant se traduit en select nom,adresse from Étudiant where nom="Dupont"
    • La relation sur laquelle porte la composition de projection et de sélection n'est pas modifiée : le résultat est une nouvelle relation.
    • Dans les faits, les implémentations de SQL réalisent généralement la sélection juste avant la projection.
  6. Exercices de composition d'une projection et d'une sélection

    Comment, en SQL, exprimeriez-vous les questions suivantes ?

    1. Quel est le nom des enseignants qui gagnent plus de 1000 euros ?
    2. Quelle est l'adresse des étudiants dont le numéro est supérieur à 50 ?
    3. Quels sont le numéro et le titre des modules dont le responsable porte le numéro 18 ?
    4. Quel est le salaire de l'enseignant numéro 69 ?
  7. Quelques éléments de SQL

    Avant d'aller plus loin, il est maintenant utile de découvrir quelques éléments du langage SQL.

    Remplacement Syntaxe SQL Exemple Commentaire
    de tous les attributs dans une relation * select *
    du vide dans un attribut null where nom is null La notion de vide diffère de celle de zéro pour les nombres et de chaîne de caractères vide pour les chaînes de caractères : elle représente une absence de valeur ou une valeur inconnue.
    d'un caractère dans une chaîne de caractères _ where nom like "t_t_" _ remplace un caractère quelconque et un seul dans une chaîne de caractères.
    d'un ensemble de caractères dans une chaîne de caractères % where nom like "t%o" % remplace zéro, un ou plusieurs caractères quelconques dans une chaîne de caractères.

    Opération Opérateur SQL Exemple Commentaire
    est égal à = where âge=25
    est différent de != ou <> where nombreEnfants!=0 Selon les implémentations de SQL, les veux versions sont acceptées ou seulement une.
    est strictement supérieur à > where âge>18
    est strictement inférieur à < where numéro<1024
    est supérieur ou égal à >= where âge>=10
    est inférieur ou égal à <= where salaire<=1000
    est compris entre … et … betweenand where numéro between 12 and 20 Les bornes de l'intervalle sont généralement incluses.
    est conforme à like where nom like "D%" like permet de vérifier qu'une chaîne de caractères est conforme à un modèle contenant _ et/ou %.
    n'est pas conforme à not like where nom not like "l%e" not like est l'inverse de like.
    est vide is null where salaire is null is null teste l'absence de valeur qui peut être assimilée à une valeur inconnue.
    n'est pas vide is not null where nom is not null is not null est l'inverse de is null.
    et and where âge>25 and âge!=20 Le and de SQL a généralement le comportement suivant : si le premier opérande permet de déterminer la réponse, le second n'est pas évalué.
    ou or where nombreEnfants>2 or salaire<500 Le or de SQL a généralement le comportement suivant : si le premier opérande permet de déterminer la réponse, le second n'est pas évalué.
    non not where not salaire>=500
    grouper () where not (nombreEnfants>2 or salaire<500) () permet de modifier l'ordre des opérations.
  8. Résultats des opérations logiques

    En raison de la possibilité d'avoir une valeur null, les opérations logiques de SQL voient leur expressivité étendue.

    Rappel : la table de vérité du ∧ est :

    vrai faux
    vrai vrai faux
    faux faux faux

    La table de vérité étendue du and de SQL est :

    and true false null
    true true false null
    false false false false
    null null false null

    Le principe est simple : si la valeur du résultat ne peut pas être connue grâce à au moins un des deux opérandes, alors le résultat est null.

    Rappel : la table de vérité du ∨ est :

    vrai faux
    vrai vrai vrai
    faux vrai faux

    La table de vérité étendue du or de SQL est :

    or true false null
    true true true true
    false true false null
    null true null null

    Le principe est identique.

    Rappel : la table de vérité du ¬ est :

    ¬ vrai faux
    ¬ faux vrai

    La table de vérité étendue du not de SQL est :

    not true false
    not false true
    not null null

    Le principe est similaire : si la valeur du résultat ne peut pas être connue grâce à l'opérande, alors le résultat est null.



retour au sommaire

XHTML 1.1 validé ! CSS 2 validé ! GNU's Not Unix Debian GNU/Linux Optimisé pour tout navigateur ! Contre les brevets logiciels !

URI : http://www.crescenzo.nom.fr/CMBasesDeDonnees/006-SQL.html conforme à XHTML 1.1 et à CSS 2.1
Création : 2004/09/03
Dernière modification : 2009/04/24
Hébergement : Anima
Contact et maintenance : Pierre@crescenzo.nom.fr