Vous êtes sur la page 1sur 93

C.

Prins – NF14 – Bases de Données – P2019 – Slide #1

NF14
Partie "Bases de données"
Professeur Christian PRINS
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #2

Contenu
Introduction aux bases de données relationnelles

 Généralités sur les bases de données


 Modèle conceptuel des données (MCD)
 Modèle logique des données (MLD)
o Conversion du MCD en MLD
o Normalisation
o Opérateurs relationnels
 Le langage SQL
 TP sur le SGBD Access :
o Conception d'une base de données Access
o Manipulations de données
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #3

Chapitre 1
Généralités sur les bases de données
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #4

1. Notion de base de données 1/2


Application informatique traditionnelle :
 Ensemble plus ou moins cohérent :
o de données (fichiers)
o de traitements (programmes)
 Forte dépendance données-traitements :
o chaque programme n'utilise que certains fichiers
o certains fichiers sont propres à certains programmes
o maintenance complexe (modifications en cascade)
 Tendance à la spécialisation par service :
o chaque service ajoute ses fichiers ou fait des copies
o redondance des données, mises à jour complexes.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #5

1. Notion de base de données 2/2


Base de données (data base) :
 Ensemble structuré de données partagées, pour les
besoins de tous les utilisateurs d'une organisation.
 Stockage des données indépendant des traitements.
 En pratique, ensemble de fichiers liés entre eux.

Principaux avantages :
 Indépendance données-traitements : modifications plus
faciles des données et des traitements.
 Pas de redondance : gain de place, mise à jour facilitée.
 Gère un grand nombre de données et d'utilisateurs.
 Tests de cohérence interne, reprises après incidents.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #6

2. Système basé sur une BD 1/4


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #7

2. Système basé sur une BD 2/4


La BD proprement dite :
 stocke les données du système d'informations
 ensemble de fichiers liés entre eux
 structure physique exacte souvent cachée.

Le système de gestion de base de donnée (SGBD) :


 en anglais : data base management system (DBMS)
 c'est le logiciel qu'on vous vend pour faire des BD
 moteur logiciel, indépendant des applications
 gère l'organisation, l'accès et le contrôle des données
 exemple : Access, Oracle.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #8

2. Système basé sur une BD 3/4


Dictionnaire des données (data dictionnary)
 décrit les types de données stockées, leur organisation
 implémente le modèle logique des données
 peut avoir un langage de définition de données (LDD).

Interface :
 utilise un langage de manipulation de données (LMD)
 appelé aussi langage de requête (comme SQL)
 reçoit et analyse les requêtes (queries) des utilisateurs
 les traduit en ordres pour le SGBD
 récupère les résultats et les envoie aux utilisateurs.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #9

2. Système basé sur une BD 4/4


Module d'administration :
 nécessaire pour modifier le dictionnaire de données
 définit les droits des utilisateurs
 outils divers (sauvegarde, reprise, statistiques)

Si système mono-utilisateur :
 l'ensemble est installé sur le PC de l'utilisateur

Si système multi-utilisateur (client-serveur) :


 l'ensemble est installé sur un serveur
 les clients accèdent à distance (réseau local, Internet)
 via un module d'interface local, appelé client.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #10

3. Développement en 4 étapes 1/2


Analyse fonctionnelle (sort du cadre de NF14) :
 analyse l'existant, les besoins etc.
 recense les informations, les réservoirs de données
 les flux, les traitements (processus)
 exemple d'outil : diagramme de flux de données (DFD)

Modèle conceptuel des données (MCD) :


 recense et structure les données à stocker
 description synthétique et claire, mais abstraite
 facilite la conception de la BD
 mais indépendant de l'outil informatique.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #11

3. Développement en 4 étapes 2/2


Modèle logique des données (MLD) :
 traduction du MCD en termes informatiques
 les données sont donc décrites en termes intelligibles
par l'ordinateur (types, enregistrements, fichiers)
 mais on reste indépendant du SGBD qui sera choisi.

Modèle physique (ou implémentation) :


 traduction du MLD pour un SGBD particulier
 création du dictionnaire de données et des fichiers de
la base, selon la syntaxe du SGBD
 réalisation des applications, des formulaires de saisie,
des états d'impression.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #12

4. Fichier séquentiel-indexé 1/2


C'est la forme la plus simple de base de données:
Clé Pointeurs N° Médicament Molécule Dosage
Anadvil 1  1 Anadvil Ibuprofène 200 mg
Brufène 2  2 Brufène Ibuprofène 400 mg
… … … … … …
Zyrtec 47  47 Zyrtec Loratadine 5 mg
Fichier-index Fichier classique F: enregistrements

Fichier classique F :
 enregistrements de taille fixe, découpés en champs
 permet l’accès séquentiel aux enregistrements (lent)
 plus l’accès direct à un enregistrement de n° donné
 mais pas à un médicament de nom donné!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #13

4. Fichier séquentiel-indexé 2/2


Fichier-index : pour un champ C choisi dans F, il donne
pour chaque valeur X de C la liste L(X) des n°
d'enregistrements de F tels que C = X. On dit qu'on
inverse F sur C. C est un identifiant ou clé si sa valeur est
distincte pour chaque enregistrement : |L(X)| = 1.

Accès au Brufène si F inversé sur le nom de médicament:


 recherche séquentielle de "Brufène" dans l'index
 rapide car le fichier-index est petit par rapport à F
 puis accès direct à l'enregistrement n° 2 de F.

On peut créer des index secondaires, pour accéder à F


avec d'autres champs, identifiants ou non.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #14

5. Base de données hiérarchique 1/2


Structure arborescente (en arbre) :
 Chaque élément a un seul prédécesseur (père)
 Mais peut avoir plusieurs successeurs (fils).

Base de données de mines de métaux utiles :

Mine d'Arlit Niger Uranco


Uranium 1800 tonnes 14$/kg
Thorium 2000 tonnes 11$/kg
Zirconium 1100 tonnes 28$/kg
Mine d'Oklo Gabon Areva
Uranium 2400 tonnes 15$/kg
Cuivre 7800 tonnes 2$/kg
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #15

5. Base de données hiérarchique 2/2


Exercice : détailler la structure en arbre pour l'exemple.

Principe assez simple mais les traitements possibles sont


fortement influencés par la structure hiérarchique.
Accès rapide aux données d'une mine mais calcul lent de
la production totale :
 il faut consulter chaque mine et tous ses métaux
 on ne peut donc pas faire abstraction du niveau mines!
 performances médiocres si mauvaise conception.

Commun dans les années 70, ce type de SGBD est


aujourd'hui dépassé. Mais il reste des BD en service!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #16

5. Base de données réseau 1/2


Structure plus générale et flexible, de type graphe :

Produits proposés
Fournisseurs Produits
Fournisseurs possibles

Liste des Commandes


commandes concernées
Fournisseurs Produits
concernés concernés
Commandes
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #17

5. Base de données réseau 2/2


Principes :
 plusieurs successeurs et prédécesseurs par élément
 liaisons complexes avec des "pointeurs" (des index)
 forte dépendance structure - traitements
 le programmeur doit naviguer dans la structure pour
réaliser un traitement donné.

Des BD de ce type sont encore en service mais elles sont


supplantées progressivement par les SGBD relationnels.

Beaucoup de bases de données documentaires existantes


sont de type réseau.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #18

5. BD relationnelle 1/5
Type de BD récent, inventé par Codd (1970) :
 toutes les données sont organisées en tables :
 un élément de table est une donnée élémentaire
 lignes appelées n-uplets ou tuples ( enregistrements)
 colonnes appelées attributs ( champs)
 pas de lignes identiques
 ordre indifférent des lignes et des colonnes

Relations entre tables :


 basées sur des attributs communs
 pas de liens explicites (pointeurs) visibles
 matérialisées parfois sous forme de tables.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #19

5. BD relationnelle 2/5
Langage de manipulation de données de haut niveau :
 non-procédural (on ne décrit pas comment faire)
 opérations ensemblistes : table := F(table_1,table_2)
 travaille sur des tables complètes (union, intersection)

Notion de clé primaire (identifiant) :


 les lignes d'une table doivent être distinctes
 par souci d'efficacité, on définit un sous-ensemble
d'attributs suffisant (clé) pour distinguer chaque ligne.
 au mieux, la clé a un attribut (n° de sécurité sociale)
 on a toujours une clé possible : tous les attributs!
 on peut définir plusieurs clés (clés secondaires).
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #20

5. BD relationnelle 3/5
Règles d'intégrité vérifiées par le SGBD relationnel :
 intégrité d'entité : clés remplies et distinctes
 intégrité référentielle (concernant les relations).

BD pour le SCD avec une table des inscrits et une table


des emprunts : un emprunt ne peut pas être enregistré si
l'étudiant n'est pas créé dans la table des inscrits.

Attention!
 en anglais, une table de BD est aussi appelée relation
et une relation relationship : ambigu en français!
 certains disent en français "relation" et "association"
 nous dirons "table" et "relation" (terminologie Access).
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #21

5. BD relationnelle 4/5
Exemple du SCD : 2 tables et 1 relation de souscription

Table des membres – Clé : n° de membre


N° membre Nom Adresse Date inscription Type
095 Société X … … 2
124 Dupont … … 1

Table des types d'abonnement – Clé : n° de type


Type Libellé Durée Cotisation
1 Abonnement étudiant 12 mois 10 euros
2 Abonnement entreprise 12 mois 500 euros

La relation "souscrire" est réalisée simplement, avec


l'attribut commun "type" (pas de pointeurs).
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #22

5. BD relationnelle 5/5
Pourquoi les tables sont-elles appelées parfois relations?
Rappel de maths. Soient 2 ensembles A et B :
 produit cartésien AB : couples (i,j) avec iA et jB.
 relation binaire : un sous-ensemble de AB.
 Plus généralement, si n ensembles, relation n-aire dont
les éléments sont appelés n-uplets ou tuples.

Table de personnes avec attributs Nom, Prénom, Age :


 A, B, C ensembles de valeurs possibles
 les lignes sont donc des tuples de AxBxC
 la table est un sous-ensemble des triplets possibles,
c'est donc une relation n-aire (ici ternaire).
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #23

6. Exemples de SGBD relationnels


ORACLE (Oracle Corporation)
MySQL (gratuit, maintenu par Oracle)
SQL Server et Access (Microsoft)
PostgreSQL (domaine public)
DB2 (IBM)
TERADATA (détaché de NCR)
Les tableurs (Excel) ne sont pas de vrais SGBD :
 La feuille de calcul doit tenir en mémoire (taille limitée)
 On peut lier plusieurs feuilles mais de manière limitée
et peu efficace (pas de relations complexes)
 Très peu d'opérateurs ensemblistes
 Accès simultanés non gérés ou en "tout ou rien".
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #24

Chapitre 2
Modèle conceptuel des données
(MCD)
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #25

1. Introduction
MCD : modèle d'un ensemble de données et de sa
structure, en vue de la réalisation d'une BD. Outil de
conception indépendant de l'ordinateur et du SGBD.

Faire un MCD est indispensable pour éviter des erreurs


de conception graves et accélérer le développement.

Cependant, le MCD dépend du type de BD envisagé :


 BD réseau : diagrammes de Bachmann.
 BD relationnelles : modèle entité-relation ou E-R.

90% des bases de données créées actuellement sont


relationnelles : nous verrons seulement le modèle E-R.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #26

2. Modèle E-R 1/11


Introduit par Chen (1976). Trois concepts : attributs,
entités et relations. Ces deux derniers sont des symboles
graphiques dans lesquels on place les attributs.

Attribut :
 information ou propriété intéressante à mémoriser
 identifié par un nom unique, exemple "Nom"
 conseil : préfixer/suffixer par le nom d'entité pour
éviter les confusions : "Nom_membre", "Nom_produit"
 on peut préciser un type, un domaine (ensemble de
valeurs), une longueur, mais c'est le rôle du MLD.
 on peut ajouter des descriptions en marge du MCD :
"Le n° du membre figure sur sa carte de membre".
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #27

2. Modèle E-R 2/11


Entité :
 symbolise un ensemble de personnes ou de choses
(concrètes ou abstraites), ayant les mêmes attributs.
 une entité a une existence propre, indépendante.
 nom unique, au pluriel, jamais un verbe.
 au moins un attribut
 un identifiant, souligné : attribut ou groupe d'attributs
 Access accepte des espaces dans les noms.

NOM D'ENTITE MEMBRES


Attribut 1 NumeroMembre
Attribut 2 NomMembre
Attribut 3 AdresseMembre
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #28

2. Modèle E-R 3/11


Relation (ou association) :
 les entités recensent les données à gérer mais ne
suffisent pas pour avoir un modèle complet : chaque
entité a des liens (relations) avec les autres.
 pas d'existence propre : une relation existe grâce aux
entités qu'elle relie.

Trois caractéristiques dans le MCD :


 nom unique, souvent un verbe à l'infinitif
 attributs optionnels, mais devant concerner la relation!
 connexions aux entités, avec des cardinalités.

Le nombre d'entités reliées est le degré de la relation.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #29

2. Modèle E-R 4/11


NOM RELATION
min,max Attribut 1 min,max
Attribut 2
Attribut 3

Cardinalité minimale (pour chaque entité reliée) :


 0 si l'entité reliée peut exister sans la relation
 1 si l'existence de l'entité implique celle de la relation

Cardinalité maximale (pour chaque entité reliée) :


 1 si une entité ne peut être en relation plus d'une fois
 N si une entité peut être en relation plus d'une fois.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #30

2. Modèle E-R 5/11


Exemple de relation de degré 2 et sans attributs

ACTEURS JOUER FILMS


NomActeur 1,N 0,N NumeroFilm
PrenomActeur TitreFilm
PaysActeur GenreFilm

Notes :
 un acteur joue au moins dans un film (ça se discute!)
 il peut jouer dans plusieurs films
 un film peut n'être joué par personne (documentaire)
 un film peut être joué par plusieurs acteurs
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #31

2. Modèle E-R 6/11


Remarques :
 La relation a un identifiant implicite, parfois écrit dans
la bulle : les identifiants des entités reliées.
 La relation pourrait avoir des attributs (rôle joué).
 Exemple de note possible annexée au MCD : "Le n° de
film est un n° séquentiel attribué à chaque film acheté,
il est collé sur le DVD sous forme de code-barre".
 Erreur commune : mettre des n° de films dans l'entité
Acteurs ou des noms d'acteurs dans l'entité Films : une
entité ne doit pas contenir d'attributs d'autres entités,
les liens se font par les relations.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #32

2. Modèle E-R 7/11


Relation récursive de degré 2, avec attribut :

ETUDIANTS 0,1 FORMER BINÔME


Numero HeuresEnCommun
Nom
Prenom 0,1

Notes :
 La même entité participe deux fois à la relation.
 La relation est symétrique (pas d’ordre).
 Si les membres des binômes ont des rôles différents, il
faut peut-être 2 entités : pilotes et copilotes d'avions.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #33

2. Modèle E-R 8/11


Cas de relations répétées dans le temps.
Astuce : considérer la date comme une entité.

ETUDIANTS EMPRUNTS LIVRES


Numéro étudiant Date retour Numéro livre
Nom 0,N 0,N Titre
Dommages constatés
Prénom Auteurs
Editeur
DATE 0,N Année

JJMMAA
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #34

2. Modèle E-R 9/11

Contraintes d'intégrité :
 ensemble de contraintes ou de règles que le MCD doit
respecter pour refléter correctement la réalité
 nature très diverse
 pas de symboles graphiques consacrés
 à écrire en annexe du modèle.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #35

2. Modèle E-R 10/11


Contraintes d'intégrité sur une seule entité ou relation :

 bon identifiant ou "unicité de clé" : tout étudiant doit


avoir un n° distinct.
 domaine de valeurs : discret/continu, valeur min-max.
 attribut obligatoire (nom) ou facultatif (téléphone).
 valeur fonction d'autres attributs : date de retour d'un
film supérieure ou égale à la date d'emprunt.

La 1ère contrainte est implicite si le MCD est correct.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #36

2. Modèle E-R 11/11


Contraintes sur plusieurs entités ou relations. Exemples :
 existence, cardinalités (intégrité référentielle): un
acteur ne peut pas exister si on n'a pas de film le
concernant. Contraintes sont implicites si MCD correct.
 exclusions : un étudiant inscrit aux UV TN09 ou TN10
ne peut pas s'inscrire à d'autres UV.
 cardinal limité (le modèle E-R ne gère que 1 et N):
un étudiant ne doit pas s'inscrire à plus de 7 UV.
A la fin, validez MCD et contraintes avec les utilisateurs!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #37

Chapitre 3
Modèle logique des données
(MLD)
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #38

1. Introduction
Le MLD est une étape vers la réalisation informatique,
mais il est encore indépendant du SGBD. Pour une BD
relationnelle, le MLD est appelé modèle relationnel :
 il traduit les entités et relations en tables,
 définit les attributs de chaque table,
 les enregistrements logiques (lignes de table),
 et les clés (correspondant aux identifiants du MCD).
 mais il reste en français : pas de STRUC ou RECORD!

Pourquoi ne pas faire directement le MLD, sans MCD?


 les relations sont moins visibles dans le MLD
 donc, risque d'erreurs de conception.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #39

2. Conversion MCD-MLD 1/12


Transformation des entités :
 chaque entité devient une table
 les attributs deviennent les colonnes de la table
 l'identifiant devient la clé primaire (soulignée)
 la plupart des gens ne mettent pas les types d'attributs

Trois notations équivalentes :


 boîte rectangulaire comme dans le MCD :
ETUDIANTS
N° étudiant
Nom
Adresse
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #40

2. Conversion MCD-MLD 2/12


Notations équivalentes (suite) :
 tableau sur une ligne :
ETUDIANTS N° étudiant Nom Adresse

 ou entièrement en mode-texte :
ETUDIANTS (N° étudiant, Nom, Adresse)

Attention! La transformation est provisoire, les relations


peuvent ajouter des attributs.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #41

2. Conversion MCD-MLD 3/12


Transformation des relations : 5 cas.
Les entités doivent être déjà transformées en tables.

CAS 1. Degré 2, cardinalités maximales = 1 :


 Copier la clé primaire d'une table au choix dans l'autre,
où elle devient une clé étrangère (en italique).
 Les attributs de la relation sont copiés sous forme de
colonnes dans la table qui a reçu la clé étrangère.

Cas rare! Exemple : une entité "maisons à louer" ayant


parfois une photo. On gagne de la place si on crée une
entité "photos" pour éviter un attribut souvent vide.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #42

2. Conversion MCD-MLD 4/12


CAS 2. Degré 2, card. max = 1 d'un côté, N de l'autre :
 Copier la clé primaire de la table côté N dans l'autre.
 Les attributs de la relation sont copiés sous forme de
colonnes dans la table qui a reçu la clé étrangère.
 Comme le cas 1, mais table de destination imposée!

Exemple du SCD (tables vues slide 22) – MCD :

MEMBRES ABONNEMENTS
SOUSCRIRE
Type
N° membre 1,1 Date souscription 0,N Libellé
Nom
Durée
Adresse
Cotisation
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #43

2. Conversion MCD-MLD 5/12


MLD (on peut garder une trace du nom de la relation) :

MEMBRES
ABONNEMENTS
N° membre Type
Nom Libellé
souscrire
Adresse Durée
Type Cotisation
Date souscription

MEMBRES (N° membre, Nom, Adresse, Type, Date souscription)


ABONNEMENTS (Type, Libellé, Durée, Cotisation)

On peut définir directement ces 2 tables avec Access. Il


est alors conseillé de donner le même nom à l’attribut
commun : Access va établir automatiquement la liaison !
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #44

2. Conversion MCD-MLD 6/12


BD réseau : il faudrait pour chaque type d'abonnement
une liste de pointeurs vers les membres correspondants!

Dans une BD relationnelle :


 un attribut doit contenir une seule information
 on ne peut donc pas mettre de listes sur une ligne
 relation traduite par attribut commun, sans pointeurs
 le SGBD peut consulter l'abonnement d'un membre en
utilisant la clé étrangère "type d'abonnement"
 des opérateurs (vus plus loin) permettent d'extraire les
membres ayant un abonnement donné, etc.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #45

2. Conversion MCD-MLD 7/12


CAS 3. Degré 2, cardinalités maximales = N des 2 côtés :

 La relation est transformée en une nouvelle table dont


la clé primaire est formée des clés primaires des deux
tables associées.
 Les attributs de la relation deviennent les colonnes de
la nouvelle table.
 On remplace souvent le verbe par un nom.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #46

2. Conversion MCD-MLD 8/12


Exemple des acteurs et des films (slide 31) :

ACTEURS JOUER FILMS


Nom acteur 1,N 0,N Numéro film
Prénom acteur Titre film
Pays acteur Genre film

ACTEURS DISTRIBUTION FILMS


Nom acteur Numéro film
Nom acteur
Prénom acteur Titre film
Numéro film
Pays acteur Genre film

Donnez la description équivalente en mode-texte.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #47

2. Conversion MCD-MLD 9/12


CAS 4 (rare). Degré > 2, card. max = N sauf une = 1 :

 La relation donne une nouvelle table. La clé primaire


est formée des clés primaires des tables correspondant
aux entités avec les cardinalités = N.
 La clé primaire de la table de cardinalité 1 devient une
clé étrangère dans la nouvelle table.
 Les attributs de la relation deviennent les colonnes de
la nouvelle table.
 On remplace souvent le verbe par un nom.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #48

2. Conversion MCD-MLD 10/12


CAS 5. Degré > 2, cardinalités maximales = N :

 La relation donne une nouvelle table. La clé primaire


est formée des clés primaires des tables correspondant
aux entités des tables associées.
 Les attributs de la relation deviennent les colonnes de
la nouvelle table.
 On remplace souvent le verbe par un nom.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #49

2. Conversion MCD-MLD 11/12

Exemple. Emprunts au SCD (slide 34) :

ETUDIANTS EMPRUNTS LIVRES


Numéro étudiant Numéro étudiant Numéro livre
Nom Numéro livre Titre
Prénom Date emprunt Auteurs
Date retour Editeur
DATE Dommages Année

JJMMAA
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #50

2. Conversion MCD-MLD 12/12


Remarques :

 La date JJMMAA devient une clé étrangère de nom


différent (Date emprunt) dans la table des emprunts.
 Possible, car pendant la définition des tables, le SGBD
permet de dire si un attribut est une clé étrangère.
 Si oui, on doit dire à quel attribut de quelle table cette
clé correspond.
 Les deux attributs doivent avoir évidemment les
mêmes significations et les mêmes domaines!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #51

3. Optimisation
Une table à une seule colonne comme Date (slide 49)
peut être abandonnée sans perte d'information : elle est
reprise dans la table EMPRUNTS.

Autre exemple slide 46 : si ACTEURS avait le nom


comme seul attribut, on pourrait supprimer cette table.

Malgré leur abandon dans le MLD, la description de ces


entités dans le MCD est utile : dans les deux exemples,
elle permet d'identifier correctement les clés primaires
des tables EMPRUNTS et DISTRIBUTION.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #52

4. Normalisation 1/5
Pour être exploitable par un SGBD relationnel, les tables
du MLD doivent êtres « normalisées ».

Le processus de normalisation est progressif. C'est un


ensemble de règles de construction de tableaux (1NF,
2NF, 3NF) qui élimine les redondances et évite certains
problèmes de mise à jour.

Si quelqu’un crée des tables n’importe comment à partir


de rien, elles ne sont probablement pas normalisées.

Si le MLD vient d'un MCD correct, la normalisation est


souvent une simple vérification.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #53

4. Normalisation 2/5
Table en première forme normale (1NF):
 table à 2 dimensions munie d'une clé primaire
 les lignes sont donc distinctes
 les lignes et les colonnes (attributs) sont non-ordonnés
 les attributs sont élémentaires ou atomiques : il n'ont
qu'une seule valeur pour une valeur de clé.

Exemples de tables incorrectes :


 Deux attributs "Nom" et "Prénom" mais deux "Jean
Dupont" : il faut ajouter une clé pour distinguer.
 Attribut "N° de ligne dans la table" : rend le contenu
de la table dépendant de l'ordre des lignes.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #54

4. Normalisation 3/5
Cours et Note ont plusieurs valeurs pour l'étudiant 1222.
NumEtu Nom Cours Prof Note Bureau
1222 Dupont NF14 C. Prins C G202
SY15 A. Yalaoui F G108
1229 Durand MT14 C. Chu A G201

Il faut deux tables :


NumEtu Nom NumEtu Cours Prof Note Bureau
1222 Dupont 1222 NF14 C. Prins C G202
1229 Durand 1222 SY15 A. Yalaoui F G108
1229 MT14 C. Chu A G201
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #55

4. Normalisation 4/5
Table en deuxième forme normale (2NF):
 la table est déjà en 1NF
 les attributs n'appartenant pas à la clé dépendent de
tous les attributs de la clé
 problème seulement si la clé a plusieurs attributs.

Le prof ne dépend que du cours ! D’où 2 tables :


NumEtu Cours Prof Note Bureau
1222 NF14 C. Prins C G202
1222 SY15 A. Yalaoui F G108
1229 MT14 C. Chu A G201

NumEtu Cours Note Cours Prof Bureau


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #56

4. Normalisation 5/5
Table en troisième forme normale (3NF):
 la table est déjà en 2NF
 tout attribut n'appartenant pas à la clé ne dépend pas
aussi d'un attribut non-clé.
Ci-dessous, le bureau dépend du prof. On fait 2 tables :

Cours Prof Bureau


NF14 C. Prins G202
SY15 A. Yalaoui G108
MT14 C. Chu G201

Cours Prof Prof Bureau


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #57

5. Opérateurs relationnels 1/7


Les opérateurs relationnels traitent 1 ou 2 tables pour en
produire une nouvelle, qui est affiché ou stocké. Ils sont
inclus dans les langages de manipulation de données,
avec des syntaxes variables.

Opérateurs avec une table A en entrée :


 la restriction ou sélection garde les tuples respectant
une condition : C = RESTRICT (A, condition) (éviter le
nom SELECT qui est une instruction SQL).
 la projection garde certains attributs de A, sur toutes
les lignes : C = PROJECT (A, attribut_1, …, attribut_n).
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #58

5. Opérateurs relationnels 2/7


A Nom Fonction Indice
Dupont Comptable 5
Durand Ingénieur 2
Martin Mécanicien 4
Terrier Comptable 7

B=RESTRICT(A,Indice<5) C=PROJECT(A,Nom,Indice)

B Nom Fonction Indice C Nom Indice


Durand Ingénieur 2 Dupont 5
Martin Mécanicien 4 Durand 2
Martin 4
Terrier 7
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #59

5. Opérateurs relationnels 3/7


Opérateurs sur deux tables A, B de même structure :

 l'union détermine les tuples présents dans au moins


une des tables : C = UNION (A,B) ou A  B.
 l'intersection détermine les tuples présents dans A et
B : C = INTER (A,B) ou A  B.
 la différence A-B détermine les tuples présents dans A
mais pas dans B : C = MINUS (A,B) ou A \ B ou A – B.

Notes :
 Il s’agit des opérations usuelles sur des ensembles
 la différence n'est pas commutative...
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #60

5. Opérateurs relationnels 4/7


A Nom Fonction Indice B Nom Fonction Indice
Durand Ingénieur 2 Dupont Comptable 5
Martin Mécanicien 4 Durand Chauffeur 2
Martin Mécanicien 4
Terrier Plombier 7

C = UNION (A,B) D = INTER (A,B)


C Nom Fonction Indice D Nom Fonction Indice
Durand Ingénieur 2 Martin Mécanicien 4
Martin Mécanicien 4
Dupont Comptable 5
Durand Chauffeur 2
Terrier Plombier 7
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #61

5. Opérateurs relationnels 5/7


Opérateurs sur deux tables quelconques A et B :

 le produit cartésien A x B crée une table contenant


toutes les colonnes de A et B et dont les lignes sont
formées en concaténant chaque ligne de A à chaque
ligne de B. Si un attribut figure dans A et B, il apparaît
deux fois dans le résultat. C = PRODUCT (A,B).
 les jointures équivalent à un produit cartésien suivi
d'une sélection. Il existe de nombreuses formes selon
les SGBD, avec des syntaxes diverses.

Les LMD des SGBD offrent souvent d'autres opérateurs.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #62

5. Opérateurs relationnels 6/7


Opérateurs de jointure interne (inner join)

Forme générale : C = JOIN (A,B,condition)


Les tuples de C sont obtenus par concaténation des
tuples de A et B vérifiant une condition sur des attributs
communs : C = JOIN (A, B, A.Poids > B. Poids).

Jointure naturelle : C = JOIN (A,B)


Forme générale avec condition d’égalité : Poids apparait
2 fois dans C avec des valeurs égales. Dans la jointure
naturelle, la condition implicite est l’égalité des attributs
communs. Les colonnes en double sont supprimées.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #63

5. Opérateurs relationnels 7/7


Opérateurs de jointure externe (external join)

Ils conservent certaines parties de A ou B ne vérifiant


pas la condition. La jointure naturelle sous forme externe
est notée C = EXT-JOIN (A,B). Elle équivaut à :

 Faire une jointure naturelle


 Ajouter les tuples de A sans correspondants dans B, en
ajoutant tous les attributs de B, initialisés à NULL.
 Ajouter les tuples de B sans correspondants dans A, en
ajoutant tous les attributs de A, initialisés à NULL.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #64

6. Et après le MLD?
Après le MLD, il suffit de choisir un SGBD comme Access
et de réaliser la BD : modèle physique = implémentation.

La réalisation comporte deux étapes :


 la description des tables (dictionnaire de données)
 le chargement des données dans les tables.

Le dictionnaire de données traduit le MLD.


Avec Access, c'est un fichier *.mdb (model of data base).

Puis le chargement se fait par saisie, ou en important


d'autres fichiers, ou par calcul à partir d'autres tables.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #65

Chapitre 4
Langage SQL
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #66

1. Requêtes, formulaires, états 1/2


Qu'est-ce qu'une requête ou interrogation (query)?
 Elle définit des extractions de données ou des calculs
de tuples, à partir de tables existantes. On précise les
champs de tables liées et des critères de sélection :
SELECT Nom, Age FROM Table WHERE Nom >= 'D'
 Elle peut être sauvegardée, modifiée, exécutée…
 Définition possible avec une grille ou en SQL.
Le résultat se présente comme une table, mais :
 On peut obtenir des lignes ou colonnes en double.
 Toute modification affecte aussitôt les tables d'origine!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #67

1. Requêtes, formulaires, états 2/2


Formulaires :
 Ils servent à afficher, saisir, modifier ou supprimer des
données dans plusieurs tables ou requêtes.
 Présentation plus conviviale que le format table.
 En général, ce sont des écrans de saisie gérant un
enregistrement à la fois.
 Les modifications affectent aussitôt les tables liées.

Etats :
 Ils sont conçus pour imprimer des documents sur
plusieurs pages : en-têtes de pages, sous-totaux etc.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #68

2. Qu’est-ce que SQL ?


SQL (Structured Query Language) :
 En français "langage de requête structuré",
 Langage fixé par des normes ANSI (1986, 1992),
 Reconnu par tous les SGBD relationnels,
 Mais nombreux "dialectes" : tolérances, extensions…

Caractéristiques :
 LMD pour faire des requêtes, formulaires et états.
 Plus des commandes de définition de tables (LDD)
 Plus des commandes de droits d'accès.
 Instructions non-procédurales et ensemblistes.
 Entièrement en anglais.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #69

3. Identificateurs SQL
Règles sur les identificateurs (noms d'attributs etc) :
 Max. 30 caractères, le 1er doit être une lettre,
 Caractères suivants : lettres, chiffres, #, $ ou _
 Insensible à la casse (majuscules / minuscules)
 Un attribut ambigu doit être préfixé : T1.Nom.
 Attention aux mots réservés : TABLE, SELECT, DATE…
 On peut définir des noms avec espaces ou caractères
spéciaux, voire identiques à des mots réservés, mais il
faut les mettre entre guillemets  "Date", "Prix de
vente", en Access crochets  [Prix de vente]
 Par convention, on met les mots-clés en majuscules.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #70

4. Expressions SQL 1/3


Termes élémentaires :
 nom de colonne : Prenom, "Date", "Prix HT"
 constante numérique : 7, 2.5
 constante chaîne ('oui') ou date ('12/07/2006')
 si une chaîne contient une quote, la doubler : 'd''abord'
 nom de fonction : ABS, SQRT, SUM

Opérateurs :
 arithmétiques : *, /, +, - : "Prix HT" * TVA – Rabais
 comparaison : =, <> ou !=, >, >=, <, <=
valables pour nombres, chaînes de caractères et dates
 divers : Type IN (1, 4, 5), Age BETWEEN 10 AND 20.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #71

4. Expressions en SQL 2/3


Opérateurs (suite) :
 propres aux chaînes :
- concaténation de chaînes ||, en Access &
- LIKE, synonyme de = mais permet des "jokers"
LIKE 'D*' LIKE '??ON' LIKE '[A-C]###'
* = une chaîne, ? = un caractère, # = un chiffre
 logiques : AND, OR, NOT
NOT peut se mettre aussi devant LIKE, BETWEEN, IN

Priorité des opérateurs comme en maths :


 A > 3*ABS(3-B) AND NOT C < 4 OR Z != 0.
 Mettre des parenthèses en cas de doute!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #72

4. Expressions en SQL 3/3


Le cas de NULL :
 Un champ non saisi a une valeur indéfinie, notée NULL
 Une expression vaut NULL si elle est non calculable :
Vrai AND NULL = NULL, Faux AND NULL = Faux
 pas de critère comme Nom = NULL, toujours NULL!
 syntaxe spéciale : Nom IS NULL, Nom IS NOT NULL.
Fonction très utile "Null value" NVL (exp1,exp2) :
 vaut exp1 si exp1 non NULL, sinon exp2
 exemple : Salaire+NVL(Prime,0).
Attention : Les SGBD distinguent NULL et "chaîne vide".
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #73

5. Instruction SELECT
SELECT [ALL|DISTINCT] { * | exp [[AS] nom_affiché ] } [, …]
FROM nom-table [ [AS] alias] [, …]
[ WHERE condition ]
[ GROUP BY exp [, …] ]
[ HAVING condition [, …] ]
[ {UNION | INTERSECT | EXCEPT [ALL] } requête ]
[ ORDER BY exp [ASC | DESC] [, …] ]

Ordre obligatoire. Explication de la syntaxe:


[x] : partie facultative
exp : expression SQL quelconque
{x|y|z} : liste de choix exclusifs
… : répétition de la syntaxe précédente.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #74

6. Clause SELECT 1/3


Obligatoire! Exemple simple de requête avec SELECT :

SELECT Nom, Prenom FROM Etudiants


Affiche une table avec les noms et prénoms des étudiants

ALL (par défaut) : les lignes en double sont conservées


DISTINCT : elles sont supprimées.

SELECT DISTINCT Nom, Prenom FROM Etudiants.

C'est la projection de l'algèbre relationnelle.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #75

6. Clause SELECT 2/3


Chaque colonne à afficher est spécifiée par :
* (tous les attributs)
SELECT * FROM ETUDIANTS :
Affiche le contenu de la table Etudiants.
Ou une expression SQL quelconque :
SELECT Film, ' Vedette : ', Acteur FROM Distribution
La chaîne ' Vedette : ' va figurer sur chaque ligne.

SELECT Nom, Salaire*12 FROM Employes


Affiche les noms et salaires annuels des employés.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #76

6. Clause SELECT 3/3


Oracle reprend ' Vedette : ', 'Salaire*12' comme noms de
colonnes. Access utilise 'Expr1', 'Expr2' etc.
SELECT Nom || ' ' || Prenom FROM ETUDIANTS
Affiche nom et prénom sur une seule colonne.

AS permet de renommer une colonne ou nommer une


expression calculée :
SELECT Nom AS "Nom employé", Salaire*12 AS Annuel
FROM Employes

NB : - guillemets à Nom employé car espace et accent.


- le mot AS est facultatif.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #77

7. Clause FROM 1/3


Obligatoire ! Pour spécifier les tables utilisées :
SELECT Nom, Prenom FROM Etudiants

Si plusieurs tables, on peut faire le produit cartésien :


SELECT * FROM T1, T2

Ou un produit cartésien + projection:


SELECT Pilotes.Nom, Copilotes.Nom
FROM Pilotes, Copilotes
Donne la liste des équipages pilote/copilote possibles.

Il faut souvent une clause WHERE pour filtrer les lignes.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #78

7. Clause FROM 2/3


AS permet de renommer une table dans la requête :

SELECT T1.Nom, T2.Details


FROM Table_1 AS T1, Table_2 AS T2
WHERE T1.Nom = T2.Nom
L'ancien nom ne doit plus être utilisé (cf. le WHERE).

Un nom de table peut être remplacé par un SELECT entre


parenthèses (sous-requête, donnant une nouvelle table):

Les sous-requêtes sont utilisées surtout dans la clause


WHERE, mais on doit parfois les utiliser dans FROM.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #79

7. Clause FROM 3/3


Subtilité de SQL : un cas de sous-requête obligatoire.
SELECT SUM(Sal) AS "Total salaire" FROM Emp
Affiche le total des salaires (une seule ligne).

SELECT Nom, Sal/SUM(Sal) FROM Emp.


Ecriture invalide car la sélection se fait ligne par ligne,
quand SUM n'est pas encore connu. Il faut décomposer :

SELECT Nom, Sal/Total*100


FROM Emp, (SELECT SUM(Sal) AS Total FROM Emp)

Cas classique avec les fonctions de groupe (affectant une


colonne et renvoyant une seule ligne) : SUM, MAX, AVG…
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #80

8. Clause WHERE 1/6


Choisit des lignes dans une table, ou dans un produit
cartésien de tables, avec un test évalué ligne par ligne.
Ce test peut être une expression SQL quelconque.
Etus Deps
NomEtu DepEtu CodeDep NomDep
Dupont 10 10 Aube
Durand 27 18 Cher
Mangin 10 27 Eure
Pinson 18

Cas simple avec une table :


SELECT NomEtu FROM Etus WHERE DepEtu != 27
Affiche les noms des étudiants qui ne sont pas de l’Eure.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #81

8. Clause WHERE 2/6


Cas avec 2 tables – Jointure interne :
SELECT NomEtu, NomDep
FROM Etus, Deps
WHERE DepEtu = CodeDep
Affiche les noms des étudiants et de leur département.

Autre écriture équivalente (SQL ANSI 1992) :


SELECT NomEtu, NomDep
FROM Etus INNER JOIN Deps
ON DepEtu = CodeDep
Dialecte SQL Access : on peut comparer seulement deux
champs (un de chaque table) et on doit les préfixer !
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #82

8. Clause WHERE 3/6


Cas avec 2 tables – Jointures externes.
Elles conservent en plus les lignes d’une table qui n’ont
aucune correspondance dans l’autre table.

Jointure externe gauche si Pinson avait CodeDep = 15:


SELECT NomEtu, NomDep NomEtu NomDep
FROM Etus LEFT JOIN Deps Dupont Aube
ON DepEtu = CodeDep Durand Eure
Mangin Aube
Pinson <null>

Il existe aussi la jointure externe droite: RIGHT JOIN.


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #83

8. Clause WHERE 4/6


Jointure d’une table à elle-même. Chaud !

SELECT Etus.NomEtu
FROM Etus, Etus AS E2
WHERE Etus.DepEtu = E2.DepEtu AND E2.NomEtu = 'Dupont'
Liste les étudiants ayant même départment que Dupont!
Ecrire le produit cartésien Etus x Etus pour mieux comprendre.
Possible aussi avec une sous-requête renvoyant une valeur:

SELECT NomEtu
FROM Etus
WHERE DepEtu = ( SELECT DepEtu
FROM Etus
WHERE NomEtu = ‘Dupont’)
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #84

8. Clause WHERE 5/6


Sous-requête plus complexe, ramenant plusieurs lignes :

SELECT NomEtu
FROM Etus
WHERE DepEtu IN ( SELECT CodeDep
FROM Deps
WHERE NomDep LIKE '[A-C]*');
Liste les étudiants venant d’un département dont le nom
commence par A, B, C : Dupont, Mangin, Pinson.

Exemple typique de la grande puissance de SQL !


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #85

8. Clause WHERE 6/6


Sous-requête ramenant plusieurs lignes. ALL (tous) et
ANY (au moins un) avec un opérateur de comparaison :

SELECT Nom FROM Emp


WHERE Sal < ALL (SELECT Sal FROM Emp WHERE Dep = 10);
Employés gagnant moins que tous les aubois. = ANY :
ceux qui ont le même salaire qu'au moins un aubois.

Sous-requête ramenant plusieurs colonnes :


SELECT Nom FROM Emp WHERE (Poste,Sal) =
(SELECT Poste, Sal FROM Emp WHERE Nom = 'Dupont');
Employés avec même poste et même salaire que Dupont.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #86

8. Clause GROUP BY 1/2


Regroupe des lignes sur les valeurs d’un attribut :

DepEtu Etudiants Nombre


10 Dupont, Mangin 2
18 Pinson 1
27 Durand 1

La colonne Etudiants avec des groupes ne peut pas être


calculée, mais on peut obtenir les deux autres :
SELECT DepEtu, COUNT(NomEtu) FROM Etus
GROUP BY DepEtu
Les colonnes du SELECT doivent être aussi après GROUP BY.
Les autres sélections doivent être des fonctions de groupe.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #87

8. Clause GROUP BY 2/2


Nécessite une fonction de groupe: COUNT, SUM, MIN,
MAX, AVG (Access en offre d’autres inspirées de EXCEL).

Important. La clause WHERE (si présente) est appliquée


aux lignes AVANT le regroupement :

SELECT DepEtu, COUNT(NomEtu)


FROM Etus
WHERE NomEtu < ‘P’
GROUP BY DepEtu

Pinson est éliminé avant le regroupement!


C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #88

9. Clause HAVING 1/2


HAVING sélectionne les groupes comme WHERE
sélectionne les lignes :

SELECT DepEtu, COUNT(NomEtu) FROM Etus


GROUP BY DepEtu
HAVING Count (NomEtu) > 1

On obtient seulement le département 10 avec 2


étudiants!
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #89

9. Clause HAVING 2/2


Ordre de calcul dans SELECT … GROUP BY … HAVING :

 si le SELECT a 2 tables, le produit cartésien est calculé


 la clause WHERE élimine des lignes dans la table-résultat
 le regroupement spécifié par GROUP BY est effectué
 la clause HAVING élimine des groupes dans la table-résultat
 les fonctions de groupe du SELECT sont calculées.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #90

10. Unions
Union, intersection ou différence de 2 tables avec les
mêmes types de champs (les noms peuvent différer).

SELECT * FROM T1 UNION SELECT * FROM T2 ou:


TABLE T1 UNION TABLE T2

Doublons : lignes ayant même clé si les tables ont des


clés, lignes identiques si les tables n'ont pas de clé.
On peut conserver les doublons avec ALL :
TABLE T1 UNION ALL TABLE T2

INTERSECT (intersection) et EXCEPT (différence) du SQL


ANSI 1992 ne sont pas reconnus par Access !
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #91

11. Clause ORDER BY


Permet de trier les lignes d’une requête :
SELECT * FROM Etus ORDER BY NomEtu ASC
Affiche la table Etus, triée par noms croissants.
ASC (ascending) est facultatif.
SELECT * FROM Deps ORDER BY NomDep DESC
Affiche la table Deps, triée par noms décroissants.
SELECT * FROM Etus ORDER BY Nom, Prenom.
Trie par nom, puis par prénom en cas d’égalité.
SELECT * FROM Etus ORDER BY Nom || Prenom.
Equivalent à la commande précédente.
Le critère peut être une expression SQL quelconque.
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #92

12. Différences SQL ANSI / Access

SQL ANSI Access


Délimiteur de chaînes 'coq' 'coq' ou "coq"
Nom à caractères spéciaux "Prix max" [Prix max]
Opérateur de concaténation || &
C. Prins – NF14 – Partie Bases de Données – P2019 – Slide #93

13. Ordre de calcul en SQL


1. Les tables de la clause FROM sont ouvertes.
2. S'il y en a plus d'une, le produit cartésien est calculé.
3. La clause WHERE élimine les lignes qui ne satisfont pas les
conditions spécifiées.
4. S'il y a une clause GROUP BY :
a. les lignes sont regroupées selon le critère spécifié
b. les fonctions de groupe sont calculées pour chaque
groupe (SUM, AVG, COUNT etc.)
c. la clause HAVING élimine les groupes qui ne satisfont
pas les conditions spécifiées
5. Projection : dans chaque ligne, seuls les attributs listés
dans le SELECT sont conservés.
6. S’il y a une clause ORDER BY, la table-résultat est triée.

Vous aimerez peut-être aussi