Vous êtes sur la page 1sur 55

Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006

SQL
Structured Query Language
Le Langage de Dfinition et dExploitation
des Bases de Donnes Relationnelles
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Bases de Donnes Relationnelles
Le Langage de Dfinition et dInterrogation
des Bases de Donnes Relationnelles
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Notion de Base de Donnes
Ensemble Structur de Donnes
centralisation des donnes
non redondance des donnes
intgrit des donnes
diffusion des donnes
Systmes de Gestion de Bases de Donnes (SGBD)
interaction avec la base de donnes
langage de dfinition
langage de manipulation
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Principe dune Base de Donnes
Monde rel
Modlisation
Base de
donnes
physique
Schma
externe
Schma
conceptuel
Schma
physique
Schma
externe
Schma
externe
Niveau Niveau
conceptuel
Niveau
interne externe
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Mise en Oeuvre d'un SGBD
Langage de Dfinition (DDL)
spcification du schma conceptuel
correspondance entre schma conceptuel et schma interne
Langage de Manipulation (DML)
maintenance des donnes
interrogation interactive
slections
vues
utilisation par des programmes
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SGBD Relationnels
Modle : tables ou relations
Lignes = n-uplets
Colonnes = domaines de valeurs
Schma conceptuel
Ensemble de tables
Les cls primaires des tables
Langage de manipulation
SQL ("Structured Query Language")
Interfaces graphiques
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Schma Conceptuel
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Structured Query Language
Le Langage de Dfinition et dInterrogation
des Bases de Donnes Relationnelles
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SQL
SQL est de fait :
le langage de dfinition (DDL)
et de manipulation (DML) des SGBD relationnels
Dfinition des tables
Cration
Mise jour
Suppression
Cration de cls et d'index
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SQL Exploitation des tables
Modification du contenu des tables
Insertion
Mise jour
Suppression
Exploration des tables
Projection
Slection
J ointure
Fonctions supplmentaires
Tris (classements)
Expressions de colonnes
Regroupements
Fonctions de groupes
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Algbre Relationnelle
Toute opration licite sur une ou plusieurs tables a
pour rsultat une table
Toute table produite par une opration peut tre
rutilise par une autre opration
Cependant, les tables produites ne font pas partie du
schma conceptuel de la base de donnes
Production de nouvelles donnes (redondance)
Pas de cls
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Requte SQL
Forme gnrale dune requte SQL
SELECT colonnes afficher
FROMtables exploiter
WHERE conditions sur des lignes
SELECT et FROM sont obligatoires
WHERE est facultatif
Ordre logique
1 FROMtables exploiter
2 SELECT valeurs (ventuellement calcules) afficher
3 WHERE conditions respecter
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Projection
Extraire un sous-ensemble de colonnes
Exemples
Afficher les
nom,
prnom et
sexe
des patients
Afficher
Lidentification du sjour
Les SGOT et
Les SGPT
des bilans hpatiques
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Nom", "Prnom", "Sexe"
FROM "Patient"
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "IdSjour", "SGOT", "SGPT"
FROM "BilanHp"
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Slection
Extraire un sous-ensemble de lignes
Mise en uvre de WHERE
Exemples
Afficher les nom et prnom des patients de sexe fminin
Afficher toutes les informations des sjours dont le motif tait
C88.0
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Nom", "Prnom", "Sexe" FROM "Patient" WHERE ( ( "Sexe" ='F' ) )
SELECT "Nom", "Prnom" FROM "Patient" WHERE ( ( "Sexe" = 'F' ) )
Affichage
inutile
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT *
FROM "Sjour"
WHERE ( "Motif" = 'C88.0' )
Double
affichage
Toutes les
colonnes
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Critres de Slection
Oprateurs de comparaison usuels
Egalit : = et ingalit : != ou <>
Suprieur (ou gal) : > (ou >=) et infrieur (ou gal) : < (ou <=)
Et des oprateurs spcifiques
(NOT) BETWEEN x AND y : teste si compris (hors) entre x et y
(NOT) IN : teste la prsence (l'absence) dans une liste
LIKE : teste la ressemblance
IS (NOT) NULL : teste l'absence (la prsence) d'information
Combinaisons au moyen doprateurs boolens
AND
OR
NOT
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Les Oprateurs de Comparaison Usuels
Ils sappliquent tous types de donnes condition
de comparer des donnes de mme type, par
exemple
01/07/2006 < 22/09/2006, antriorit
Durand > Dupont, ordre alphabtique
Exemple
Quels sont les bilans hpatiques pratiqus avant le premier
fvrier 1998 ?
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT *
FROM "BilanHp"
WHERE ( ( "Date" < {D '1998-02-01' }) )
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Les Oprateurs NULL et LIKE
NULL permet de tester labsence dinformation
Exemple :
Rechercher le(s) patient(s) dont ladresse nest pas connue
LIKE permet de rechercher une sous-chane de
caractres dans une donne
Exemple :
Rechercher le(s) patient(s) dont le nom commence par la lettre P
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "NumDossier", "Nom", "Prnom"
FROM "Patient"
WHERE ( ( "Adresse" IS NULL ) )
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "NumDossier", "Nom", "Prnom"
FROM "Patient"
WHERE ( ( "Nom" LIKE 'P%' ) )
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Combinaisons de Critres de Slection
Indiquer les formules de numration sanguine
prsentant un nombre de GB infrieur 5 et un
nombre de GR suprieur 4,5
Indiquer les sjours dont le motif est M32.9 ou M33.9
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "IdSjour", "Date", "GB", "GR"
FROM "NFS"
WHERE ( ( "GB" < 5 AND "GR" > 4.5 ) )
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "IdSjour", "NumDossier", "Motif"
FROM "Sjour"
WHERE ( ( "Motif" = 'M32.9' ) OR ( "Motif" = 'M33.9' ) )
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
J ointure
Se ralise entre des tables ayant une colonne (domaine
de valeur) en commun
Dans la clause WHERE, exemple
SELECT "Patient"."NumDossier", "Patient"."Nom",
"Patient"."Prnom", "Sjour"."DateEntre", "Sjour"."DateSortie"
FROM "Sjour", "Patient"
WHERE ( "Sjour"."NumDossier" = "Patient"."NumDossier" )
Et/ou par des liens prdfinis dans le schma de la base,
exemple
SELECT "Patient"."NumDossier", "Patient"."Nom",
"Patient"."Prnom", "Sjour"."DateEntre", "Sjour"."DateSortie"
FROM "Patient" INNER J OIN "Sjour" ON
( "Patient"."NumDossier" = "Sjour"."NumDossier" )
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Patient"."NumDossier", "Patient"."Nom", "Patient"."Prnom",
"Sjour"."DateEntre", "Sjour"."DateSortie"
FROM "Sjour", "Patient"
WHERE ( "Sjour"."NumDossier" = "Patient"."NumDossier" )
Jointure tablie
automatiquement
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Patient"."NumDossier", "Patient"."Nom", "Patient"."Prnom",
"Sjour"."DateEntre", "Sjour"."DateSortie"
FROM "Patient" INNER J OIN "Sjour" ON
( "Patient"."NumDossier" = "Sjour"."NumDossier" )
Jointure
impose
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
In Fine : des Rsultats Identiques
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Right J oin
Edition
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Sjour"."NumDossier", "BilanHp"."IdSjour",
"BilanHp"."SGOT", "BilanHp"."SGPT"
FROM {OJ "BilanHp" "BilanHp" RIGHT OUTER J OIN "Sjour" ON
"BilanHp"."IdSjour" = "Sjour"."IdSjour" }
ORDER BY "Sjour"."NumDossier" ASC, "BilanHp"."IdSjour" ASC
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Left J oin
L'inverse de
RIGHT J OIN
Edition
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
J ointure Multiple
Se ralise sur plusieurs tables que lon peut joindre
deux deux
SELECT "Patient"."Nom", "Patient"."Prnom", "Sjour"."NumDossier",
"NFS"."GB", "NFS"."GR"
FROM Patient, Sjour, NFS
WHERE (Sjour.NumDossier=Patient.NumDossier) AND
(Sjour.IdSjour=NFS.IdSjour)
SELECT "Patient"."Nom", "Patient"."Prnom", "Sjour"."NumDossier",
"NFS"."GB", "NFS"."GR"
FROM ("Patient" INNER J OIN "Sjour" ON "Patient"."NumDossier" =
"Sjour"."NumDossier") INNER J OIN "NFS" ON "Sjour"."IdSjour" =
"NFS"."IdSjour"
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Exemple de J ointure Multiple
NumDossier peut tre
slectionn dans Patient
ou dans Sjour
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Rsultat dune J ointure Multiple
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Classement
Prsentation du rsultat d'une requte selon un ordre
fix par des valeurs de colonnes
Exemple
SELECT "Nom", "Prnom", "Sexe", "DateNaissance",
"NumDossier"
FROM "Patient"
ORDER BY "Nom" ASC, "Prnom" ASC
Ordonnancement opr selon l'ordre de gauche
droite des champs indiqus
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Exemple de Classement
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Nom", "Prnom", "Sexe", "DateNaissance", "NumDossier"
FROM "Patient"
ORDER BY "NumDossier" ASC
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Expressions de Colonnes
Avec des constantes et des donnes de mme type
Servent effectuer des calculs et produire de
nouvelles donnes
Arithmtiques
+, -, *, /
fonctions : ABS, SQRT,
Dates
fonctions : YEAR, MONTH,
Chanes de caractres
& (concatnation)
fonctions : CHR, REPLACE,
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Exemples dExpressions de Colonnes
Calcul de lage des patients
SELECT "Nom", "Prnom", 1999 - YEAR( "DateNaissance" )
FROM "Patient"
Classement dans lordre dcroissant
SELECT "Nom", "Prnom", 1999 - YEAR( "DateNaissance" ) AS Age
FROM "Patient"
ORDER BY Age DESC;
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Nom", "Prnom", 1999 - YEAR( "DateNaissance" ) AS Age
FROM "Patient"
ORDER BY ( 1999 - YEAR( "DateNaissance" ) ) DESC
Age
Alias : Age
Age
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Usage des alias
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Regroupement
Prsentation des rsultats d'une slection regroups
selon un critre
Exemple : les diffrents motifs de sjour
SELECT "Motif"
FROM "Sjour" "Sjour"
GROUP BY "Motif"
ORDER BY "Motif" ASC
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Motif"
FROM "Sjour"
GROUP BY "Motif"
ORDER BY "Motif" ASC
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Fonctions de Groupes
Sont gnralement associes la clause GROUP
BY d'une slection
AVG : moyenne
COUNT(expr) : dnombre les lignes pour lesquelles "expr"
n'est pas null
MAX : calcule le maximum
MIN : calcule le minimum
SUM : calcule la somme
. . . . . .
Mais pas obligatoirement
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Exemples de Fonctions de Groupes
Dcompte des motifs de sjour
SELECT "Motif", COUNT( "IdSjour" )
FROM "Sjour"
GROUP BY "Motif"
ORDER BY COUNT( "IdSjour" ) DESC
Moyenne des Gamma GT
SELECT AVG( "GammaGT" ) AS "Moyenne"
FROM "BilanHp"
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Motif", COUNT( "IdSjour" ) AS Nombre
FROM "Sjour"
GROUP BY "Motif"
ORDER BY COUNT( "IdSjour" ) DESC
Nombre
NULL
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT AVG( "GammaGT" ) AS "Moyenne"
FROM "BilanHp"
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Condition dans le Regroupement
Les conditions de la clause HAVING oprent sur les
lignes de la table produite
Exemple
SELECT "Motif", COUNT( "IdSjour" )
FROM "Sjour"
GROUP BY "Motif" HAVING ( "Motif" IS NOT NULL )
ORDER BY COUNT( "IdSjour" ) DESC
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
SELECT "Motif", COUNT( "IdSjour" )
FROM "Sjour"
GROUP BY "Motif"
HAVING ( "Motif" IS NOT NULL )
ORDER BY COUNT( "IdSjour" ) DESC
NULL
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Notion de Vue
Une vue est le rsultat d'une requte
Elle se prsente comme une table
Elle ne fait pas partie (du schma) de la base de
donnes
Pas de cl, pas d'index
Exemple : les patients et les mdecins qui les
soignent
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Exemple de Vue
Alias
Master EISIS Michel J OUBERT LERTIM, Facult de Mdecine, Marseille - 2006
Bibliographie
Livres
SQL pour les nuls. A Taylor. First Interactive
SQL. F Brouard. Campus Press
Sites Internet
Introduction aux bases de donnes
http://www.commentcamarche.net/bdd/bddintro.php3
Conception de bases de donnes
http://nte-socio.univ-lyon2.fr/Marc_Grange/BDConception.htm
Liste de sites sur les bases de donnes et les SGBD
http://sgbd.developpez.com/cours/