You are on page 1of 14

Le langage SQL Rappels

Description du thme : Prsentation des principales notions ncessaires pour raliser des requtes SQL Mots-cls : Niveau : Domaine(s : !"pe(s de ressource : #$%ecti&s ) Sance(s dveloppe(s : Place de la squence dans la pro'ression annuelle : Pr-requis : #utils : (onditions de ralisation : Bases de donnes relationnelles, Open Office, champs, relations, requtes, oprations relationnelles Ce cours peut tre commenc en 1re STG (les parties I III comprise! et peut tre complt en TGSI ou TC"#$ Informatique de %estion Support de cours & tra'au( l'es en autonomie *e lan%a%e S+* ) l,instruction S#*#CT pour traduire les oprations de slection, de pro-ection et de -ointure$ #n fin de 1re STG ou au d.ut de terminale$ /a0trise du schma relationnel$ Connaissance des .ases de donnes relationnelles$ /icrosoft 1ccess ou Open Office$Or% Base$ 2n 'ido pro-ecteur pour l,'aluation des tra'au( des l'es ou pour la prsentation du corri%$ 2n ordinateur par personne$ *e cours peut tre di'is en 3 parties ) *es parties I, II et III peu'ent tre ensei%nes d,une traite$ 4uis, on peut a.order la partie I5$ 6e mme ensuite, on peut traiter sparment la partie 5, puis la partie 5I$ "ormati'e 4arties I, II, III, cours et T6 ) 7 heures en'iron$ 4artie I5 ) 3 heures en'iron$ 4artie 5 ) 8 heures en'iron$ 4artie 5I ) 3 heures en'iron$ 3&Crer, produire, traiter, e(ploiter des donnes$ Dossier lve : *es fichiers /na$ase-sql.od$ ) .ase de donnes Base /na$ase.md$ ) .ase de donnes 1ccess claude.pasqualini0ac-limo'es.&r

)valuation : !emps appro*imati& de ralisation :

(omptences +,i : Dossier pro&esseur : (orri'-requtes.doc : corri% des requtes demandes

(ontact :

Le but de ce propos nest pas de prsenter un nouveau cours sur SQL. Il en existe beaucoup qui sont disponibles sur Internet. Lobjectif est plutt de prsenter une marche suivre pour prsenter les diffrentes parties du lan!a!e de requ"tes. #e joins donc ce cours quelques exercices dillustrations. Lensei!nant pourra choisir ceux qui correspondent le mieux sa pro!ression. $our chaque requ"te% je fournis le rsultat obtenir. La S&'( sur lequel ces requ"tes ont t testes est )$*+ ),,I-*.)r!'ase. La base de donnes .nabase est dans votre dossier sous le nom / anabase0sql.odb ainsi que le corri! des exercices / corri!0requetes.doc $our illustrer ce chapitre% jai dcid de mappu1er sur un cas cr dans les annes 23 et bien connu des ensei!nants en informatique / le cas 4 .nabase 5 dont voici quelques extraits / Le con!r6s se droule sur une semaine de 7 jours ouvrables. Il comporte diffrentes sessions dune demi8journe chacune% consacres des confrences% dbats sur un th6me donn. Un congressiste peut participer ce congrs envoy par un organisme (entreprise, administration, universit ou lyce) ou non. Il peut ventuellement tre accompagn dune personne. On suppose quun congressiste ne peut pas avoir plus dun accompagnateur. e congressiste est a!!ect un "#tel. $"aque "#tel a propos un pri% par participant et un supplment pour laccompagnateur. $es pri% sont vala&les pour toutes les c"am&res d 'un mme "#tel. e &ureau danimation propose des activits culturelles (spectacles, e%cursions, concerts, visites de monuments...) pour meu&ler le temps des accompagnateurs et des congressistes qui ont des disponi&ilits dans leur emploi du temps. $"aque activit est repre par un code activit, une dsignation et un "oraire de d&ut et de !in. es congressistes et les accompagnateurs peuvent sinscrire (usqu) la veille au soir au% activits sou"aites. (ans la suite du travail% nous allons nous limiter aux informations concernant les con!ressistes et leur or!anisme pa1eur% les htels ainsi que les activits proposes. Le mod6le relationnel obtenu est le suivant /

I- Rappels sur lalgbre relationnelle Il faut rappeler que le mod6le relationnel est bas sur le mod6le mathmatique. Il existe deux t1pes doprations que lon peut effectuer sur les tables / 8 8 les oprations ensemblistes : union% intersection et diffrence. les oprations relationnelles : projection% slection% jointure% division.

+ous nous limiterons ici aux oprations relationnelles / 8 8 8 Utilisation la projection : son objectif est de fournir le rsultat dune requ"te en supprimant les attributs dune table. La slection : elle a pour but dextraire des enre!istrements :li!nes; dune table rpondant un ou plusieurs crit6res de recherche. La jointure : cest la mise en correspondance de 9 tables selon un crit6re. e SQL pour reprsenter les oprations oprationnelles

Les < oprations vues ci8dessus sont exprimes en SQL avec la m"me instruction / S!L!"#$ II- La projection S%nta&e : select liste attributs 'rom table =order b1 nom attribut% >? *xemple / S*L*-@ +)A0-)+&B*SSIS@*% $BC+)A0-)+&B*SSIS@* ,B)A -)+&B*SSIS@* permet de raliser la projection de la table con!ressiste sur les attributs nom0con!ressiste et prnom0con!ressiste. )B(*B 'D suivi de nom dun attribut permet lafficha!e des rsultats tri suivant le nom dattribut. Si lon souhaite obtenir un tri suivant plusieurs crit6res% il faut prciser une suite dattributs derri6re le mot8cl )B(*B 'D.

<

$ar dfaut le tri est croissant. Le mot8cl (*S- plac la suite du nom de lattribut permet de raliser un tri dcroissant. )n peut afficher !alement le rsultat dun calcul / une expression arithmtique faisant intervenir plusieurs attributs numriques. (e plus% pour des raisons de lisibilit% on peut% !rEce au mot8cl .S% donner un nom lexpression / S*L*-@ attribut 1 F attribut 9 .S somme ,B)A table Bemarque / SQL nlimine pas les doublons moins que fi!ue le mot8cl (IS@I+-@ la suite de S*L*-@. II-(-!&ercices e re)u*tes e projection B1 / .fficher le nom% la date et lheure de chaque activit.

B9 / .fficher les villes dont sont ori!inaires les con!ressistes /

III- La slection La slection sexprime !rEce la clause GH*B*. S%nta&e : select I 'rom table +,ere condition. Le crit6re de slection :condition; peut faire intervenir un attribut% un oprateur et une constante. Le plus souvent% la projection et la slection sont composes / S%nta&e : select liste attributs 'rom table +,ere condition. *xemple/ select I from con!ressiste Jhere .(B*SS*0-)+&B*SSIS@* K LSt #unienL donne le rsultat suivant /

Rec,erc,e @ous les attributs (un attribut non rensei!n (un caract6re dans une chaRne

"aractre !&emple I +VLL 8 Select I >

"ommentaires

>Jhere adresse is +VLL .dresse non rensei!ne > Jhere nom liSe Tt8t8T Le nom contient un t *n 16re et en <6me lettre Le nom commence par un d et finit par un d.

(un ensemble de caract6res (ans une chaRne

Ghere nom liSe TdNd

(ans certains S&'(% le caract6re N peut "tre remplac par le caract6re I. !&emples oprateurs : -pration *st !al (iffrent de Suprieur Suprieur ou !al Infrieur Infrieur ou !al *ntre deux valeurs -ontient :pour une chaRne de caract6res; +e contient pas *st vide +est pas vide *t -prateur SQL K OP ou QK P PK O OK 'etJeen > and LiSe +ot liSe Is +VLL Is not +VLL .nd !&emple Jhere numro K 13 Jhere numro OP 13 "ommentaires

Ghere prix betJeen 17 and 93 Ghere nom liSe T. N

Les bornes sont Incluses Becherche des noms commenUant par la letter .

)u +on (ans la liste

)r +ot In

Ghere adresse K TLimo!es and +um0or!anisme is null Ghere adresse K TLimo!esor adresse K TSt #unien
Ghere ville in:4 Limo!es 5% 4 St #unien 5% 4 -o!nac 5;

Becherche les villes dans la liste qui suit le mot8cl I+. 7

.estion es ates : Lorsque lon veut utiliser une date comme crit6re de slection% il nexiste pas vraiment de solutions standards / Aicrosoft .ccess utilise la date sous la forme / WjjXmmXaaaaW )pen )ffice 'ase sous la forme Y( Laaaa8mm8jjL Z (autres S&'( utilisent la forme Taaaa8mm8jj. III-( !&ercices e re)u*tes e slection B< / .fficher la liste des or!anismes limou!eauds.

BM / .fficher les noms et prnoms de con!ressistes ne dpendant pas dun or!anisme.

B7 / .fficher la liste des con!ressistes situs dans les htels 9% < ou M.

B[ / .fficher la liste des activits a1ant lieu le 7 ou le \ juin 9332.

B\ / .fficher la liste des con!ressistes :nom et prnom; par ordre alphabtique.

B2 / .fficher la liste des htels dont le prix participant est compris entre <7 et 79 ].

B^ / .fficher la liste des con!ressistes :nom% prnom; dont le nom commence par un 4 A 5.

B13 / .fficher la liste des con!ressistes :nom% prnom; dont le nom contient un 4 . 5.

B11 .fficher la liste des con!ressistes :nom% prnom; dont le nom finit par un 4 @ 5.

B19 / .fficher la liste des htels dont le prix participant varie entre <7 et 77 ] et dont le prix supplment varie entre 93 et <3 ].

B1< / .fficher pour chaque htel la somme des deux prix :prix participant F prix supplment;.

I/- Les 'onctions Il existe de nombreuses possibilits de calcul !rEce certaines fonctions. Les principales sont / ._& / mo1enne de valeurs -)V+@ / nombre de valeurs SVA / somme de valeurs A.` / valeur maximale AI+ / valeur minimale. -es fonctions peuvent sappliquer apr6s un S*L*-@ / *xemples / S*L*-@ AI+:$rix0$articipant; ,B)A Htel donne la valeur minimale des prix participant. S*L*-@ ._&:$rix0$articipant F $rix0Suppl; ,B)A Htel donne la mo1enne des prix totaux par htel. S*L*-@ -)V+@:I; ,B)A -on!ressiste donne le nombre de con!ressistes.

Le regroupement e plusieurs rsultats Lorsquon utilise des fonctions on a parfois besoin de re!rouper les rsultats suivant certaines colonnes. $ar exemple% on pourrait souhaiter connaRtre pour chaque htel% le nombre de fois quil a t choisi par les con!ressistes. La fonction utiliser est -)V+@ et il faut effectuer dans la table -)+&B*SSIS@* un re!roupement par htel /
S*L*-@ +a0Hb@*L% -)V+@: I ; ,B)A -)+&B*SSIS@* &B)V$ 'D +a0Hb@*L.

&B)V$ 'D indique les colonnes re!rouper. @ous les attributs placs derri6re la clause S*L*-@ doivent "tre prsents derri6re la clause &B)V$ 'D. La proposition inverse nLest pas vraie. La clause &B)V$ 'D est obli!atoire d6s lors quLil 1 a de calcul derri6re la clause S*L*-@. Llimination e certains groupes Lorsque lon obtient le rsultat dune requ"te issue dun re!roupement% on peut souhaiter ne slectionner que certains !roupes parmi dautres. $our cela% il faut ajouter &B)V$ 'D la clause H._I+& qui permet la slection de !roupes parmi dautres. la fois des attributs et des fonctions

.ttention ne pas confondre H._I+& et GH*B* / H._I+& permet la slection de !roupes la suite dune requ"te avec re!roupement alors que GH*B* permet de slectionner des li!nes pour construire la requ"te. *xemple / dans le cas prcdent% on ne souhaite afficher que les htels qui hber!ent moins de 13 con!ressistes /
S*L*-@ +a0Hb@*L% -)V+@: I ; ,B)A -)+&B*SSIS@* &B)V$ 'D +a0Hb@*L H._I+& -)V+@:I; O13.

I/-(- !&ercices e re)u*tes avec 'onctions B1M / .fficher le nombre total de con!ressistes.

B17 / .fficher le prix mo1en dune chambre supplments.

'iarritc et la m"me chose pour les

B1[ / .fficher pour chaque activit le nombre de con!ressistes la1ant choisie.

B1\ / $our chaque con!ressiste participant nombre de personnes.

plus de 9 activits% afficher la mo1enne du

/- La jointure La jointure permet de lier des tables en faisant correspondre cls tran!6res et cls primaires. +ous nous limiterons ici lqui8jointure% cest dire une jointure base sur l!alit des valeurs des attributs :ils nont pas forcment le m"me nom % mais doivent "tre dfinis sur le m"me domaine;. S%nta&e : Select liste dattributs 'rom table1% table9 +,ere table1.attribut1 K table9.attribut9 .ttribut1 et attribut9 sont relies dans la base de donnes par un lien cl primaire8 cl tran!6re. Remar)ue ( : Si les noms des tables sont lon!s% il est possible dutiliser des tiquettes / ^

Select liste dattributs 'rom table1 @% table9 S +,ere @.attribut1 K S.attribut9 Remar)ue 0: Quand un m"me attribut fi!ure dans les deux tables% il faut indiquer la table en temps que prfixe. Vn attribut qui ne fi!ure dans uns seule table na pas besoin de prfixe. *xemple / select nom% $.numro from table1 $% table9 _ Jhere $.numro K _.numro order b1 nom /-(- !&ercices e re)u*tes e jointure B12 / .fficher pour chaque con!ressiste son numro% son nom et le nom de lhtel od il lo!e.

B1^ / A"me rsultat que dans B12% mais afficher en plus le nom de lor!anisme dont il dpend. Que remarquec8vous e

B93 / .fficher pour chaque con!ressiste son numro% son nom et le nom de lhtel. Bestituer cette liste par htel et par ordre alphabtique des con!ressistes.

13

B91 / A"me chose que pour B93% mais uniquement pour les con!ressistes des htels de 'iarritc.

/I- Les re)u*tes imbri)ues Les requ"tes imbriques sont bases sur le mot8cl I+ :vu au III; qui permet de slectionner des enre!istrements parmi une liste. Le principe consiste construire une sous8requ"te qui donne un rsultat quivalent une liste. *nsuite la requ"te principale permet de slectionner des li!nes dans la liste prcdemment construite. S%nta&e : Select 1 Bequ"te principale in 2select1 3

sous8requ"te

Le mot8cl I+ peut8"tre remplac par un oprateur de comparaison :K% OP% O%OK%P% PK;. (ans ce cas% le rsultat de la sous8requ"te ne consiste quen une seule *. Utilisation es re)u*tes imbri)ues pour raliser es jointures Lorsque le rsultat dune requ"te ne se trouve que dans une seule table% il est conseill de la raliser avec des requ"tes imbriques. *n effet% pour le S&'(% cette solution est beaucoup plus rapide. *xemple / si je veux connaRtre le nom et le prnom des con!ressistes envo1s par lor!anisme / le L1ce _aladon de Limo!es% je peux crire la requ"te suivante / S*L*-@ nom0con!ressiste% prnom0con!ressiste ,B)A -)+&B*SSIS@* GH*B* +a0or!anisme I+ : S*L*-@ +a0or!anisme ,B)A )B&.+ISA*0$.D*VB GH*B* nom0or!anisme K LL1ce _aladonL .+( adresse0or!anisme K LLimo!esL; La requ"te imbrique renvoie le na or!anisme pa1eur recherch et la premi6re requ"te permet de slectionner les con!ressistes dpendant de lor!anisme pa1eur ainsi obtenu. Le S&'( excute toujours en premier la requ"te imbrique.

11

Si lon avait voulu la m"me requ"te en faisant afficher le nom de lor!anisme pa1eur% cette solution naurait pas t adquate. Il aurait fallu crire une jointure comme dcrite au chapitre _. Utilisation es re)u*tes imbri)ues avec es 'onctions Les requ"tes utilisant les fonctions ._&% -)V+@% SVA% A.` et AI+ ne renvoient quune seule valeur. -es requ"tes peuvent "tre utilises comme sous requ"tes afin que lon puisse faire des comparaisons en utilisant les oprateurs classiques / K% O %P% OP> *xemple / select +a0$roduit% nom0$roduit % prix0produit K :select max:prix0produit; from $roduit; $ermet dafficher les caractristiques du produit le plus cher.

/(-(- !&ercices e re)u*tes e re)u*tes imbri)ues B99 / .fficher le nom et le prnom des con!ressistes allant au concert de #acc.

B9< / .fficher le nom et le prnom des con!ressistes nallant pas au tournoi de pelote basque.

B9M / .fficher le nom et le prnom des con!ressistes a1ant choisi une chambre dhtel dont le montant par jour est suprieur \3 euros :prix chambre F prix supplmentaire;.

19

B97 / .fficher le nom et le prnom des con!ressistes a1ant choisi lactivit la moins ch6re.

!&emples e sites Internet prsentant un cours SQL : http/XXsql.developpec.comX/ le cours complet de SQL de . f. http/XXceri!.efp!.inp!.frXtutorielXbases8de8donneesXchap12.htm http/XXJebtic.free.frXsqlX http/XXlan!a!esql.free.frXaccueil.php/ un petit site amusant% assec limit.

1<

4!4!5##ermes 4o le relationnel 6ase e onnes relationnelle D'initions )r!anisation des donnes sous forme de tables permettant leur manipulation par des oprateurs de lal!6bre relationnelle 'ase de donnes structure selon un mod6le relationnel et r!i par un S1st6me de &estion de 'ases de (onnes Belationnel :S&'(8B;. *xemples de S&'(8B libres / 'ase de )pen )ffice% A1Sql% $ost!reSQL> *xemples de S&'(8B propritaires / .ccess% SQL Server% )racle% ('9% Informix> *lle consiste crer une nouvelle table% rsultat d Tun opration sur une ou plusieurs tables. -es oprations sont ensemblistes :union% intersection% diffrence% produit cartsien; ou relationnelles :slection% projection% jointure% division;. +om dune information stocSe dans une table. -orrespond une li!ne dune table% .ttribut ou ensemble dattributs qui permet didentifier un tuple de mani6re unique. .ttribut ou ensemble dattributs faisant rfrence une cl primaire dune autre table. Vne cl tran!6re doit toujours faire rfrence une cl primaire existante. $ermet de rechercher des li!nes dans une table partir dun crit6re de slection. La rsultat est identique la table de dpart. $ermet de slectionner des colonnes dune table. g lissue de cette opration% la table rsultat peut contenir des tuples identiques. $ermet de combiner 9 tables en se basant le plus souvent sur l!alit de la cl tran!6re de lune et la cl primaire de lautre. La table rsultat contient les attributs des 9 tables de dpart.

-pration relationnelle

7ttribut 2c,amp38 2colonne3 #uple 2ligne38 2occurrence3 "l primaire "l trangre Intgrit r'rentielle Slection 9rojection :ointure

1M

You might also like