Documente Academic
Documente Profesional
Documente Cultură
LeSQLdeAZSGBD,SQLettypesdedonnes
Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts
Accueil
SGBD
ALM
4D
Java
.NET
Access
Dv.Web
BigData
AccueilSGBD
EDI
DB2
ForumsSGBD
Programmation
Firebird
FAQsSGBD
SGBD
InterBase
Office
MySQL
TutorielsSGBD
SQL
Solutionsd'entreprise
NoSQL
PostgreSQL
OutilsSGBD
Applications
Oracle
Mobiles
Sybase
Systmes
SQLServer
LivresSGBDetSQL
LESQLdeAZ:1erepartiebasesdedonnes,SQLettypesdedonnes
Voicilepremierchapitred'unlongarticleconcernantleSQLetsonimplmentationdanslesSGBDlespluscourants(Paradox,
Access,Oracle,SQLServer,Sybase).
ToutlemondeconnatleSQL,maisl'avezvoussuffisammentfrquentpourentirertoutel'essence?
Danscetarticle,nousallonsvoirl'historiquedecelangageetsesdiffrentescomposantes.
Danslessuivants,nousverronsdansl'ordrelamanipulationdesdonnesl'aidedescommandesSELECT,INSERT,UPDATE,
DELETE,puislacrationdesstructuresdebasesdedonnesavecCREATE,ALTER,DROPetenfinl'attributionetlarvocationdes
droits(GRANTetREVOKE).
Maisaufait,leSQL,bienttmort?Passisr!
Articlelu69599fois.
L'auteur
SQLPro
L'article
Publile26aot2003
Prambule
Publicvis:dbutant
ParlerduSQLdenosjourscommed'unenouveaut,seraitunegageurecependant,nefautilpasvoirencetindestructible
Lienssociaux
langage,unetentativeunpeutardive,maissouhaitable,autraversdesdiffrentsmiddlewaredisponibles,destandardisationd'un
moded'interrogationdesdonnes?
ForceestdeconstaterquemmelesbasesdedonnesobjetetlewebsemettentauSQL.Lepoidsdupasssansdoute...
Maisalorsquefaire?SqueezerSQLous'enaccommoder?
Ilyaplusd'unevingtained'annesleCOBOLtait,disaiton,assurd'unemortcertaineetcourtterme.Aujourd'huiledfunt
estencorehaletantbienquedfrachi.EnseratildemmepourleSQL?Toutlelaissesupposer!
1.SQLunlangage?
Voustrouverezdescomplmentsd'informationsurlesujetauxpages2951del'ouvrage"SQL",collection"LaRfrence",
CampusPressditeur.
Etd'abord,SQLestilunvrailangage?
Sil'ondoitacceptercemotausensinformatiqueduterme,ilsembledifficilededireouitantSQLestloindelastructureetdes
possibilitsd'unlangagedeprogrammationcourant.Pointdevariable,pointdeprocdureoudefonctionPourtantils'agitbiende
formerdesphrasesquiserontcompilesafind'excuterdestraitements.
MmesiSQLs'estdotaufildutempsd'extensions,commelapossibilitdeparamtrerlesrequtes,ilyadeslacunes
importantesquisontautantdefreinsapntration.ParexempleSQLnesaittrercursifalorsquecemoded'excutionest
ncessairepourrsoudreunefrangeimportantedeproblmes,notammentceuxpourtraiterlesarbresoulesgraphes.
EnfaitSQLestunlangagedetype"dclaratif".Onspcifiecequel'onveutobteniroufaireetc'estlamachinequidcide
commentelledoitl'excuter.Pourcertains,SQLestperucommeunpisallertandisqued'autresprfrentl'viterouretarderau
plusl'inluctablemomentosonapparitionseraincontournable.
LadiffrencefondamentaleentreleslangagescourantscommeCouPascal,quisontdeslangagesprocduraux,rsidedanslefait
qu'aveccesderniers,vousindiquezl'ensembledesinstructionsncessairestraiterunproblme.Vousgardezainsiunecertaine
matrisesurlecycled'excutionetl'enchanementdesdiffrentestchesd'unprogrammevousestparfaitementconnu.En
revanche,dansSQLvousn'avez,etd'ailleursnedevez,pasavoirlamoindreidedecommentlamachineexcutevotredemande,
nimmedansquelordreelledcomposeletraitementdelarequteendiffrentestches,nid'ailleursmmecommentelleles
synchronise.
Lorsd'uneextractionconcernantplusieurstables,lemoteurrelationnelpourraitparfaitementlancerplusieurstraitementsen
paralllespourextrairelesdonnesdechacunedestables,puiseffectuerlesjointuresdesdiffrentestablesrsultantesen
fonctiondel'ordredeterminaisondesextractions...
C'estpourquoi,lesmoteursrelationnelsincluentdesmodulesd'optimisationlogiqueetparfoisstatistique.
Ainsiunoptimiseurlogiqueprfreratraiterenpremierlesclausesexcluantdelarponseunmaximumdedonnes,tandisqu'un
optimiseurstatistiquecommencerapartraiterlestablesdeplusfaiblevolume.
Slectionnez
Exemple:
Soitunetablecontenantlepersonneldelasocit"VIVELESQL"etuneautrecontenant
lessalairesmensuelsdesditsemploys.
"VIVELESQL"compte1000employssoitautantdelignesdanslatabledupersonnel,et
http://sqlpro.developpez.com/cours/sqlaz/fondements/
1/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
lamoyennededured'emploitantde6ans,latabledessalairescomptedoncenviron
72000lignes.
Soitlarequtesuivante:rechercherlesemploysdontlenomcommenceparZouquisont
domicilisTrifouillyetquionteuaumoinsunsalairesuprieur50000Francs.
*Unoptimiseurlogiquecommenceraimmanquablementpartraiterlatabledessalaires
puiscelledesemploys.
*Unoptimiseurstatistiquecommencerapartraiterlesemployspuislessalaires.
Nouspauvreshumains,aurionsimmdiatementtraitlatabledessalaires,carceniveau
d'molumentilnedevraitpasyavoirgrandmondedanslatabledessalaris
Ehbien,croyezmoioupascertainsoptimiseursstatistiquesauraientetlammeapprciation!
Eneffetlesplusperformantsnesecontententpasseulementdeconserverlenombredelignesou
levolumedesdonnesd'unetable,maisaussilesmoyennes,mdianes,maximumsetminimumsde
certainescolonnes,voirmmelenombredevaleursdistinctes(indicededispersion)ainsique
lenombred'occurrencesdesvaleurslesplusfrquentes,notammentpourlescolonnespourvues
d'index...C'estlecasenparticulierduSGBDRINGRES.
Bref,pourconclurecettebrveprsentationdeSQL,nouspouvonsaffirmerque,malgrsesdfauts,etenattendantunfutur
langageobjetpourl'interrogationdesdonnes,incluanttouslesmcanismesdynamiquesetbienentendularcursivit,ilnous
fautcontinuerutilisersagementSQL,dumieuxquenouspouvons,enrendantainsihommageaquelquesunsdesescrateurs...
2.SQLunehistoire...
Noussommesen1970.LedocteurCodd,unchercheurd'IBMSanJos,proposeunenouvellemanired'aborderletraitement
automatiquedel'information,sebasantsurlathoriedel'algbrerelationnel(thoriedesensemblesetlogiquedesprdicats).
Cettepropositionestfaiteafindegarantiruneplusgrandeindpendanceentrelathorieetl'implmentationphysiquedesdonnes
auseindesmachines.C'estainsiquenatrons,verslafindesannes70,lespremiresapplicationsbasessurlapropositionde
TedCodd,connuesdenosjourssousl'acronymeSGBDR(signifiantSystmedeGestiondeBasesdeDonnesRelationnelles).
Danscettemmepriode,PeterCHENtenteuneapprochepragmatiqueetconceptuelledutraitementautomatiquedesdonnesen
proposantlemodleEntitAssociationcommeoutildemodlisation.Noussommesen1976.
Enparallle,diffrentschercheurstravaillentralisercequeserontlesSGBDRd'aujourd'hui:citonsentreautresl'quipede
GeneWongl'universitdeBerkeleyquientameleprojetINGRESen1972,eten1975proposelelangageQUELcommeoutil
d'interrogationdesdonnes(aucunordredemisejourdesdonnesn'yfigure).
DemmeNol1974dmarrechezIBMleprojetquiporteralenomdeSystemR,etdonneracommelangaged'interrogation
SEQUEL(StructuredEnglishQUEryLangage)en1976.
Lorsd'uneconfrenceinternationaleStockolm(IFIPCongres),LarryEllison,dirigeantd'unepetiteentrepriseappeleSoftware
DevelopmentLaboratoriesentendparlerduprojetetdulangaged'interrogationetdemanipulationdesdonnes.Ilrentreen
contactavecleschercheursd'IBM.Quelquesannesaprs,LarryEllisonsortlepremierSGBDRcommercialisetchangelenom
desasocit.Elles'appelleradsormaisOracle...
IBM,poursapart,sortirauneversioncommercialebienaprscelled'Oracle,cequiferadirel'undesresponsablesduprojetque
"celavousmontrecombiendetempsilfautIBMpourfairen'importequoi...".FinalementlapremireinstallationdeSystemR
estraliseen1977chezPratt&Whitney,etdjlescommandesdulangaged'interrogationsesonttoffesdequelques
judicieusestechniquesprconisesparOracle,commelagestiondescurseurs.
Aummemomentapparaissentd'autreslangagesd'interrogationcommeQBEdeZloof(IBM1977)reprispourParadoxparAnsa
Software,ouREQUESTdeFredDamerau(bassurlelangagenaturel)ouencoreRENDEZVOUS(1974)del'quipedeTedCodd
ainsiqueSQUARE(Boyce1975).
MaislepointcritiquedulangageSEQUELportesurl'implmentationdu...rien!Oupluttdevraisjediredunul!!!
FinalementlapremireralisationconnuesouslenomdeSQL(82)voitlejouraprsl'arrivedeDB2,uneavancesignificative
duSystemRd'IBMdatantdemars1979.
OnpeutdoncdirequelelangageSQLestnen1979,maisbaptisSQLen1982.EndfinitiveSQLavingtans,et,
commeleditlachanson...onn'apastouslesjours20ans...
Et20anspourlesunsasuffit!,pourlesautresasefte...
2.1.SQLunenorme
NotonsqueSQLseranormalisquatrereprises:1986(SQL86ANSI),1989(ISOetANSI)et1992(SQL2ISOetANSI)et
enfin1999(SQL:1999ISO)souventapelltort(ycomprisparmoimme!)SQL3.Acejour,aucunSGBDRn'aimplmentla
totalitdesspcificationsdelanormeactuellementenvigueur.Maisjedoisdirequelesimple(?)SELECTestargumentde
quelques300pagesdespcificationssyntaxiquesdansledernierdocumentnormatif...
Nanmoins,laversionSQL2(1992)estlaversionverslaquelletouteslesimplmentationstendent.C'estpourquoinousnous
baseronssurSQL2.
Anoter,lafuturenormeSQL:2003,sortiraenjuillet2003.
2.2.SQLunstandard
MmesiSQLestconsidrcommelestandarddetouteslesbasesdedonnesrelationnellesetcommercialises,iln'enrestepas
moinsvraiquechaquediteurtenddveloppersonpropredialecte,c'estdirerajouterdeslmentshorsdelanorme.Soit
fonctionnellementidentiquesmaisdesyntaxediffrentes(leLIKEd'Accessenestl'exempleleplusstupide!)soit
fonctionnellementnouveau(leCONNECTBYd'Oraclepourlarcursivitparexemple).Ilestalorstrsdifficiledeporterunebase
dedonnesSQLd'unserveurl'autre.C'estunmoindremalsil'onarespectaumaximumlanorme,maisilestdenotorit
absoluequelorsquel'lmentnormatifestprsentdansleSGBDRavecunlmentspcifiqueceseratoujoursl'lment
spcifiquequiseraproposetdocumentaudtrimentdelanorme!
Exemple,lafonctionCURRENT_TIMESTAMP,bienprsentedansMSSQLServer,n'estpasspcifidanslalistedesfonctions
temporelledel'aideenligne!!!
http://sqlpro.developpez.com/cours/sqlaz/fondements/
2/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
Deplus,lepluspetitdnominateurcommunentresles4poidslourdsdel'ditionquesontOracle,Sybase(ASE),Microsoft(SQL
Server)etIBM(DB2)esttelqu'ilestfranchementimpossiblederaliserlamoindrebasededonnescompatibleentreces
diffrentesimplmentations,saufn'ystockerquedesdonnesnumriques!!!
PourchaqueSGBDR,onparlealorsdedialecte.IlyadoncledialecteSQLd'Oracle,ledialecteSQLdeSybase...etc.
Dansunexcellentarticle,PeterGulutzanfaitlepointsurl'essentieldecequiestnormatifchezlesprincipauxditeursdeSGBDR:
http://www.dbazine.com/gulutzan3.html
Etfustigeleurcomportement,similaireceluidesconstructeursd'ordinateursenmatired'OSUNIXincompatibleetetqui
maintenantpleurentchaudeslarmesdevantlerouleaucompresseur"Linux"!
Uneautretude,parMichaelM.GormanmontrequelavolontdecesditeursdeSGBDRetleurintrtsmercantilescourtevue
estincompatibleaveclerespectdesstandards...
Aliredonc:http://www.tdan.com/i016hy01.htm
Nousavonsaussidmontrqu'unemmetablecresurdiffrentsSGBDRaveclesmmesdonnesn'avaitparforcmentle
mmecomportementauregarddusimpleSELECTdufaitdesjeuxdecaractresetcollationspardfaut.OrtouslesSGBDRne
sontpasparamtrablesceniveauetceuxquilesont,neprsententpasengnrallesmmesoffresencettematire.
Alire:Unequestiondecaractres...
Enfin,pourtousceuxquiveulentconnatrelanormecompareaudialectedeleurSGBDRfavori,ilsuffitdelireletableaude
comparaisondesfonctionsdeSQL:TouteslesfonctionsdeSQL
3.RemarquesprliminairessurlesSGBDR
Avanttout,noussupposeronsconnueslesnotionsde"basesdedonnes","table","colonne","ligne","clef","index","intgrit
rfrentielle"et"transaction",mmesicestermes,etlesmcanismesqu'ilsinduisentserontplusamplementdcritsaufuret
mesuredevotrelecture.
Voiciquelquespointsqu'ilconvientd'avoirl'espritlorsquel'ontravaillesurdesbasesdedonnes:
IlexisteunegrandeindpendanceentrelacoucheabstraitequeconstitueleSGBDRetlacouchephysiquequesontleou
lesfichiersconstituantunebasededonnes.Enl'occurrenceilestdraisonnabledecroirequelesfichierssontarrangs
dansl'ordredescolonneslorsdelacrationdestablesetquelesdonnessontrangesdansl'ordredeleurinsertionoude
lavaleurdelaclef.
Iln'existepasd'ordrespcifiquepourlestablesdansunebaseoupourlescolonnesdansunetable,mmesileSGBDR
endonnel'apparenceenrenvoyantassezgnralementl'ordretablilorsdelacration(notammentpourlescolonnes).Par
consquentlestables,colonnes,index...doiventtrereprsparleurnometuniquementparcetidentifiant.
Lesdonnessontsystmatiquementprsentessousformedetables,etcelaquelquesoitlersultatattendu.Pour
autantlatableconstitueparlarponsen'estpasforcmentunetablepersistante,cequisignifiequesivousvoulez
conserverlesdonnesd'unerequtepourenfaireusageultrieurement,ilfaudracrerunobjetdanslabase(tableouvue)
afind'yplacerlesdonnesextraites.
Lalogiquesousjacenteauxbasesdedonnesreposesurl'algbrerelationnelluimmebassurlathoriedesensembles.
Ilconvientdoncdepenserentermed'ensembleetdelogiqueetnonentermed'oprationdenatureatomique.Acesujet,il
estbondeserappelerl'usagedespatates(oudiagrammesdeWen)lorsquel'on"sche"surunerequte.
Dufaitdel'existenced'optimiseurs,lamanired'crireunerequtepeud'influenceengnralsurlaqualitdeson
excution.Dansunpremiertempsilvautmieuxseconsacrerlarsolutionduproblmequed'essayerdesavoirsila
clause"bidule"estplusgourmandeenressourcelorsdesonexcutionquelaclause"truc".Nanmoinsl'optimisationde
l'crituredesrequtesseraabordedansunarticledelasrie.
4.LessubdivisionsduSQL
LeSQLcomporte5grandesparties,quipermettent:ladfinitiondeslmentsd'unebasededonnes(tables,colonnes,
clefs,index,contraintes...),lamanipulationdesdonnes(insertion,suppression,modification,extraction),lagestiondes
droitsd'accsauxdonnes(acquisitionetrvocationdesdroits),lagestiondestransactionsetenfinleSQLintgr.La
plupartdutemps,danslesbasesdedonnes"fichier"(dBase,Paradox...)leSQLn'existequ'auniveaudelamanipulationdes
donnes,etcesontd'autresordresspcifiquesqu'ilfaudrautiliserpourcrerdesbases,destables,desindexougrerdesdroits
d'accs.
Certainsauteursneconsidrentque3subdivisionsincluantlagestiondestransactionsauseindelamanipulationdesdonnes...
CependantceseraitrestreindrelesfonctionnalitsdecertainsSGBDRcapabledegrerdestransactionscomprenantaussides
ordresSQLdetypedfinitiondesdonnesouencoregestiondesdroitsd'accs!
http://sqlpro.developpez.com/cours/sqlaz/fondements/
3/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
4.1.DDL:"DataDefinitionLanguage"
C'estlapartieduSQLquipermetdecrerdesbasesdedonnes,destables,desindex,descontraintes
Ellepossdelescommandesdebasesuivante:
Slectionnez
CREATE,ALTER,DROP
Quipermettentrespectivementdecrer,modifier,supprimerunlmentdelabase.
4.2.DML:"DataManipulationLanguage"
C'estlapartieduSQLquis'occupedetraiterlesdonnes.
Ellecomportelescommandesdebasesuivantes:
Slectionnez
INSERT,UPDATE,DELETE,SELECT
Quipermettentrespectivementd'insrer,demodifierdesupprimeretd'extrairedesdonnes.
4.3.DCL:"DataControlLanguage"
C'estlapartieduSQLquis'occupedegrerlesdroitsd'accsauxtables.
Ellecomportelescommandesdebasesuivantes:
Slectionnez
GRANT,REVOKE
Quipermettentrespectivementd'attribueretdervoquerdesdroits.
4.4.TCL:"TransactionControlLanguage"
C'estlapartieduSQLchargdecontrlerlabonneexcutiondestransactions.
Ellecomportelescommandesdebasesuivantes:
Slectionnez
SETTRANSACTION,COMMIT,ROLLBACK
QuipermettentdegrerlespropritsACIDdestransactions.
4.5.SQLintgr:"EmbeddedSQL"
Ils'agitd'lmentsprocdurauxquel'onintgreunlangagehte:
Slectionnez
SET,DECLARECURSOR,OPEN,FETCH...
Leterme"ACID",nefaitpasrfrence,loins'enfautauLSD,maisplusbasiquementauxtermessuivants:
AAtomicit:unetransactions'effectueoupas(toutourien),iln'yapasdedemimesure.Parexemplel'augmentationdesprix
de10%detouslesarticlesd'unetabledesproduitsnesauraittreeffectuepartiellement,mmesilesystmeconnatunepanne
encoursd'excutiondelarequte.
CCohrence:lersultatouleschangementsinduitsparunetransactiondoiventimprativementprserverlacohrencedela
basededonnes.Parexemplelorsd'unefusiondesocit,laconcatnationdestablesdesclientsdesdiffrentesentitsnepeut
entranerlaprsencedeplusieursclientayantlemmeidentifiant.Ilfaudrarsoudrelesconflitsportantsurlenumrodeclient
avantd'oprerl'uniondesdeuxtables.
IIsolation:lestransactionssontisoleslesunesdesautres.Parexemplelamisejourdesprixdesarticlesneseravisible
pourd'autrestransactionsquesicesderniresontdmarraprslavalidationdelatransactiondemisejourdesdonnes.Iln'y
auradoncpasdevuepartielledesdonnespendanttouteladuredelatransactiondemisejour.
DDurabilit:unefoisvalide,unetransactiondoitperdurer,c'estdirequelesdonnessontpersistantesmmes'ils'ensuit
unedfaillancedanslesystme.Parexemple,dslorsqu'unetransactionatvalide,commelamisejourdesprix,les
donnesmodifiesdoiventtrephysiquementstockespourqu'encasdepanne,cesdonnessoientconservesdansl'tato
ellesonttspcifieslafindelatransaction.
Voicicequedisent,SbastienBRAU,ChristianCHANENAM,LouisLaurentANTIGNY,GilbertoDEVASCONCELOSsur
lespropritsACIDd'unSGBDR:
Slectionnez
Atomicit:sitoutsepassecorrectement,lesactionsdelatransactionsonttoutesvalides,sinon
onretournel'tatinitial.
L'unitdetravailestindivisible.Unetransactionnepeuttrepartiellementeffectue.
http://sqlpro.developpez.com/cours/sqlaz/fondements/
4/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
Cohrence:lepassagedel'tatinitiall'tatfinalrespectelacohrencedelabase.
Isolation:leseffetsdelatransactionnesontpasperceptiblestantquecellecin'estpastermine.
Unetransactionn'estpasaffecteparletraitementdesautrestransactions.
Durabilit:leseffetsdelatransactionsontdurable.
Rendretransparenteslacomplexitetlalocalisationdestraitementsetdesdonnes,toutenassurant
unbonniveaudeperformance,tellessontaujourd'huilesdemandesdesentreprisesetlesnouveaux
critressurlesquelss'arrtentleurschoix.
Pourassurerl'ensembledecesfonctionsdebase,lesSGBDRutilisentleprincipedelajournalisation:unfichierdit"journal",
historisetouteslestransactionsquelesutilisateurseffectuentetsurtoutleurtat:encours,validouannule.Unemisejour
n'estrellementeffectuequesilatransactionaboutit.Ainsiencasdepannedusystme,unerelecturedujournalpermetde
resynchroniserlabasededonnespourassurersacohrence.Demmeencasde"RollBack",lesinstructionsdelatransaction
sontlues"l'envers"afindertablirlesdonnestellesqu'ellesdevaienttrel'originedelatransaction.
5.ImplmentationphysiquedesSGBDR
Ilexistecejour,deuxtypescourantd'implmentationphysiquedesSGBDrelationnels.Ceuxquiutilisentunservicedefichiers
associsunprotocolederseauafind'accderauxdonnesetceuxquiutilisentuneapplicationcentralisediteserveurde
donnes.NouslesappelleronsSGBDR"fichier"etSGBDRclient/serveur(ouC/Senabrg).
5.1.SGBDR"fichier"
Leserviceesttrssimpleraliser:ils'agitdeplacerdansuneunitdestockagepartage(engnralundisqued'unserveurde
rseau)unouplusieursfichierspartageables.Unprogrammeprsentsurchaquepostedetravailassurel'interfacepourtraiterles
ordresSQLainsiquelevaetvientdesfichiersdedonnessurlerseau.
IlconvientdeprfrerdesSGBDRfortegranularitauniveaudesfichiers.Eneffetplusilyadefichierspourunemmebase
dedonnesetmoinslarequteencombreralerseau,puisqueseulslesfichiersncessaireslarequteserontvhiculssurle
rseau.
CesSGBDR"fichier"neproposentengnralpaslecontrledestransactions,etpeufrquemmentleDDLetleDCL.Ilssont,par
consquent,gnralementpeuACID!
LesplusconnussontceuxquisereposentsurlemodleXBase.CitonsparmilesprincipauxSGBDR"fichier":dBase,Paradox,
Foxpro,BTrieve,MySQL,GnralementbasssurlemodleISAMdefichierssquentielsindexs.
Avantage:simplicitdufonctionnement,cotpeulevvoiregratuit,formatdesfichiersouverts,administrationquasi
inexistante.
Inconvnient:faiblecapacitdestockage(quoiquecertains,commeParadox,acceptent2Godedonnespartable!!!),
encombrementdurseau,rarementdegestiondestransactions,faiblenombred'utilisateurs,faiblerobustesse,cohrencedes
donnesmoindre.
Accesssedistinguedulotentantassezproched'unserveurSQL:pourunebasededonnes,unseulfichieretunTCL.Maiscela
prsenteplusd'inconvnientsqued'avantages:eneffetpourinterrogerunepetitetabledequelquesenregistrementsauseinde
basededonnesde500Mo,ilfautrapportersurleposteclient,latotalitdufichierdelabasededonnes...Unnonsensabsolu,
queMicrosoftpalienintimantsesutilisateursdepasserSQLServerdsquelenombred'utilisateursdpasse10!
5.2.SGBDR"Client/Serveur"
Leserviceconsistefairetournersurunserveurphysique,unmoteurquiassureunerelativeindpendanceentrelesdonneset
lesdemandesdetraitementdel'informationvenantdesdiffrentesapplications:unposteclientenvoiel'aided'unprotocolede
rseau,unordreSQL(unesriedetramesrseau),quiestexcut,lemoteurrenvoielesdonnes.DeplusleSGBDRassuredes
fonctionsdegestionsd'utilisateursdemanireindpendanteauxdroitsgrsparl'OS.
AceniveauilconvientdeprfrerdesSGBDRC/Squipratiquent:leverrouillaged'enregistrementpluttqueleverrouillagede
page(vitezdoncSQLServer...),etceuxquitournentsurdenombreusesplatesformessystme(Oracle,Sybase...).Enfin
certainsSGBDRsontlivrsavecdesoutilsdesauvegardeetrestauration.
LesSGBDR"C/S"proposentengnrallatotalitdesservicesduSQL(contrledestransactions,DDLetDCL).Ilssont,par
consquent,pratiquementtousACID.EnfindeplusenplusdeSGBDorientsobjetsvoientlejour.Danscederniercas,ils
intgrentlaplupartdutempsleSQLenplusd'unlangagespcifiqued'interrogationbassurleconceptobjet(O,ObjectStore,
Objectivity,Ontos,Poet,Versant,ORION,GEMSTONE...)
LesserveursSQLC/Slesplusconnussont:Oracle,Sybase,Informix,DB2,SQLServer,Ingres,InterBase,SQLBase...
Avantage:grandecapacitdestockage,gestiondelaconcurrencedansunSIgrandnombred'utilisateurs,hautniveaude
paramtrage,meilleurerpartitiondelachargedusystme,indpendancevisvisdel'OS,gestiondestransactions,robustesse,
cohrencedesdonnesimportante.Possibilitdemonteenchargetrsimportanteenfonctiondestypesdeplateformes
supportes.
Inconvnient:lourdeurdanslecasdesolution"monoposte",complexitdufonctionnement,cotlevdeslicences,
administrationimportante,ncessitdemachinespuissantes.
NOTA:Pourensavoirplussurlesujet,lirel'tudecomparativesurlesSGBDRbasedefichieretceuxutilisantunmoteur
relationnel,intituleQuandfautilinvestirsurleclient/serveur?Onydiscuteaussidesdiffrentsmodesdeverrouillage...
6.Typededonnes
Dernierpointquenousallonsaborderdanscepremierarticle,lesdiffrentstypesdedonnesspcifisparSQLetleur
disponibilitsurles5systmesquenousavonsretenuspournotretude.
SelonlanormeISOdeSQL92
6.1.Typesalphanumriques
http://sqlpro.developpez.com/cours/sqlaz/fondements/
5/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
CHARACTER(ouCHAR):valeursalphadelongueurfixe
CHARACTERVARYING(ouVARCHARouCHARVARYING):valeuralphadelongueurmaximalefixe
Cestypesdedonnessontcodssur2octets(EBCDICouASCII)etondoitspcifierlalongueurdelachane.
Exemple:
Slectionnez
NOM_CLIENTCHAR(32)
OBSERVATIONSVARCHAR(32000)
NATIONALCHARACTER(ouNCHARouNATIONALCHAR):valeursalphadelongueurfixe
NATIONALCHARACTERVARYING(ouNCHARVARYINGouNATIONALCHARVARYING):valeuralphadelongueurmaximale
fixesurlejeudecaractredupays
Cestypesdedonnessontcodssur4octets(UNICODE)etondoitspcifierlalongueurdelachane.
Exemple:
Slectionnez
NOM_CLIENTNCHAR(32)
OBSERVATIONSNCHARVARYING(32000)
Nota:lavaleurmaximaledelalongueurestfonctionduSGBDR.
6.2.Typesnumriques
NUMERIC(ouDECIMALouDEC):nombredcimalreprsentationexactechelleetprcisionfacultatives
INTEGER(ouINT):entierlong
SMALLINT:entiercourt
FLOAT:relvirguleflottantedontlareprsentationestbinairechelleetprcisionobligatoire
REAL:relvirguleflottantedontlareprsentationestbinaire,defaibleprcision
DOUBLEPRECISION:relvirguleflottantedontlareprsentationestbinaire,degrandeprcision
BIT:chanedebitdelongueurfixe
BITVARYING:chanedebitdelongueurmaximale
PourlestypesrelsNUMERIC,DECIMAL,DECetFLOAT,ondoitspcifierlenombredechiffressignificatifsetlaprcisiondes
dcimalesaprslavirgule.
Exemple:
Slectionnez
NUMERIC(15,2)
signifiequelenombrecomporteraauplus15chiffressignificatifsdontdeuxdcimales.
ATTENTION:lechoixentreletypeDECIMAL(reprsentationexacte)etletypeFLOATouREAL(reprsentationbinaire)doittre
dictpardesconsidrationsfonctionnelles.Eneffet,pourdescalculscomptablesilestindispensabled'utiliserletypeDECIMAL
exempt,danslescalculsdetoutefractionparasitecapabled'entranerdeserreursd'arrondis.EnfaitletypeDECIMALsecomporte
commeunentierdanslequellavirgulen'estqu'unereprsentationpositionnelle.Enrevanchepourducalculscientifiqueon
prfrerautiliserletypeFLOAT,plusrapidedanslescalculs.
Exemple:
Slectionnez
SELECTCAST(3.14159ASFLOAT(16,4))ASPI_FLT,CAST(3.14159ASDECIMAL(16,4))ASPI_DEC
Slectionnez
PI_FLTPI_DEC
3.14158999999999993.1416
NOTA:onpeututiliserunenotationparticulirepourforcerletypageimplicite.Ils'agitd'unelettreprcdentlachane
transtyper.Leslettresautorises,sont:N(pourUnicode),Bpourbinary(chainede0et1)etXpourbinary(chainehexadcimale
constituesdecaractresallantde0F).
Exemple:
Slectionnez
SELECTN'toto'ASMY_NCHAR,B'01010111'ASMY_BINARY_BIT,X'F0A1'ASMY_BINARY_HEX
6.3.Typestemporels
http://sqlpro.developpez.com/cours/sqlaz/fondements/
6/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
DATE:dateducalendriergrgorien
TIME:tempssur24heures
TIMESTAMP:combindatetemps
INTERVAL:intervallededate/temps
Rappelonsquelesvaleursstockesdoiventavoirpourbaselecalendriergrgorienquiestenusagedepuis1582,datelaquelleil
aremplaclecalendrierjulien.Enmatiredetemps,lasynchronisations'effectueparrapportauTUoutempsuniversel(UTC:
UniversalTimeCoodinated)anciennementGMT(GreenwichMeanTime)l'ensembleayanttmisenplace,lorslaconfrencede
WashingtonDCen1884,pourviterquelescheminsdecheminsnesetlescopent.
ATTENTION:LestandardISOadoptpourleSQLreposesurleformatAAAAMMJJ.Ilestainsivalablejusqu'enl'an9999ou
AAAAestl'annesur4chiffres,MMlemoissurdeuxchiffres,etJJlejour.Pourl'heureleformatISOesthh:mm:ss.nnn(ntant
lenombredemillisecondes)
Exemple:
Slectionnez
1999032622:54:28.123
estle26mars199922h54m,28set123millisecondes.
Maispeudemoteursderequtesl'implmentedemanireaussiformelle...
LetypeINTERVALesttrsparticulier.IlestmalheureusementrarementprsentdanslesSGBDR.
Sadfinitionsefaitl'aidedelasyntaxesuivante:
Slectionnez
INTERVALprcision_minTO[prcision_max]
oprcision_minetprcision_maxpeuventprendrelesvaleurs:
Slectionnez
{YEAR|MONTH|DAY|HOUR|MINUTE|SECOND}
aveclaconditionsupplmentairesuivante:prcision_maxnepeuttrequ'unemesuretemporelleplusfinequeprcision_min.
Exemple:
Slectionnez
JOURSINTERVALDAY
TRIMESTREINTERVALMONTHTODAY
TACHEINTERVALHOURTOSECOND
DUREE_FILMINTERVALMINUTE
ATTENTION
VeuilleznoterquelesrceptaclesdevaleurstemporellesainsicrsparletypeINTERVALsontdesentiers,etqueleurvaleurest
contraintelorsqu'ilssontdfinisavecuneprcisionmaximumsurtousleslmentslescomposantsauflepremier.Ainsi,dansune
colonnedfinieparletypeINTERVALMONTHTODAY,onpourrastockerunevaleurde48moiset31jours,maispasunevaleur
de48moiset32jours.DemmedansunINTERVALHOURTOSECONDlavaleurenheureestillimite,maiscelleenminuteeten
secondenepeutdpasser59.
6.4.Types"BLOBS"(horsdustandardSQL2)
Longueurmaximaleprdtermine,donnedetypebinaire,textelongvoireformat,structureinterprtabledirectementparle
SGBDRouindirectementparaddonexternes(image,son,vido...).Attention:nesontpasnormaliss!
Ontrouvesouventleslmentssuivants:
TEXT:suitelonguedecaractresdelongueurindtermin
IMAGE:stockaged'imagedansunformatdtermin
OLE:stockaged'objetOLE(Windows)
6.5.Autrestypescourants,horsnormeSQL92
BOOLEAN(ouLOGICAL):curieusementletypelogique(ouencoreboolen)estabsentdelanorme.Onpeutencomprendre
aismentlesraisonsLapurelogiqueboolennenesauraittrerespectecausedelapossibilitofferteparSQLdegrerles
valeursnulles.Onauraitdoncaffaireunelogiquedite"3tats"quin'auraitplusriendel'algbreboolenne.Lanormepasse
doncsoussilence,etbonescientceproblmeetlaissechaquediteurdeSGBDRlesoindeconcevoirounonunboolen"sa
manire".
Onpeutparexempleimplmenterunteltypededonnes,enutilisantunecolonnedetypecaractrelongueur1,nonnulet
restreintdeuxvaleurs(V/FouencoreT/F).
MONEY:estunsoustypedutypeNUMERICavecunechellemaximaleetuneprcisiondedeuxchiffresaprslavirgule.
BYTES(ouBINARY):Typebinaire(octets)delongueurdevanttreprcise.Permetparexemplelestockaged'uncodebarre.
AUTOINC:entierincrmentautomatiquepartrigger.
6.6.Lesdomaines,oulacrationdetypesspcifiques
http://sqlpro.developpez.com/cours/sqlaz/fondements/
7/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
IlestpossibledecrerdenouveautypesdedonnespartirdetypesprexistantsenutilisantlanotiondeDOMAINE.
Danscecas,avantd'utiliserundomaine,ilfautlerecenserdanslabasel'aided'unordreCREATE:
Slectionnez
CREATEDOMAINnom_du_domaineAStype_de_donne
Exemple:
Slectionnez
CREATEDOMAINDOM_CODE_POSTALASCHAR(5)
Dslorsilnesuffiraplusqued'utilisercetypelaplacedeCHAR(5).
L'utilisationdesdomainespossdedenombreuxavantages:
ilspeuventfairel'objetdecontraintesglobales
ilspeuventtremodifis(cequimodifieletypedetouteslescolonnesdetableutilisantcedomained'unseulcoup!)
Exemple:
Slectionnez
ALTERDOMAINEDOM_CODE_POSTAL
ADDCONSTRAINTMIN_CPCHECK(VALUE>='01000')
Danscecaslecodepostalsaisiedevraauminimums'crire01000.Onpourraityajouterunecontraintemaximumdeforme
(VALUE<='99999').
NOTA:certainsSGBDRn'ontpasimplmentl'ordreCREATEDOMAIN.C'estlecasparexempledeSQLServer.Ainsi,ilfautaller
"trifouiller"lestablessystmespourinsrerunnouveautypededonnel'aidedecommandes"barbares"propreauSGBDR.
Exemple(SQLServer):
Slectionnez
sp_addtypeDOM_CODE_POSTAL,'CHAR(5)','null'
Undesimmensesavantagesdepasserpardesdfinitionsdedomainespluttqued'utiliserdirectementdestypesdedonnsest
quelesdomainesinduisentunebonnenormalisationdelaconceptionduschmadesdonnes.
Pourmapartj'utilisesouventlejeudedomainesuivant:
Slectionnez
D_KEY_INTEGERentier
D_TRIGRAMMEchar(3)
D_CODEchar(8)
D_LIBELLE_COURTvarchar(16)
D_LIBELLEvarchar(32)
D_LIBELLE_LONGvarchar(64)
D_TITREvarchar(128)
D_DATEdate
D_TEMPSdateTime
D_TEXTEtext
D_ADRESSEvarchar(32)/*spcifiqueauxadresses*/
D_BOOLEENsmallint(1)/*contraint0ou1,valeurpardfaut0*/
D_MONNAIE
D_ENTIER_COURT
D_ENTIER_LONG
D_REEL
...
7.Contraintesdedonnes
DanslaplupartdesSGBDRilestpossibledecontraindreleformatagedesdonnesl'aidedediffrentsmcanismes.
Parmilescontrainteslespluscourantesauseindesdonnesdelatableontrouve:
valeurminimum
valeurmaximum
valeurpardfaut
valeurobligatoire
valeurunique
clefprimaire
indexsecondaire
formatoumodle(parexemple3caractresmajusculessuivide2caractresnumriques)
tablederfrence(recopied'unevaleurd'unetabledansunchampd'uneautretableenslectionnantparlaclef)aussi
appelCHECKenSQL
listedechoix
Enfinentredeuxtableslies,ilestsouventncessairededfinirunecontraintederfrencequiobligeunenregistrement
rfrencparsacleftreprsentoudtruitenmmetempsquel'enregistrementvisestmodifi,insrousupprim.Ce
mcanismeestappelINTGRITRFRENTIELLE.
Exemple:Soitunebasededonnescontenantdeuxtables:CLIENTetCOMMANDEdotesdesstructuressuivantes...
http://sqlpro.developpez.com/cours/sqlaz/fondements/
8/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
CLIENT:
NO_CLIENT
INTEGER
NOM_CLIENT
CHAR(32)
COMMANDE:
REF_COMMANDE
CHAR(16)
DATE_COMMANDE
DATE
MONTANT_COMMANDE
MONEY
NO_CLIENT
INTEGER
Etdanslesquellesontrouvelesvaleurssuivantes:
CLIENT:
143
DUPONT
212
MARTIN
823
DUBOIS
COMMANDE:
199911
11/7/1999
1235.52
212
199912
17/7/1999
45234.63
823
199913
18/7/1999
5485.23
142
199914
21/7/1999
11542.23
212
Sil'ondtruitlalignedelatableCLIENTconcernantlen212(MARTIN)alorslesfactures199911et199914deviennent
orphelines.Ilfautdoncinterdirelasuppressiondececlienttantquedesrfrencesdececlientpersistentdanslatable
COMMANDE.
Demme,lechangementdelavaleurdelaclefNO_CLIENTferaitperdrelavaleurderfrencedulienentrelesdeuxtables,
moinsquelamodificationnesoitrpercutedanslatablefille.
NOTA:onparlealorsdetablesenrelationmre/filleouencorematre/esclave.
8.Triggersetprocduresstockes
EncequiconcernelesSGBDRenarchitectureclient/serveur,ilestcourantdetrouverdesmcanismesdetriggers(permettant
d'excuterducodeenfonctiond'unvnementsurvenantdansunetable)ainsiquedesprocduresstockes(ducodepouvanttre
dclenchtoutmoment).Danslesdeuxcas,c'estsurleserveur,etnondansleposteclientquelaprocdureouletrigger
s'effectue.
L'avantagersidedansuneplusgrandeintgritdumaniementdesdonnesetsouventd'untraitementplusrapidequesilemme
codetrournaitsurleposteclient.
Ainsilecalculd'untarifdansunetabledeprestationpeutdpendredeconditionsparfoiscomplexesnepouvanttrefacilement
excutel'aidederequtesSQL.DanscecasonaurarecoursaulangagehteduSGBDR,pourlequeloncrirauneprocdure
permettantdecalculercetarifpartirdediffrentsparamtres.
Maislaplupartdutemps,triggersetprocduresstockess'criventdansunlangagepropreauSGBDR(TransactSQLpourSQL
ServeretSybase,PL/SQLpourOracle,etc...).PourunaperudulangageTransactSQL,veuillezlirel'article"Unaperudu
langageTransactSQL".
Exemple:ondsirecalculerletarifd'adhsionunemutuellesantpourunefamillecomposed'unhommenle11/5/1950,
d'unecompagnenele21/6/1965,d'unfilsnle16/3/1992,d'unefillenle11/1/1981etd'unegrandmrecharge(ascendant)
nele21/12/1922,lefuturadhrentdsirantpayersacotisationaumois.
Lesbasestarifairestabliessontlessuivantes:
Table"TARIF_BASE":
TYPE
SEXE
ADHERENT
HOMME
16
AGE_MIN
1500
ADHERENT
HOMME
65
1800
ADHERENT
FEMME
16
1400
ADHERENT
FEMME
65
1700
CONJOINT
HOMME
16
1200
CONJOINT
HOMME
65
1500
CONJOINT
FEMME
16
1100
CONJOINT
HOMME
65
1300
ENFANT
HOMME
400
ENFANT
HOMME
600
ENFANT
HOMME
14
800
ENFANT
HOMME
18
1000
ENFANT
FEMME
300
ENFANT
FEMME
500
ENFANT
FEMME
14
700
ENFANT
FEMME
18
850
ASCENDANT
HOMME
35
1200
http://sqlpro.developpez.com/cours/sqlaz/fondements/
TARIF
9/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
ASCENDANT
HOMME
65
1400
ASCENDANT
FEMME
35
1100
ASCENDANT
HOMME
65
1300
Table"TARIF_MAJO"
PAIEMENT
MAJORATION
MOIS
12%
TRIMESTRE
8%
SEMESTRE
4%
ANNEE
0%
Table"TARIF_MINO"
Nb_ENFANT_MAX
MINORATION
10%
25%
50%
100%
Ilesttrsdifficiled'tablirunerequtepermettantdetrouverlebontarifdansuntelcas.Enrevanche,enpassantlatablede
paramtresuivantuneprocdure:
Table"PARAMS":
TYPE
SEXE DATE_NAISSANCE
ADHERENT
HOMME 11/5/1950
CONJOINT
FEMME 21/6/1965
ENFANT
HOMME 16/3/1992
ENFANT
FEMME 11/1/1981
Slectionnez
ProcedureCalcTarif(ParamsArray,modePaiementstring):money
var
unTarif:mney
leTarif:money
i,j:smallint;indicedeboucle
n:samllint;nombred'enfants
;tableaumulticellulairereprsentantlesdonnesdestables
BaseTarif:Array;tableTARIF_BASE
MajoTarif:Array;tableTARIF_MAJO
Minotarif:Array;tableTARIF_MINO
endVar
leTarif:=0
forifrom1toParams.size()
;recherchedutarifpourlesenfantaveccomptagedunombred'enfants
ifParams.TYPE="ENFANT"
then
forjfrom1toBaseTarif.size()
if(BaseTarif[j].TYPE=Params[i].TYPE)and(BaseTarif[j].SEXE=Params[i].SEXE)
then
ifBaseTarif[j].AGE_MIN>=CalcAge(Params[i].DATE_NAISSANCE)
then
unTarif:=BaseTarif[j].TARIF
break
endif
endif
endFor
;cumuldesdiffrentstarifsenfanttrouvs
leTarif:=leTarif+unTarif
;dnombrementdesenfants
n=n+1
;recherchedelaminorationpourlenombred'enfants
forjfromMinoTarif.size()downTo1
ifMinoTarif[j].NB_ENFANT_MAX<=n
then
;minorationdutarifcumuldesenfants
leTarif:=leTarif*(1MinoTarif[j].MINORATION/100)
break
endif
endFor
endif
endFor
forifrom1toParams.size()
;recherchedutarifpourlesautrestypesexceptlesenfants
ifParams.TYPE="ENFANT"
then
continue
endif
http://sqlpro.developpez.com/cours/sqlaz/fondements/
10/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
forjfrom1toBaseTarif.size()
if(BaseTarif[j].TYPE=Params[i].TYPE)and(BaseTarif[j].SEXE=Params[i].SEXE)
then
ifBaseTarif[j].AGE_MIN>=CalcAge(Params[i].DATE_NAISSANCE)
then
unTarif:=BaseTarif[j].TARIF
break
endif
endif
endFor
;cumuldesdiffrentsautrestarifstrouvs
leTarif:=leTarif+unTarif
endFor
;calculdelamajorationpourlemodedepaiement:
forifrom1toMajoTarif.size()
ifmodePaiement=MajoTarif[i].PAIEMENT
then
leTarif:=leTarif*(1+MajoTarif[j].MAJORATION/100)
break
endif
endFor
returnleTarif
endProcedure
9.Rsum
VoicilesdiffrentesimplmentationsduSQLsurquelquesunsdesdiffrentsmoteursrelationnelsquenousavonschoisi
d'analyser.
SGBDR
Paradox7
Access97
Sybaseadaptive
11
SQLServer7
Oracle8
Nature
Servicedefichier
Servicedefichier
Serveurde
donnes
Serveurde
donnes
Serveurdedonnes
Nbutilisateur(max/
enpratique)
255/50
300/10
Taillemaxdelabase
illimite
1Go
Taillemaxd'unetable
2Go(horsBLOBS)
1Go
Normalisation
SQL92
SQL89?
SQL92
SQL92
SQL89
DDL
Oui(a)
Oui
Oui
Oui
Oui
DML
Oui
Oui
Oui
Oui
Oui
DCL
Non
Oui
Oui
Oui
Oui
TCL
Oui(b,c)
Non
Oui
Oui
Oui
DCL
Non
Oui
Oui
Oui
Oui
TCL
Oui(b,c)
Non
Oui
Oui
Oui
limit255car.
limit255car.
limit255car.
limit8000car.
limit2000car.
Non
Non
Oui
Oui
limit4000car.
Oui,avec15
chiffressignificatifs
soustypes
comprenantdes
entiersetdesrels
Oui
Oui
Oui
Oui
Non
Oui
Oui
Oui
Oui
Non
Oui
Oui
Oui
Oui,enfait
NUMERIC
VoirNUMERIC
Oui
Oui
Oui
Oui
Non
Non
Non
Oui
Oui
Non
Non
Non
Non
Oui
Oui
Oui
Oui
Non
CHAR
VARCHAR
NUMERIC
INTEGER
SMALLINT
FLOAT
DATE
TIME
TIMESTAMP
http://sqlpro.developpez.com/cours/sqlaz/fondements/
11/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
Non
Non
Non
Non
Non
Non
Oui
Oui
BOOLEAN
Oui(LOGICAL)
Oui
Non
Non
Non
MONEY
Oui
Oui
Oui
Oui
Non
BYTES
Oui
Non
Non
Non
Oui(RAW)
Oui
Oui
Non(d)
Non(d)
Non(d)
Oui(2types
diffrentsTEXT
IMAGE)
Oui(2types
diffrentsIMAGE,
TEXT)
Oui(7typesdiffrents:
LONG,LONGRAW,
LONGVARCHAR,BFILE,
BLOB,CLOB,NCLOB)
INTERVAL
BIT
AUTOINC
BLOB
Oui(4types
diffrents:MEMO,
Oui(2types
MEMOFORMATEen diffrents:MEMO,
RTF,IMAGEet
HYPERLIENlimit
BINARY)limits2
64ko)
Go
Autrestypes
OCTET(1255),
OLE
OLE,listedechoix
BIT,BINARY
BIT,BINARY,
CURSOR,TINYINT,
GUID
ROWID(N
d'enregistrement)
INTEGRIT
RFRENTIELLE
Oui,stricteou
cascade
(suppressionet
modif.)
Oui,stricteou
cascade
(suppressionet
modif.)
Oui
Oui,pasen
cascade
Oui
TRIGGERS
Non
Non
Oui
Oui,limits
BEFOREINSERT,
BEFOREUPDATE,
BEFOREDELETE,AFTER
INSERT,AFTERUPDATE,
AFTERDELETE
PROCDURES
STOCKES
Non
Non
Oui,langage
propritaire
TransactSQL
Oui,langage
propritaire
TransactSQL
Oui,langage
propritairePL/SQL
(a)Avecquelqueslimitations(parexemplelescontraintesd'intgritrfrentiellesnepeuventtrecresparleSQL)
(b)Limitenrollback255enregistrements
(c)PasdansleSQL,maisencodedulangagehte
(d)Maispossiblel'aidedetriggersoudecommandesspcifiques
10.Conclusion
EnmatiredeSGBDR"fichier",ParadoxservlepluspauvreauniveauduDDLetduTCL,maisplusricheenmatiredeDML
qu'Access.Quantauxtypesdedonnes,Paradoxservlebienpluscompletqu'Accessquin'intgremmepasdechampdetype
"image"...PensezquedansAccessletypeentiern'estmmepasdfini!EnfinenmatiredeBLOBlaplupartdesSGBDR
acceptentjusqu'2Godedonnes,saufAccessquiestlimit64Ko...
EncequiconcernelacapacitdestockageAccessrvletrsrapidementdenombreuseslimites,commeennombred'utilisateurs
enrseau.
EnmatiredecontrledestransactionsParadoxestlimit255enregistrementsenRollBack.Maislaprsencedetables
auxiliairespermetdedpasserceslimitessansencombre,conditiondeprvoirlecodemettreenuvre.
DiffrencefondamentalepourParadox,pasdeDCL.Maiscelaestlargementcompensparunniveaudescuritaforte
granularitquin'estpascompatibleavecleSQLnormalis.AinsidansParadoxonpeutplacerdesdroitsauniveaudestablesmais
aussidechaquechampetlemoteurcryptelesdonnesdsqu'unmotdepasseestdfini(SQLBasedeCenturapermetausside
crypterlesdonnesl'aidedesplusrcentsalgorithmesdechiffrage)
PointtrsngatifpourAccessdanssacatgorie:ilpratiqueleverrouillagedepages!
Enfinlesvuesn'existentpasdansAccessmaisellessontprsententdansParadoxsousuneformenonSQLappele"vuede
requterelis"(QBE).
EnmatiredeserveurSQLC/S,leSGBDRSybaseservletrsprochedeSQLServercequin'estpasabsurdepuisqu'ilssont
parents.Oraclepossdeunebonnediversitdetypesmaissaconformitlanormelaissedsirer(pasdeJOINparexemple,
pauvretdesfonctionstemporelles).EnrevancheOraclepossdeuntypedechampbienutileetintgrtouteslestables,le
ROWIDquidonnelendelalignedanslatableetquiesttoujoursunique,mmesilaligneatsupprime.Onretrouvedes
mcanismessimilairesdansSQLServersouslenomdeGUIDoubienavecl'autoincrmentationvia"identity".
Livres
SQLdveloppement
SQLlecoursderfrencesurlelangageSQL
Avantd'aborderleSQL
Dfinitions
SGBDRfichierouclient/serveur?
Labasededonnesexemple(gestiond'unhtel)
ModlisationMERISE
MotsrservsduSQL
LeSQLdeAZ
Lesfondements
Lesimple(?)SELECT
Lesjointures,oucommentinterrogerplusieurstables
Groupages,ensemblesetsousensembles
Lessousrequtes
Insrer,modifier,supprimer
Crationdesbases
http://sqlpro.developpez.com/cours/sqlaz/fondements/
12/13
16/2/2015
LeSQLdeAZSGBD,SQLettypesdedonnes
Grerlesprivilges("droits")
TouteslesfonctionsdeSQL
LestechniquesdesSGBDR
LeserreurlesplusfrquentesenSQL
LespetitspapiersdeSQLPro
ConfrenceBorland2003
L'hritagedesdonnes
Donnesetnormes
Modlisationparmtadonnes
OptimisezvotreSGBDRetvosrequtesSQL
Letemps,samesure,sescalculs
QBE,lelangagedeZLOOF
Desimagesdansmabase
Lajointuremanquante
Clefsautoincrmentes
L'indexationtextuelle
L'artdes"Soundex"
Uneseulecolonne,plusieursdonnes
Ladivisionrelationnelle,mytheouralit?
Gestiond'arborescenceenSQL
L'avenirdeSQL
Mthodesetstandards
Lesdoublons
SQLServer
Eviterlescurseurs
UnaperudeTRANSACTSQLV2000
SQLServer2000etlescollations
ScurisationdesaccsauxbasesdedonnesSQLServer
DesUDFpourSQLServer
SQLServeretlefichierdelog...
Paradox
Devieuxarticlespublisentre1995et1999dansladfunterevuePointDBF
(1)
SQL3permetunecertainercursivitl'aided'uneclauseWITH
(2)
GrgoireXIII(224emepape),taitunpapeassezmoderneetsurtoutfrudescience...luiaumoinsauraitcertainementsutque
lacapotenesemettaitpasl'index!
Copyright2003FrdricBrouard.Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisationexpressedel'auteur.Sinonvousencourezselonlaloijusqu'troisansdeprisonetjusqu'300000dedommagesetintrts.
ResponsablebnvoledelarubriqueSGBD&SQL:FrancisWalterContacterparemail
Developpez.com
Nouscontacter
Participez
Informationslgales
Services
ForumSGBD&SQL
Blogs
Hbergement
Partenaires
PlanetHoster
Copyright20002015www.developpez.com
http://sqlpro.developpez.com/cours/sqlaz/fondements/
13/13