Sunteți pe pagina 1din 13

16/2/2015

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

ASCENDANT FEMME 21/12/1922


Iln'estpastrscompliqued'criredansunlangagedonnuneprocdurepermettantdecalculercetarif.
Unetelle,procdurepourraits'criredansunpseudocodeprocheduPascal:

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

S-ar putea să vă placă și