Err Lang Ages Ql

  • Upload
    fihsef

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

  • 7/22/2019 Err Lang Ages Ql

    1/14

    Le langage SQL Rappels

    Description du thme : Prsentation des principales notions ncessaires pour raliser des requtesSQL

    Mots-cls : Bases de donnes relationnelles, Open Office, champs,relations, requtes, oprations relationnelles

    Niveau : Ce cours peut tre commenc en 1reSTG (les parties I III comprise! et peut tre complt en TGSI ou TC"#$

    Domaine(s : Informatique de %estion

    !"pe(s de ressource : Support de cours & tra'au l'es en autonomie#$%ecti&s) *e lan%a%e S+* ) linstruction S#*#CT pour traduire les

    oprations de slection, de pro-ection et de -ointure$

    Sance(s dveloppe(s :Place de la squence dans la pro'ressionannuelle :

    #n fin de 1re STG ou au d.ut de terminale$

    Pr-requis : /a0trise du schma relationnel$ Connaissance des .ases dedonnes relationnelles$

    #utils : /icrosoft ccess ou Open Office$Or% Base$2n 'ido pro-ecteur pour l'aluation des tra'au des l'esou pour la prsentation du corri%$

    onditions de ralisation : 2n ordinateur par personne$*e cours peut tre di'is en 3 parties )*es parties I, II et III peu'ent tre ensei%nes dune traite$

    4uis, on peut a.order la partie I5$6e mme ensuite, on peut traiter sparment la partie 5,puis la partie 5I$

    )valuation : "ormati'e!emps appro*imati& de ralisation : 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$

    omptences +,i : 3&Crer, produire, traiter, eploiter des donnes$

    Dossier pro&esseur :

    - orri'requtes.doc : corri% desrequtes demandes

    Dossier lve :

    *es fichiers /na$asesql.od$) .ase de donnes Base /na$ase.md$) .ase de donnes ccess

    ontact : claude.pasqualini0ac-limo'es.&r

    1

  • 7/22/2019 Err Lang Ages Ql

    2/14

    Le but de ce propos nest pas de prsenter un nouveau cours sur SQL. Il en existe beaucoupqui 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 sapro!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 dedonnes nabase est dans votre dossier sous le nom / anabase0sql.odb ainsi que le corri! desexercices / corri!0requetes.doc

    $our illustrer ce chapitre% jai dcid de mappuer sur un cas cr dans les annes 23 et bienconnu 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 sessionsdune 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 lescon!ressistes et leur or!anisme paeur% les htels ainsi que les activits proposes.

    Le mod6le relationnel obtenu est le suivant /

    9

  • 7/22/2019 Err Lang Ages Ql

    3/14

    I- Rappels sur lalgbre relationnelle

    Il faut rappeler que le mod6le relationnel est bas sur le mod6le mathmatique. Il existe deuxtpes doprations que lon peut effectuer sur les tables /

    8 les oprations ensemblistes :union% intersection et diffrence.

    8 les oprations relationnelles :projection% slection% jointure% division.

    +ous nous limiterons ici aux oprations relationnelles /

    8 la projection : son objectif est de fournir le rsultat dune requ"te en supprimantles attributs dune table.

    8 La slection : elle a pour but dextraire des enre!istrements :li!nes; dune tablerpondant un ou plusieurs crit6res de recherche.

    8 La jointure : cest la mise en correspondance de 9 tables selon un crit6re.

    Utilisation 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 :selectliste attributs 'romtable =order b 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 etprnom0con!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 suitedattributs derri6re le mot8cl )B(*B 'D.

  • 7/22/2019 Err Lang Ages Ql

    4/14

    $ar dfaut le tri est croissant. Le mot8cl (*S- plac la suite du nom de lattribut permet deraliser un tri dcroissant.

    )n peut afficher !alement le rsultat dun calcul / une expression arithmtique faisantintervenir 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+-@ lasuite 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 'romtable +,ere condition.

    Le crit6re de slection :condition; peut faire intervenir un attribut% un oprateur et uneconstante.

    Le plus souvent% la projection et la slection sont composes /

    S%nta&e :selectliste attributs 'romtable +,ere condition.

    *xemple/ select from con!ressiste Jhere (B*SS*0-)+&B*SSIS@* K St #uniendonne le rsultat suivant /

    M

  • 7/22/2019 Err Lang Ages Ql

    5/14

    (ans certains S&'(% le caract6re N peut "tre remplac par le caract6re .

    !&emples oprateurs :

    pration prateur SQL !&emple "ommentaires

    *st !al K Jhere numro K 13(iffrent de OP ou K Jhere numro OP 13

    Suprieur PSuprieur ou !al PKInfrieur OInfrieur ou !al OK*ntre deux valeurs 'etJeen > and Ghere prix betJeen

    17 and 93Les bornes sontIncluses

    -ontient :pour unechaRne de caract6res;

    Lie Ghere nom lie TN

    Becherche des nomscommenUant par laletter

    +e contient pas +ot lie

    *st vide Is +VLL+est pas vide Is not +VLL*t nd Ghere adresse K

    TLimo!es and+um0or!anisme isnull

    )u )r Ghere adresse KTLimo!esor adresse KTSt #unien

    +on +ot(ans la liste In Ghere ville

    in:4 Limo!es 5% 4 St#unien 5% 4 -o!nac 5;

    Becherche les villes

    dans la liste qui suit lemot8cl I+.

    Rec,erc,e "aractre !&emple "ommentaires

    @ous les attributs Select >

    (un attribut non rensei!n +VLL >Jhere adresse is +VLL dresse nonrensei!ne

    (un caract6re dans une chaRne 8 > Jhere nom lie Tt8t8T Le nom contient un t*n 16reet en

  • 7/22/2019 Err Lang Ages Ql

    6/14

    .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( aaaa8mm8jj 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 aant lieu le 7 ou le \ juin 9332.

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

    [

  • 7/22/2019 Err Lang Ages Ql

    7/14

    B2 / fficher la liste des htels dont le prix participant est compris entre

  • 7/22/2019 Err Lang Ages Ql

    8/14

    I/- Les 'onctions

    Il existe de nombreuses possibilits de calcul !rEce certaines fonctions. Les principalessont /

    _& / moenne de valeurs-)V+@ / nombre de valeursSVA / somme de valeursA` / valeur maximaleAI+ / 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 moenne des prixtotaux par htel.S*L*-@ -)V+@:; ,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 tchoisi 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*-@ +0H@*L% -)V+@: ; ,B)A -)+&B*SSIS@* &B)V$ 'D +0H@*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 nest pas vraie.

    La clause &B)V$ 'D est obli!atoire d6s lors quil a la fois des attributs et des fonctionsde 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 neslectionner 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.

    2

  • 7/22/2019 Err Lang Ages Ql

    9/14

    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 desli!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*-@ +0H@*L% -)V+@: ; ,B)A -)+&B*SSIS@* &B)V$ 'D +0H@*L H_I+& -)V+@:;O13.

    I/-(- !&ercices e re)u*tes avec 'onctions

    B1M / fficher le nombre total de con!ressistes.

    B17 / fficher le prix moen dune chambre 'iarrit et la m"me chose pour lessupplments.

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

    B1\ / $our chaque con!ressiste participant plus de 9 activits% afficher la moenne dunombre de personnes.

    /- 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 desvaleurs des attributs :ils nont pas forcment le m"me nom % mais doivent "tre dfinis sur lem"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 cltran!6re.

    Remar)ue ( : Si les noms des tables sont lon!s% il est possible dutiliser des tiquettes /

    ^

  • 7/22/2019 Err Lang Ages Ql

    10/14

    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 entemps 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 orderb nom

    /-(- !&ercices e re)u*tes e jointure

    B12 / fficher pour chaque con!ressiste son numro% son nom et le nom de lhtel o il lo!e.

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

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

    13

  • 7/22/2019 Err Lang Ages Ql

    11/14

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

    /I- Les re)u*tes imbri)ues

    Les requ"tes imbriques sont bases sur le mot8cl I+ :vu au III; qui permet de slectionnerdes 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 prcdemmentconstruite.

    S%nta&e : Select 1 in 2select1 3

    Bequ"te principale sous8requ"te

    Le mot8cl I+ peut8"tre remplac par un oprateur de comparaison :K% OP% O%OK%P% PK;. (ansce 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 laraliser 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 envos parlor!anisme / le Lce _aladon de Limo!es% je peux crire la requ"te suivante /

    S*L*-@ nom0con!ressiste% prnom0con!ressiste,B)A -)+&B*SSIS@*GH*B* +0or!anisme I+ : S*L*-@ +0or!anisme ,B)A )B&+ISA*0$D*VB

    GH*B* nom0or!anisme K Lce _aladon+( adresse0or!anisme K Limo!es;

    La requ"te imbrique renvoie le n or!anisme paeur recherch et la premi6re requ"te permetde slectionner les con!ressistes dpendant de lor!anisme paeur ainsi obtenu.

    Le S&'( excute toujours en premier la requ"te imbrique.

    11

  • 7/22/2019 Err Lang Ages Ql

    12/14

    Si lon avait voulu la m"me requ"te en faisant afficher le nom de lor!anisme paeur% cettesolution 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 quuneseule valeur.

    -es requ"tes peuvent "tre utilises comme sous requ"tes afin que lon puisse faire descomparaisons en utilisant les oprateurs classiques / K% O %P% OP>

    *xemple / select +0$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 #a.

    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 aant choisi une chambre dhtel dont lemontant par jour est suprieur \3 euros :prix chambre F prix supplmentaire;.

    19

  • 7/22/2019 Err Lang Ages Ql

    13/14

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

    !&emples e sites Internet prsentant un cours SQL :

    http/XXsql.developpe.comX/le cours complet de SQL de .

    http/XXceri!.efp!.inp!.frXtutorielXbases8de8donneesXchap12.htm

    http/XXJebtic.free.frXsqlX

    http/XXlan!a!esql.free.frXaccueil.php/ un petit site amusant% asse limit.

    1

  • 7/22/2019 Err Lang Ages Ql

    14/14

    4!4!5#

    #ermes D'initions

    4ole relationnel )r!anisation des donnes sous forme de

    tables permettant leur manipulation par desoprateurs de lal!6bre relationnelle

    6ase e onnes relationnelle 'ase de donnes structure selon un mod6lerelationnel et r!i par un Sst6me de &estionde 'ases de (onnes Belationnel :S&'(8B;.*xemples de S&'(8B libres /'ase de )pen )ffice% ASql% $ost!reSQL>*xemples de S&'(8B propritaires / ccess%SQL Server% )racle% ('9% Informix>

    pration relationnelle *lle consiste crer une nouvelle table%rsultat d Tun opration sur une ou plusieurs

    tables.-es oprations sont ensemblistes :union%intersection% diffrence% produit cartsien; ourelationnelles :slection% projection% jointure%division;.

    7ttribut 2c,amp38 2colonne3 +om dune information stoce dans unetable.

    #uple 2ligne38 2occurrence3 -orrespond une li!ne dune table%"l primaire ttribut ou ensemble dattributs qui permet

    didentifier un tuple de mani6re unique."l trangre ttribut ou ensemble dattributs faisantrfrence une cl primaire dune autre table.

    Intgrit r'rentielle Vne cl tran!6re doit toujours faire rfrence une cl primaire existante.

    Slection $ermet de rechercher des li!nes dans unetable partir dun crit6re de slection. Larsultat est identique la table de dpart.

    9rojection $ermet de slectionner des colonnes dunetable. g lissue de cette opration% la tablersultat peut contenir des tuples identiques.

    ointure $ermet de combiner 9 tables en se basant leplus souvent sur l!alit de la cl tran!6rede lune et la cl primaire de lautre.La table rsultat contient les attributs des 9tables de dpart.

    1M