Transcript
  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 1/20

    IniciacinalLenguajeSQL

    EllenguajeSQL

    SQLesunaherramientaparaorganizar,gestionaryrecuperardatosalmacenadosenunabasededatosinformtica.Elnombre"SQL"esunaabreviaturadeStructuredQueryLanguaje(Lenguajedeconsultasestructurado).Comosupropionombreindica,SQLesunlenguajeinformticoquesepuedeutilizarparainteraccionarconunabasededatosymsconcretamenteconuntipoespecificollamadobasededatosrelacional.

    SQLesalavezunlenguajefcildeaprenderyunaherramientacompletaparagestionardatos.Laspeticionessobrelosdatosseexpresanmediantesentencias,quedebenescribirsedeacuerdoconunasreglassintcticasysemnticasdeestelenguaje.

    Suaprendizajenosolosirveparaestaaplicacinsino,tambin,paratodaslasexistentesenelmercadoquesoportenestelenguajeyaqueesunlenguajeestndarporhabersevistoconsolidadoporelInstitutoAmericanodeNormas(ANSI)yporlaOrganizacindeEstndaresInternacional(ISO).

    Lainformacinaquresumidadellenguajepuedeserampliadaconmultituddelibrosexistentesenelmercado,todosconlassiglas"SQL".

    ElSQLqueseutilizarenestaaplicacincumpleestrictamenteconlasespecificacionesdeMicrosoftOpenDatabaseConnectivity(ODBC)yacontinuacinsepodrnverlascaractersticaspropiasparaelaccesoaficherosenelformatoParadoxdeBorland.

    Notacinempleadaenlosformatos

    MAYSCULASLaspalabrasquefigurenenelformatoenmaysculasseescribirnenlasentenciaigualqueseescribenenelformato.

    MinsculacursivaEstaspalabrasdebernsersustituidasenlasentenciapornombresopalabraselegidasporelusuariodeacuerdoconlasdescripcionesquesedenencadacaso

    Barravertical|Indicarlaeleccindeunadelasopcionesqueesteseparando.Ounauotranoambas.

    Corchetes[]Encerrarnelementosopcionesdelasentenciaquepuedencogerseonodependiendodelusuario.

    Llaves{}Encerrarnelementosobligatoriosdelasentenciaquesiempredeberndeserespecificados.

    Sentenciasdeseleccinoconsultas

    LasconsultassonelcorazndellenguajeSQL.LasentenciaSELECT,queseutilizaparaexpresarconsultasenSQL,eslamspotenteycomplejadelassentenciasSQL.

    LasentenciaSELECTrecuperadatosdeunabasededatosylosdevuelveenformaderesultadosdelaconsulta.Constadeseisclusulas:lasdosprimeras(SELECTyFROM)obligatoriasylasotrascuatroopcionales.

    LaformadelasentenciaSELECTsoportadaporParadoxes:

    SELECT[DISTINCT]{*|expresin_columna,...}FROMnombretabla[alias_tabla]...[WHEREexpresin1operadorexpresion2][GROUPBY{expresin_columna,...}][HAVING{condicin}][UNION[ALL](SELECT

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 2/20

    ...)][ORDERBY{expresin_orden[DESC|ASC],...]

    ClusulaSELECT

    LaclusulaSELECTlistalosdatosarecuperarporlasentenciaSELECT.LoselementosodatosaseleccionarpuedensercolumnasdelabasededatosocolumnasacalcularporSQLcuandoefectalaconsultaotambinelasterisco(*)pararecuperartodosloscamposdeunficherootabla.

    expresin_columnapuedeserunsimplenombredecampo(porejemploMATRICULA).Expresionesmscomplejaspuedenincluiroperacionesmatemticasodemanipulacindecaracteres(porejemploAPELLIDOS+,+NOMBRE).Masadelantesevernestasexpresionesdeformamsamplia.

    Lasexpresionesdecolumnasdebenirseparadasporcomassiexistenmsdeuna(porejemploAPELLIDOS,NOMBRE,DNI,DOMICILIO).

    Losnombresdecampospuedenirprecedidosporelnombredelatablaosualias.PorejemploALUMNOS.MATRICULAoA.MATRICULAdondeAeselaliasparalatablaoficheroALUMNOS.

    EloperadorDISTINCT,siseincluye,debeprecederlaprimeraexpresindecolumna.Esteoperadoreliminalasfilasoregistrosduplicadosdelresultadodelaconsulta.Porejemplolasentencia:

    SELECTDISTINCTPROVINCIAFROMALUMNOS

    mostrarlasdistintasprovinciasdelasqueprocedenlosalumnosdelCentro.

    Funcionesdeagrupamiento

    LasfuncionesdeagrupamientopuedensertambinpartedeunaclusulaSELECT.Devuelvenunnicovalordeunconjuntoderegistros.Puedenusarseconunnombredecampo(porejemplo,AVG(NUMERO_DE_HERMANOS)oencombinacinconunaexpresindecolumnamscompleja(porejemplo,AVG(NUMERO_DE_HERMANOS*1.07)).LaexpresindecolumnapuedeirprecedidaporeloperadorDISTINCT.EloperadorDISTINCTeliminarlosvaloresrepetidosdeunaexpresindeagrupamiento.Porejemplo,

    SELECTCOUNT(DISTINCTLOCALIDAD)FROMALUMNOS

    Enesteejemplo,sloaparecernelndelasdistintaslocalidadesdonderesidenlosalumnos.

    Lasfuncionesdeagrupamientopermitidasson:

    SUMDevuelvelasumatotaldelosvaloresdeunaexpresindecolumnaocamponumrica.Porejemplo,SUM(NUMERO_DE_HERMANOS)devolvereltotaldehermanosdelosalumnosdelCentro.

    AVGDevuelvelamediadelosvaloresdeunaexpresindecolumna.Porejemplo,

    AVG(NUMERO_DE_HERMANOS)

    devolverlamediadehermanosqueposeeelalumnadodelcentro.

    COUNTDevuelveelnmerodevaloresenunaexpresindecolumna.Porejemplo,COUNT(MATRICULA)devolverelnmeroderegistrosconvaloresnonulosenesecampo.COUNT(PAIS)nosdirelnmerodealumnosqueenelcampopastienealgunainformacinynoestablanco.UnejemploespecialesCOUNT(*),quenosdevuelveelnmeroderegistrosincluyendoaquellosregistrosconvaloresnulos.

    MAXDevuelveelvalormsaltodeloscontenidosenunaexpresindecolumna.Porejemplo,MAX(MATRICULA)

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 3/20

    devolverelndematrculamaselevadoqueexisteenelficherodealumnos.

    MINDevuelveelvalormsbajodeloscontenidosenunaexpresindecolumna.Porejemplo,SELECTMIN(FECHA_NACIMIENTO)FROMALUMNOSnosdevolverlafechadenacimientodelalumnomasviejodelcentro.

    ClusulaFROM

    LaclusulaFROMlistalastablasoficherosquecontienenlosdatosarecuperarporlaconsulta.Elformatodeestaclusulaes:

    FROMnombretabla[alias_tabla]...

    nombretablapuedeserunaomasnombresdetablaeneldirectoriodetrabajosiseomiteeste,oenundirectoriodistintosiseespecifica.

    alias_tablaesunnombrequeseusaparareferirsealatablaenelrestodelasentenciaSELECTparaabreviarelnombreoriginalyhacerlomsmanejable,enelcasodeexistirmsdeunatablaenlaconsultay,tambinparapoderrealizarconsultasuniendovariasveceslamismatabla.Porejemplo,

    SELECTA.NOMBRE,A.APELLIDOSFROMMATRICULM,ALUMNOSAWHEREM.MATRICULA=A.MATRICULAANDM.GRUPO=1AANDANNO=1995

    esmuchomsprcticoysencilloque:

    SELECTALUMNOS.NOMBRE,ALUMNOS.APELLIDOSFROMMATRICUL,ALUMNOSWHEREMATRICUL.MATRICULA=ALUMNO.MATRICULAANDMATRICUL.GRUPO=1AANDANNO=1995

    Lasdossentenciassonidnticasynosdevolveranlosnombresyapellidosdelalumnadomatriculadoenelao1995yquefiguranenelgrupo1A.Elnombredetablasjuntoalnombredecampoesobligatoriocuandoexistancamposconnombreidnticoenlastablasqueformenpartedelasentencia.AsenelejemploanteriorNOMBREyAPELLIDOSnolonecesitaran(aunqueestepuesto)peroMATRICULAsilonecesitaporqueenlasdostablasexisteuncampoconesenombre.

    Sinosepudierautilizaralias,nosepodraunirunatablaconsigomismaylasiguienteconsultanosepodrallevaracabo:

    SELECTA.NOMBRE,A.APELLIDOS,H.NOMBREFROMALUMNOSA,ALUMNOSHWHEREA.PADRE=H.PADRE

    quenosdevolverelnombredeaquellosalumnos/asquetienenelmismopadre,esdecir,sonhermanos.

    ClusulaWHERE

    LaclusulaWHEREdiceaSQLqueincluyasolociertasfilasoregistrosdedatosenlosresultadosdelaconsulta,esdecir,quetienenquecumplirlosregistrosquesedeseanver.LaclusulaWHEREcontienecondicionesenlaforma:

    WHEREexpresin1operadorexpresion2

    expresin1yexpresion2puedensernombresdecampos,valoresconstantesoexpresiones.

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 4/20

    operadoresunoperadorrelacionalqueunedosexpresiones.Mstardesevernlosdistintosoperadoresquesepuedeutilizar.

    Porejemplo,lasiguientesentencianosmuestraelndealumnosquehannacidoconposterioridada1985.

    SELECTCOUNT(*)FROMALUMNOSWHEREYEAR(FECHA_NACIMIENTO)>1985

    ClusulaGROUPBY

    LaclusulaGROUPBYespecificaunaconsultasumaria.Envezdeproducirunfiladeresultadosporcadafiladedatosdelabasededatos,unaconsultasumariaagrupatodaslasfilassimilaresyluegoproduceunafilasumariaderesultadosparacadagrupo.

    SeguidodelaclusulaGROUPBYseespecificanlosnombresdeunoomscamposcuyosresultadossedeseanagrupados.Tienelaforma:

    GROUPBYexpresin_columna

    expresin_columnadebecoincidirconlaexpresindecolumnautilizadaenlaclusulaSELECT.Puedeserunoomsnombresdecampodeunatabla,separadosporcomaounaomsexpresionesseparadasporcomas.Elsiguienteejemplonosdicecuantosalumnosestnmatriculadosencadagrupoenelao1995:

    SELECTGRUPO,COUNT(*)FROMMATRICULWHEREANNO=1995GROUPBYGRUPO

    Estasentencianosdevolverunafilaporcadagrupodealumnos.Cadaunadeellascontendrelgrupoyelndealumnosenl.

    ClusulaHAVING

    LaclusulaHAVINGdiceaSQLqueincluyasolociertosgruposproducidosporlaclusulaGROUPBYenlosresultadosdelaconsulta.AligualquelaclusulaWHERE,utilizaunacondicindebsquedaparaespecificarlosgruposdeseados.Enotraspalabras,especificalacondicinquedebendecumplirlosgrupos.SloesvlidasipreviamentesehaespecificadolaclusulaGROUPBY.LaclusulaHAVINGtienelaforma:

    HAVINGexpresin1operadorexpresin2

    expresin1yexpresin2puedensernombresdecampos,valoresconstantesoexpresionesyestasnodebencoincidirconunaexpresindecolumnaenlaclusulaSELECT.

    operadoresunoperadorrelacionalqueunelasdosexpresiones.Mstardesevernlosdistintosoperadoresquesepuedeutilizar.

    Lasentenciasiguientenosmostrarelnmerodealumnosencadagrupode1995cuyonumerodeintegrantessuperalos30:

    SELECTGRUPO,COUNT(*)FROMMATRICULWHEREANNO=1995GROUPBYGRUPOHAVINGCOUNT(*)>30

    OperadorUNION

    EloperadorUNIONcombinaelresultadodedossentenciasSELECTenunnicoresultado.Esteresultadosecomponedetodoslosregistrosdevueltosenambassentencias.Pordefecto,losregistrosrepetidosseomiten.Para

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 5/20

    noquitarlosseemplearlapalabraALL.Tienelaforma:

    SELECTsentenciaUNION[ALL]SELECTsentencia

    CuandoseutiliceeloperadorUNION,lalistadeseleccinparacadasentenciaSELECTdebetenerelmismonmerodeexpresionesdecolumnasconelmismotipodedatosyenelmismoorden.Porejemplo,

    SELECTAPELLIDOS,NOMBREFROMALUMNOSUNIONSELECTAPELLIDOS,NOMBREFROMPROFESORUNIONSELECTAPELLIDOS,NOMBREFROMPERSONAL

    Esteejemplotieneelmismondecolumnasycadacolumnaenordenconelmismotipodedatos.Nosdevolverunalistanicadealumnos,profesoresypersonalnodocente.

    ClusulaORDERBY

    LaclusulaORDERBYordenalosresultadosdelaconsultaenbasealosdatosdeunaomscolumnas.Siseomite,losresultadossaldrnordenadosporelprimercampoqueseaclaveenelndicequesehayautilizado.

    Portanto,indicacomodebenclasificarselosregistrosqueseseleccionen.Tienelaforma:

    ORDERBY{expresin_orden[DESC|ASC],...]

    expresin_ordenpuedeserelnombredeuncampo,expresinoelnmerodeposicinqueocupalaexpresindecolumnaenlaclusulaSELECT.PordefectoseordenanASCendentemente(demenoramayor).SisedeseardemayoramenorseemplearDESC(DESCendente).Porejemplo,paramostrarlosalumnosordenadosdemayoredadamenor,seutilizara:

    SELECTNOMBRE,APELLIDOSFROMALUMNOSORDERBYFECHA_NACIMIENTODESC

    Paraobtenerunlistadodealumnosporsulugardenacimientoordenadoporprovinciasydentrodecadaprovinciaordenadosporlocalidadesseutilizara:

    SELECTNOMBRE++APELLIDOS,LOCALIDAD_NACIMIENTO,PROVINCIA_NACIMIENTOFROMALUMNOSORDERBYPROVINCIA,LOCALIDAD

    olomismodeotraforma

    SELECTNOMBRE++APELLIDOS,LOCALIDAD_NACIMIENTO,PROVINCIA_NACIMIENTOFROMALUMNOSORDERBY3,2

    EnlacedevariasTablasoficheros

    Losejemplosvistohastaelmomentosoloextraendatosdeunanicatablaypocascosaspodramoshacersinopudiramosinterrelacionarvariosficherosparaobtenerlasconsultasquedeseramos.

    LaBasedeDatosdeIES2000esunaBasedeDatosRelacionaly,sellamadeestaforma,porlasdistintasrelacionesqueexistenentrelosdistintosficherosotablasquemaneja.

    Enenlaceorelacindedostablaspararealizarunaconsulta,seconoceconeltrminodeJOIN.ParaexpresarestetrminovamosautilizarunejemploqueseutilizamuyamenudoentodaslasconsultasdeGEIWIN:DeseamosunlistadoalfabticoconlosNombresyApellidosdetodoslosalumnosqueestnmatriculados,deformaOficial,actualmenteenelcentro.

    ElficherodeALUMNOScontienetodoslosdatosgeneralesdelalumnado,entreellosNombreyApellidos,yel

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 6/20

    ficheroMATRICULlosdistintosdatosdelasdiferentesmatrculasdecadaunodeellos,entreelloselaoytipodelamatrcula.

    Paraextraerlosdatosdeseadosdeberemosdebuscaruncampoquecontengainformacincomnenlosdosficheros,esdecir,aquelporelqueestnrelacionadosambos.Estecampoeselndeexpedientedelalumno,quedalacasualidadquetieneelmismonombreenlosdosficheros:MATRICULAyserestecampoelquenossirvaparaefectuarelJOIN:

    SELECTAPELLIDOS,NOMBREFROMMATRICUL,ALUMNOSWHEREMATRICUL.MATRICULA=ALUMNOS.MATRICULAANDANNO=1996ANDTIPO=OORDERBYAPELLIDOS,NOMBRE

    ElJoinseindicaenlaclusulaWHEREcomootracondicinms,enestecaso,elndeexpedienteenlosdosficherodebeexistiry,sinoesas,elalumno/anoaparecerenlarelacin,aunquefigureenunodeellos.

    AliasdelasTablas

    Losaliassonuninstrumentoparaabreviarlosnombresdelastablasoficherosypoderreferirseaellosentodalasentencia.Enelejemploanteriorpodramosemplearaliasdelasiguienteforma:

    SELECTAPELLIDOS,NOMBREFROMMATRICULM,ALUMNOSAWHEREM.MATRICULA=A.MATRICULAANDANNO=1996ANDTIPO=OORDERBYAPELLIDOS,NOMBRE

    Loscamposquetienennombrenicoenlassentenciasnonecesitanirprecedidosporelnombredelatablaosualias.EnelejemploANNOyTIPOsoloexistenenelficheroMATRICULyporesaraznnoseleshaprecedidoporMATRICULosualiasM.

    OrdendelastablasenlaclusulaFROM

    EspecialmencinmereceelordendeenumeracindelastablasenlaclusulaFROM.ElGestordeSQL,cuandoexisteunJOINentredostablas,recorrelatablaquefiguraenprimerlugar,yporcadaregistroqueencuentraquesatisfaceelrestoderestricciones,compruebasiexistecorrespondenciaenlaotratabla.

    Pongamosunejemploprctico:SitenemosenelficherodeALUMNOS5000registrosyenelficheroMATRICUL15000,deloscualessolo1000sondelao1996ydeltipooficial,elGestorrealiza1000lecturasdelficheroMATRICULy1000msdeALUMNOS.Silosenumerramosalrevs,serealizaran5000lecturasdeALUMNOSy5000msdeMATRICUL.

    Enlacedetablassinequivalenciaporladerecha(JoinRightOuter)

    Porlogeneralefectuaremosenlacesdetablasconelsignodeigualdad(JoinEqual),peroexistirnconsultasenlasquedesearemosquenosdevuelvalosregistrosnulosdelatablaquenotengacorrespondenciaenlaotra.Porejemplo,sideseamosunarelacindetodaslasmateriasconelnombredeldepartamentoquelasimpartetendramosqueescribirlasentencia:

    SELECTM.NOMBRE,D.NOMBREFROMMATERIASM,DEPARTADWHEREM.DEPARTAMENTO=D.CLAVE

    Deestaformasolonosapareceranenlarelacinlasmateriasquetienenasignadodepartamentoquelasimparta.Siquisiramosqueaparecierantodasylasquenotengandepartamentoasignadoqueaparecieraelnombredestevaco,cambiaramoselsigno=por*=

    SELECTM.NOMBRE,D.NOMBREFROMMATERIASM,DEPARTADWHEREM.DEPARTAMENTO

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 7/20

    *=D.CLAVE

    Enlacedemsdedostablas

    ElGestordeSQLpuedeunirmuchastablasenunanicasentencia,paraellodebemosefectuarelJoinentretodasellasydelaformamsptimaposibleparaqueeltiempoderespuestaseamnimo.

    SELECTA.APELLIDOS+''+A.NOMBRE,S.ABREVIATURA1FROMMATRICULM,NOTASN,ALUMNOSA,[email protected]='@Grupo'ANDM.MATRICULA=N.MATRICULAANDN.MATERIA=S.MATERIAANDN.ANNO=M.ANNOANDN.EVALUACION='F'

    LasentenciapermitirextraerelnombreyapellidosdecadaunodelosalumnosdelGrupoqueindiquemoscuandonosseasolicitadojuntoconcadaunadelasmateriasquecursanenelaoactual.

    Enlasentenciasehanunido4ficherootablas:Matriculas,Notas,AlumnosyMaterias,pueselnombreyapellidosdelalumnoestnenelficheroAlumnosylaabreviaturadelasmateriasestnenelficheroMateriaselficheroMatriculasesnecesarioparasaberquealumnostienenmatrculaenelcursoactualysondelgrupoelegido,yelficheroNotascontienecadaunadelasmateriasquecursaelalumnado,siempreconlaevaluacinFinal.

    Tabulacinderesultados

    ElGestordeSQLsiempregeneraunasalidaplana,esdecir,unaseriedefilasconunaseriedecolumnas.Peroexistirnlistadosquesernmuchomslegiblessilainformacinserepresentacomounatabladedatos.Enelejemploanteriorelresultadotendrunregistroporcadamateriaquecurseelalumno,ysunombrefigurarrepetidoencadaunodeellosconunamateriadiferente.

    Paramostrarlosresultadoscomounaespeciedeactillaenlaqueserefleje,porcadaregistro,elnombredelalumnoytodaslasmateriasacursar,procederemosdelasiguienteforma:

    UnavezquetenemoselresultadodelaconsultaenpantallapresionaremoselbotnElegiremos,enestecaso,elTipo2presionandoendichobotnylaaplicacinharelresto.

    SELECTanidadas

    PuedenexistirconsultasalaBasedeDatosquerequieranunarestriccinqueseaelresultadodeotraconsulta.

    Porejemplo:Deseamossabercuantasmateriasposeeelltimocursodeunosdeterminadosestudios.MedianteCOUNT(Materia)puedosabercuantasperolacondicindelltimocursosolosepuedesaberdespusdeejecutarunasentenciaconMAX(Curso)delficheroPLANES

    Cuandoestoseproducepodemosactuardedosformas:

    Laprimeraefectuandolaconsultaquegeneralarestriccinyposteriormente,realizarlasentenciaconelresultadodelarestriccincalculada:

    SELECTMAX(CURSO)FROMPLANESWHEREESTUDIO='@Estudio

    Si,porejemplo,elvalormximonosdevuelve3,entoncesrealizaramoslasentenciadefinitivacon:

    SELECTCOUNT(MATERIA)FROMPLANESWHEREESTUDIO='@Estudio'ANDCURSO=3

    Lasegundaformaesmscomplejaperomuchomsprctica.Lasentenciaquegeneralarestriccincomplejaseanidadentrodelaprincipalencerrndolaentreparntesis:

    SELECTCOUNT(MATERIA)FROMPLANESWHEREESTUDIO='@Estudio'ANDCURSO=

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 8/20

    (SELECTMAX(CURSO)FROMPLANESWHEREESTUDIO='@Estudio')

    LassentenciasSELECTanidadasseutilizanconmuchafrecuenciaalahoradeActualizaroBorrarregistrosdeunatablaquerequierancondicionesorestriccionesenlasqueestnimplicadasotrastablasdistintasdelaquesevaaactualizaroborrar.

    ExpresionesSQL

    LasexpresionesseutilizanenlasclusulasWHERE,HAVINGyORDERBYdelassentenciasSELECT.

    Lasexpresionesnospermitenutilizaroperacionesmatemticascomotambincadenasdecaracteresyoperadoresdemanipulacindefechasparaconstruirconsultascomplejas.

    Loselementosquecomponeslasexpresionesson:

    NombresdecamposOperadoresnumricosOperadoresdefechasOperadoreslgicosConstantesOperadoresdecaracteresOperadoresderelacinFunciones

    Nombresdecampos

    Lasexpresionesmscomunessonlosnombresdecampos.Sepuedencombinarconotroselementosdelasexpresiones

    Constantes

    Lasconstantessonvaloresquenocambian.Porejemplo,enlaexpresinFECHA_NACIMIENTO+30,elvalor30esunaconstanteyFECHANACIMIENTOesunnombredecampo.

    Lasconstantesdecaracteressedebenencerrarconunacomillasimple()ounadoble(").Paraqueunacomillasimpleodobleaparezcaenunaconstanteseponedoble.(Porejemplo,silaconstantedeseadaesODonneldeberfigurarcomoODonnel.

    Lasconstantesdefechasdebernestarencerradasentrellaves({}),porejemplo,{01/30/89}representalafecha30deEnerode1989.ElformatodelasfechasesMM/DD/YYoMM/DD/YYYY(MM=mes,DD=dayYY=Ao).

    OperadoresNumricos

    Pararealizaroperacionesnumricassepuedeutilizarlosoperadores:

    operadorsignificado

    +Suma

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 9/20

    Resta*Multiplicacin/Divisin**o^Exponenciacin

    Operadoresdecaracteres

    Lasexpresionesdecaracterespuedenincluirlossiguientesoperadores:

    operadorsignificado

    +ConcatenacinmanteniendoespaciosenblancoConcatenacinmoviendolosblancosalfinal

    Siporejemplo,NOMBREcontieneAntonioyAPELLIDOSRodrguez

    ejemplo

    Valorresultado

    NOMBRE+APELLIDOSAntonioRodrguez

    NOMBREAPELLIDOSAntonioRodrguez

    Operadoresdefechas

    Lasexpresionesdecaracterespuedenincluirlossiguientesoperadores:

    operadorsignificado

    +Aadeunnmerodedasaunafechaparaproducirunanuevafecha.

    Elnmerodedasentredosfechasolarestadeunnmerodedasdesdeunafechaparaproducirunanuevafecha.

    EjemploValordevuelto

    {01/30/90}+5{02/04/90}(recuerdeMM/DD/YY)

    {01/30/90}{01/01/90}29

    {01/30/90}10{01/20/90}

    Operadoresderelacin

    Losoperadoresderelacinquepuedenseparardosexpresionespuedensercualquieradelossiguientes:

    OperadorSignificado

    =IgualaDistintode

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 10/20

    >Mayorque>=Mayoroigualque=.=AnyesequivalenteaIn.AllComparaunvalorconcadavalordevueltoporunasubconsultaretornandociertositodoselloscumplenlacondicin.Alldebeirprecedidode=,,,>=o>=.

    Ejemplosqueutilizanoperadoresderelacin:

    evaluacion=F

    Fecha_matricula>={10/01/95}

    ApellidosLIKERodri%

    GrupoISNULL

    AnnoBETWEEN1985AND1995

    WHEREM.ESTUDIOS=ANY(SELECTESTUDIOFROMESTUDIOSWHERENIVEL=1)

    WHERENOTA>ALL(SELECTNOTAFROMCALIFICAWHEREVALOR1>4)

    COMPARACIONDECADENASDECARACTERES:

    [NOT]LIKE

    Likepermiteutilizarlossiguientescaracteresespecialesenlascadenasdecomparacin:

    %comodnparaseleccionarcualquiercadenade0omscaracteres

    _comodnparaseleccionarcualquiercarcter

    Lasmaysculasyminsculassonsignificativas.

    Ejemplo:LIKE'MART%'cualquiercadenaqueempiececonMART...

    OperadoresLgicos

    Dosomscondicionespuedensercombinadasparaformarexpresionesmscomplejascondistintoscriterios.CuandoexistendosomscondicionesdebernestarunidasporANDoOR.Porejemplo,

    ANNO=1995ANDCURSO=2

    debendecumplirselasdoscondicionesparaqueseaciertalacondicintotal.

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 11/20

    SEXO=VORPAISISNOTNULL

    Bastaconqueunadelasdosseaciertaparaquelosealacondicintotal.

    EloperadorlgicoNOTestilparaponeralcontrariounacondicin.Porejemplo:

    NOT(ANNO=1995ANDCURSO=2)

    Prioridaddelosoperadores

    Enexpresionesconmasdeunacondicinelordenenelqueseevalanesmuyimportante.Lasiguientetablamuestraelordenenelquesonevaluadoslosoperadores.Losoperadoresquefiguranenlaprimeralneaseevalalosprimeros,luegolosdelasegundayassucesivamente.Losoperadoresquefigurenenlamismalneaseevalandeizquierdaaderechasegnaparezcanenlaexpresin.

    prioridadoperador

    1unario,+unario2**o^3*,/4+,5=,,,>=,>=,Like,NotLike,IsNull,IsNotNull,Between,In,Exists,Any,All6NOT7AND8OR

    Elsiguienteejemplomuestralaimportanciadelaprioridaddelosoperadores:

    WHERESEXO=VORFECHA_NACIMIENTO>{3/30/1970}ANDMATRICULA>4000

    YaqueelANDseevalaprimero,estaconsultanosdevuelveaquellosalumnosconndematriculamayorque4000yquehayannacidoconposterioridadal30demarzode1970,comotambinaquellosqueseanVarones.

    Paraforzaraquelaclusulaseevaleenordendistinto,porejemplo,quemuestreaquellosalumnosqueseanVaronesoquehayannacidodespusdeesafechayqueademsdeunadelasdoscondicionesanteriores,sundematrculaseamayorque4000,sernecesariousarparntesisparaencerrarlascondicionesquedebanevaluarseprimero,esdecir:

    WHERE(SEXO=VORFECHA_NACIMIENTO>{3/30/1970})ANDMATRICULA>4000

    Funciones

    Lasfuncionespermitenrealizarconlosdatosoperacionesadicionalesalasyavistas,pudiendoparticiparcomooperadoresenlasexpresiones.

    Unafuncinrepresentaunvalornicoqueseobtieneaplicandounasdeterminadasoperacionesaotrosvaloresdados,quesellamanargumentos.Seespecificacomounapalabrapredefinidaseguidadelosargumentosentreparntesisyseparadosporcomas.

    EllenguajeSQLdisponedeunconjuntodefuncionesquepuedenusarseenlasconsultasyqueaparecenaquagrupadasporeltipodevaloresquedevuelven.

    Funcionesquedevuelvenunacadenadecaracteres:

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 12/20

    FuncinDescripcin

    CHRConvierteunCdigoASCIIenunacadenadecarcterCHR(67)devuelvelaletraC.

    RTRIMoTRIMQuitalosblancosqueexistanporladerechaenunacadenaRTRIM(ABC)devuelveABC.

    LTRIMQuitalosblancosporlaizquierdaquetengaunacadenaLTRIM(ABC)devuelveABC.

    UPPERConviertecadaletradeunacadenaamaysculaUPPER(cadena)devuelveCADENA.

    LOWERConvierteaminsculacadaletradeunacadenaLOWER(CADENA)devuelvecadena.

    LEFTDevuelvelosnprimeroscaracteresporlaizquierdaLEFT(Cadena,3)devuelveCad.

    RIGHTDevuelvelosnltimoscaracteresdeunacadenaRIGTH(Cadena,4)devuelvedena.

    SUBSTRDevuelveunasubcadenadeunacadena.Losparmetrossonlacadena,laposicindelprimercarcteraextraeryelnmerodecaracteresaextraer.SUBSTR(Cadenadeletras,4,6)devuelveenade.SUBSTR(Cadena,5)devuelvena.

    SPACEGeneraunacadenadeespaciosenblanco.SPACE(5)devuelve.

    DTOCConvierteunafechaaunacadenadecaracteres.Unsegundoparmetroopcionaldeterminaelformatodelresultado:

    0(pordefecto)devuelveMM/DD/YY.1devuelveDD/MM/YY.2devuelveYY/MM/DD.10devuelveMM/DD/YYYY.11devuelveDD/MM/YYYY.12devuelveYYYY/MM/DD.

    Puedeexistiruntercerparmetroopcionalparadeterminarelcarcterquesequiereutilizarcomoseparador.Sinoseespecificasetomael(/).DTOC({01/30/89})devuelve01/30/89DTOC({01/30/89},0)devuelve01/30/89DTOC({01/30/89},1)devuelve30/01/89DTOC({01/30/89,11,)devuelve01301989

    DTPOSConvierteunafechaenunacadenadecaracteresusandoelformatoYYYYMMDD.DTPOS({01/23/90})devuelve19900123.

    IIFDevuelveunodedosposiblesvalores.Losparmetrossontres:elprimeroesunaexpresinlgica,elsegundoelvaloradevolversilaexpresinescierta,yelltimo,elvaloradevolversiesfalsa.IIF(SEXO=V,Masculino,Femenino)devolveralapalabraMasculinosielcamposexocontienelaVecasocontrariodevolveralapalabraFemenino.

    STRConvierteunnumeroenunacadena.Losparmetrossonelnmero,eltotaldeposicionesadevolver(incluyendoelpuntodecimal)yotroopcionalparaindicarelnmerodedgitosaladerechadepuntodecimal.STR(12.34567,4)devuelve12STR(12.34567,4,1)devuelve12.3

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 13/20

    STR(12.34567,6,3)devuelve12.346

    STRVALConvierteunvalordecualquiertipoaunacadenadecaracteresSTRVAL(Cadena)devuelveCadenaSTRVAL({12/25/53})devuelve12/25/53STRVAL(5*3)devuelve15STRVAL(4=5)devuelveFalse

    TIMEDevuelvelahoradeldacomounacadena.Alas9:49PM,TIME()devuelve21:49:00

    Funcionesquedevuelvennmeros

    FuncinDescripcin

    MODDividedosnmerosydevuelveelrestodeladivisin.MOD(10,3)devuelve1.

    LENDevuelvelalongituddeunacadena.LEN(Cadena)devuelve6

    MONTHDevuelveelmesencifrasdeunfecha.MONTH({01/30/89})devuelve1

    DAYDevuelveeldadeunafecha.DAY({01/30/89})devuelve30

    YEARDevuelveelao,contodassuscifras,deunafecha.YEAR({01/30/89})devuelve1989.

    MAXDevuelveelmayordedosnmeros.MAX(66,89)devuelve89.

    MINDevuelveelmenordedosnmeros.MIN(66,89)devuelve66.

    POWElevaunnmeroaunapotencia.POW(2,3)devuelve8

    INTDevuelvelaparteenteradeunnmero.INT(6.4321)devuelve6

    ROUNDRedondeaunnmero.ROUND(123.456,0)devuelve123ROUND(123.456,2)devuelve123.46ROUND(123.456,2)devuelve100

    NUMVALConvierteunacadenadecaracteresaunnmero.SilacadenaVALnoesunnmerosedevuelveelvalor0.NUMVAL(123)devuelve123NUMVAL(12A)devuelve0

    Funcionesquedevuelvenfechas:

    FuncinDescripcin

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 14/20

    DATEDevuelvelafechadehoy.Sihoyes25/12/89,DATE()devuelve{12/25/89}

    DATEVALConvierteunacadenadecaracteresaunafecha.DATEVAL(01/30/89)devuelve{01/30/89}

    CTODConvierteunacadenadecaracteresaunafecha.Sepuedeutilizarunsegundoparmetroparaespecificarelformatodelafechadevuelta:0(pordefectodevuelveMM/DD/YY,1devuelveDD/MM/YYy2devuelveYY/MM/DD.CTOD(01/30/89)devuelve{01/30/89}CTOD(01/30/89,1)devuelve{30/01/89}

    Ejemplosdefuncionesdefecha:

    SELECTSUM(AUSENCIAS)FROMFALTASALWHERETODAY()FECHAMONTH(TODAY()),YEAR(TODAY())YEAR(FECHA_NACIMIENTO)1,IIF(MONTH(TODAY())=MONTH(FECHA_NACIMIENTO)ANDDAY(FECHA_NACIMIENTO)>DAY(TODAY()),YEAR(TODAY())YEAR(FECHA_NACIMIENTO)1,YEAR(TODAY())YEAR(FECHA_NACIMIENTO)))FROMALUMNOS

    Sentenciasparacrearodestruirtablas

    Laaplicacindisponedesuspropiastablasquenodebensercreadasnidestruidas.Sielusuariolohicieraesbajosupropiaresponsabilidad.Noobstantesedalaposibilidaddecrearsesuspropiastablasy,porsupuesto,borrarlas.

    LasentenciaparacrearunatablaesCREATEyparadestruirlaDROP.

    Creacindeunatabla

    Lasentenciaparacrearunatablatienelaforma:

    CREATETABLEnombre_fichero(definicin_columna,...)

    nombre_ficheropuedesernicamenteelnombredelficherooelnombrecompletoconsucamino.Siseutilizasoloelnombredelficherosecreaeneldirectoriodondeseencuentranlosficherosdelaaplicacin(C:\geiwin\datos).

    definicin_columnaestacompuestoporelnombredelacolumnaocampo,seguidadeltipodedatodedichacolumna.

    LosnombresdecolumnanodebentenerespaciosenblancoylostiposdedatosdisponiblesparaParadoxson:

    ALPHANUMERICSusvalorespuedentenerletras,nmerosocaracteresdepuntuacin.Seprecisaunparmetroparalalongitudmximaquesequierealmacenaryestanopuedesobrepasarlos255caracteres.PorejemploALPHANUMERIC(12).TambinsepuedeutilizarlapalabraCHARenlugardeALPHANUMERIC.

    BLOBSusvalorescontienenunaclasededatosbinariosdelongitudindefinidaquesesuelenutilizarparaimgenes.

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 15/20

    CURRENCYSusvalorescontienensolonmerosempleadosencantidadesmonetarias.EmpleanelmismoformatoqueeltipoNUMBER.

    DATESeempleaparaalmacenarfechas.

    MEMOSeempleaparatextodelongitudindefinidacuandoeltipoALPHANUMERICsequedacorto.

    NUMBERSeempleaparacantidadesnumricasengeneral.Puedenalmacenardecimalesysigno.Internamentesealmacenancomodecimalesdecomaflotantededobleprecisin.

    SHORTSolopuedecontenernmerosenterosentrelosvalores32767y32767.

    Nota:BLOByMEMOnosepuedenutilizarenlaclusulaWHEREytampocopuedenformarpartedeunaclave.

    Ejemplodecreacindeunatabladelibros:

    CREATETABLED:\LIBROS(TITULOCHAR(200),PAGINASSHORT,PRECIOCURRENCY,FECHA_COMPRADATE,PORTADABLOB,RESUMENMEMO)

    Destruccindeunatabla

    Elformatoparadestruiroborraruntablaes

    DROPTABLEnombrefichero

    nombre_ficheropuedesernicamenteelnombredelficherooelnombrecompletoconsucamino.Siseutilizasoloelnombredelficheroseutilizaeldirectoriodondeseencuentranlosficherosdelaaplicacin(C:\geiwin\datos).

    Lasentenciaparaborrarlatablaantescreadaes

    DROPTABLED:\LIBROS

    SentenciaINSERT

    LasentenciadeINSERTseutilizaparaaadirregistrosalastablasdelabasededatos.Elformatodelasentenciaes:

    INSERTINTOnombre_fichero[(nombre_columna,...)]VALUES(expr,...)

    nombre_ficheropuedesernicamenteelnombredelficherooelnombrecompletoconsucamino.Siseutilizasoloelnombredelficheroseutilizaeldirectoriodondeseencuentranlosficherosdelaaplicacin(C:\geiwin\datos).

    nombre_columnaesunalistaopcionaldenombresdecampoenlosqueseinsertarnvaloresenelmismonmeroyordenqueseespecificarnenlaclusulaVALUES.Sinoseespecificalalistadecampos,losvaloresdeexprenlaclusulaVALUESdebensertantoscomocampostengalatablayenelmismoordenquesedefinieronalcrearlatabla.

    expresunalistadeexpresionesovaloresconstantes,separadosporcomas,paradarvaloralosdistintoscamposdelregistroqueseaadiralatabla.Lascadenasdecaracteresdebernestarencerradasentrecomillaso"ylasfechasentrellaves{}.

    EjemploparaaadirunregistroalatablacreadaenelejemplodeCREATE:

    INSERTINTOD:\LIBROS(TITULO,PAGINAS,FECHA)VALUES(GestinEscolarIntegrada,234,

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 16/20

    {12/27/95})

    CadasentenciaINSERTaadeunnicoregistroalatabla.Enelejemplosolosehanespecificado3camposconsusrespectivosvalores,elrestodecamposquedarananulo.UnvalornuloNULLnosignificablancosocerossinosimplementequeelcamponuncahatenidounvalor.

    SepuedeninsertarregistrosenunficherodelaBasedeDatos,procedentesdeunficherodetexto,mediantelasentenciapropiadeIES2000quetienelaforma:

    INSERTINTOnombre_fichero[(nombre_columna,...)]FROMfichero_ascii

    Paraentenderelfuncionamientodeestasentencia,simplemente,seindicarqueporcadalneadelficherodetextoelprogramalaconvertirenunasentenciaIINSERTylaejecutar.Porlotanto,enelficherodetexto,laslneasdebernserdelamismaformaqueseexplicenexpr,conladiferencia,dequelasfechasnoirnentrellaves,yaqueeselprogramaelqueseencargadeponerlas.

    Medianteestaltimasentencia,podremosimportardatosdecualquieraplicacin,siempreycuandosehayanconvertido,previamente,aASCII.TambinpodremosaadirregistrosdeunficherodelaBasedeDatosaotrooalmismoconlautilidaddeexportarelresultadodeunaconsultaSQLy,posteriormenteimportarlosconlasentenciavistaanteriormente.

    SentenciaUPDATE

    LasentenciaUPDATEseutilizaparacambiarelcontenidodelosregistrosdeunatabladelabasededatos.Suformatoes:

    UPDATEnombre_ficheroSETnombre_columna=expr,...[WHERE{condicin}]

    nombre_ficheropuedesernicamenteelnombredelficherooelnombrecompletoconsucamino.Siseutilizasoloelnombredelficheroseutilizaeldirectoriodondeseencuentranlosficherosdelaaplicacin(C:\geiwin\datos).

    nombre_columnaeselnombredecolumnaocampocuyovalorsedeseacambiar.EnunamismasentenciaUPDATEpuedenactualizarsevarioscamposdecadaregistrodelatabla.

    expreselnuevovalorquesedeseaasignaralcampoqueleprecede.Laexpresinpuedeserunvalorconstanteounasubconsulta.Lascadenasdecaracteresdebernestarencerradasentrecomillaso"ylasfechasentrellaves{}.Lassubconsultasentreparntesis.

    LaclusulaWHEREsigueelmismoformatoquelavistaenlasentenciaSELECTydeterminaqueregistrossemodificarn.

    Porejemplo,subirelpreciodecompradelatabladelibrosun10%deaquellosquetenganmsde250pginas,sera:

    UPDATED:\LIBROSSETPRECIO=PRECIO*1.1WHEREPAGINAS>250

    Otroejemplo,parafijarlafechadematrculadetodosaquellosalumnosquelatienenvacaalafechadehoy,sepondra:

    UPDATEMATRICULSETFECHA_MATRICULA=TODAY()WHEREFECHA_MATRICULAISNULL

    Ejemploutilizandounasubconsulta:

    UPDATED:\LIBROSSETPRECIO=(SELECTAVG(PRECIO)FROMD:\LIBROSWHEREPRECIOISNOTNULL)WHEREPRECIOISNULL

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 17/20

    Conestaltimasentenciasehapuestoprecioatodosloslibrosquenolotenan.Esepreciohasidoelresultantedecalcularlamedaentreloslibrosquesilotenan.

    SentenciaDELETE

    LasentenciaDELETEseutilizaparaborrarregistrosdeunatabladelabasededatos.Elformatodelasentenciaes:

    DELETEFROMnombre_fichero[WHERE{condicin}]

    nombre_ficheropuedesernicamenteelnombredelficherooelnombrecompletoconsucamino.Siseutilizasoloelnombredelficheroseutilizaeldirectoriodondeseencuentranlosficherosdelaaplicacin(C:\geiwin\datos).

    LaclusulaWHEREsigueelmismoformatoquelavistaenlasentenciaSELECTydeterminaqueregistrosseborrarn.

    CadasentenciaDELETEborralosregistrosquecumplenlacondicinimpuestaotodossinoseindicaclusulaWHERE.

    DELETEFROMD:\LIBROSWHEREMOD(TODAYFECHA,365)>20

    Conelejemploanteriorseborrarantodoslosregistrosdelatablalibroscuyaantigedad,desdelafechadeadquisicin,fueramayorde20aos.

    Paraborrarlasnotasdeevaluacionesque,noseanlaFinal,delosalumnosdeaosanterioresseutilizaralasentencia:

    DELETEFROMNOTASWHEREANNO

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 18/20

    Alcontrariodeloqueocurreconlosndicesprimarios,unndicenoprimarionoidentificadeformanicaacadaregistrodeunatablaesdecir,dosomsregistrospuedencompartirlosmismosvaloresenloscamposqueformanlaclavenoprimaria.UnatablaParadoxpuedetenermsdeunndicenoprimario,ypuedenestarbasadosendistintoscamposyenelordendeseado.

    Existendosclasedendicesnoprimarios:mantenidosynomantenidos.Ladiferenciaentreunosyotrosestribaenquelosprimerosseactualizanautomticamentecuandolatablacambia,mientrasquelossegundossimplementequedanmarcadoscomodesactualizadosyseactualizanlaprximavezquesonusados.

    Parapoderdisponerdendicesnoprimariosenunatabla,esprecisotenercreadoanteselndiceprimario.

    Losndicesnoprimariosqueconstandeunnicocampoclaveyquehacendistincinentremaysculasminsculascompartenlosmismosnombresdeficherosquelastablasalasquepertenecenperoselesasignalasextensiones.X01hastaXFFdependiendodelndecampoenelqueestnbasados.Losndicesconunnicocampoenlaclaveperoquenohacendistincinentremaysculasyminsculasolosquetienenmsdeuncampoenlaclaveposeenelmismonombrequesutablaperoconlasextensionesqueempiezanen.XG0conincrementosenhexadecimalhastaelndendicesqueposealatabla.

    Sentenciasparacrearodestruirndices

    Lastablasdelaaplicacindisponendesuspropiosndicesquenodebensermodificadosnidestruidas.Sielusuariolohicieraesbajosupropiaresponsabilidad.Noobstantesedalaposibilidaddecrearselosndicesparasuspropiastablasoaadirotrosalasdelaaplicacin.Comotambinborrarlospropios.

    LasentenciaparacrearunndiceesCREATEINDEXyparadestruirloDROPINDEX.

    Sentenciacrearndiceprimario

    Lasintaxisparacrearunndiceprimarioeslasiguiente:

    CREATEINDEXPRIMARYONnombre_fichero(nombre_columna[,nombre_columna...])

    nombre_ficheroeselnombredelatablaenlacualsebasaelndice.

    nombre_columnaeslalistadecamposquecomponenlaclaveprimariadelndice.Debeenumerarunoomscamposconsecutivosdelatabla,comenzandoporelprimero.

    Porejemplo,

    CREATEINDEXPRIMARYOND:\LIBROS(TITULO,PAGINAS)

    Sentenciacrearndicenoprimario

    Lasintaxisparacrearunndicenoprimarioes:

    CREATEINDEXnombreindice[/NON_MAINTAINED][/CASE_INSENSITIVE]ONnombre_fichero(nombre_columna[,nombre_columna...])

    nombreindicesirveparaidentificaracadandicenoprimarioporunnombrequecreaelusuario.

    LaopcinNONMAINTENEDhacequeelndiceseanomantenido.Pordefecto,sinoseincluye,secreamantenido.

    LaopcinCASEINSENSITIVEhacequeelndicenodistingaentremaysculasyminsculas.Pordefecto,sinose

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 19/20

    incluye,sihaydistincin.

    nombre_ficheroeselnombredelatablaenlaquesebasaelndice.

    nombre_columnaeselnombredelcampoocamposqueformanlaclavenoprimariadelndice,puedeestarencualquierorden.

    Porejemplo,

    CREATEINDEXPOR_FECHASOND:\LIBROS(FECHA)

    Sentenciadeborradodendice

    Lasintaxisparaladestruccindeunndiceprimarioes:

    DROPINDEXnombre_camino.PRIMARY

    Porejemplo:

    DROPINDEXD:\LIBROS.PRIMARY

    Lasintaxisparaborrarunndicenoprimarioes

    DROPINDEXnombre_camino.nombre_indice

    Porejemplo:

    DROPINDEXD:\LIBROS.POR_FECHAS

    nombre_caminoeselnombredelatablacuyondicesequiereborrar.Puedeconsistirsolamentedeunnombredeficheroodeuncaminocompleto.

    nombre_indiceeselnombrequeselediocuandofuecreado.

    Transacciones

    Unatransaccinesunaseriedecambiosenlabasededatosquedebensertratadascomounasola.Enotraspalabras,queserealicentodosoquenosehaganinguno,puesdelocontrariosepodranproducirinconsistenciasenlabasededatos.

    CuandonosetieneactivadaunatransaccinelgestordebasededatosejecutainmediatamentecadasentenciaINSERT,UPDATEoDELETEqueseleencomiende,sinposibilidaddedeshacerloscambioencasodeocurrircualquierpercance.CuandoseactivaunatransaccinloscambiosquesevanrealizandoquedanenunestadodeprovisionalidadhastaqueserealizaunCOMMIT,elcualhardefinitivosloscambiosohastarealizarunROLLBACKquedeshartodosloscambiosproducidosdesdequeseinicilatransaccin.

    ElinterpreteSQL,quesevermsadelante,permiterealizartransacciones.Conelbotnlainiciar,conelbotnproducirunCOMMITyconelbotnproducirunROLLBACK.

    MejorasenelrendimientodelinterpreteSQL

    EllenguajeSQLesnoprocedimental,esdecir,enlassentenciasseindicaquequeremosconseguirynocomolo

  • 28/3/2015 IniciacinalLenguajeSQL

    http://www.pablin.com.ar/computer/cursos/varios/sql1.htm 20/20

    tienequehacerelinterpreteparaconseguirlo.Estoespurateora,puesenlapracticaatodoslosgestoresdeSQLhayqueespecificarsuspropiostruquitosparaoptimizarelrendimiento.

    Portanto,muchasvecesnobastaconespecificarunasentenciaSQLcorrecta,sinoqueadems,hayqueindicarlecomotienequehacerlosiqueremosqueeltiempoderespuestaseaelmnimo.Enesteapartadoveremoscomomejorareltiempoderespuestadenuestrointerpreteanteunasdeterminadassituaciones:

    SeprocurarelegirenlaclusulaWHEREaquelloscamposqueformenpartedelaclavedelficheroporelcualinterrogamos.Ademsseespecificarnenelmismoordenenelqueestndefinidosenlaclave.Porejemplo,siinterrogamosalficheroMATRICULlasentenciawheredeberllevarenprimerlugarMATRICULA=valor,despuspuedellevarANNO=valor,yassucesivamentesiguiendoelordenenelqueestdefinidalaclave.(VerelapartadodeestructuradelaBasedeDatosparaobservarelficheroMATRICUL).

    Sielficherocontieneotrasclaves,ademsdelaprimaria,sepuedeutilizarelmismocriterio.Porejemplo,comoMATRICULcontienedosclavessecundarias,conlaprimerapodemosinterrogardeformaoptimaindicandoenlaclusulawhereANNO=valorANDGRUPO=valorAND....,yconlasegundaclaveANNO=valorandESTUDIOS=valorAND....PorlotantosienlaclusulawherealaccederaesteficheronoindicamosqueMATRICULAcontengaundeterminadovaloroqueANNOnotengaotro,noseconseguirunaccesorpidopueselgestornopodrutilizarningnndiceytendrquehacerseunrecorridosecuencialportodoelfichero.

    Cuandoserealicenenlacesdetablas,elhacerloyenelordenadecuadoutilizandondices,ayudarmuchoaoptimizarelrendimiento,puesdelocontrariopuedeconsumirmuchotiempo.

    Porejemplo,dadalasentencia:

    SELECTAPELLIDOSFROMALUMNOS,MATRICULWHEREALUMNOS.MATRICULA=MATRICUL.MATRICULAANDMATRICULA.ANNO=1995ANDMATRICUL.TIPO=O

    EnestasentenciasehanenlazadolatablaALUMNOSyMATRICULasutilizandoelcampoclaveMATRICULAdeambastablas.PeroelinterpreteserecorrercadaunodelosregistrosdelficheroALUMNOSycomprobarparacadaunodeellossiposeeMATRICULaOficialenelao1995.

    Lomslgicoserahacerloalcontrario,esdecir,paracadaMATRICULaOficialdelao1995seaccedealficheroALUMNOSconelcampoMATRICULAyseconsiguesusapellidos.DeestaformanosahorramoseltenerquerecorrernostodoelficherodeALUMNOS.QuizpiensequenostenemosquerecorrertodoelficherodeMATRICULasyquehemoscomplicadoelproblema,perolociertoesquecomoimponemosrestriccionesconcamposclaveelaccesoesnicamentealosregistrosquecumplanlacondicinimpuesta.

    Portanto,lasentenciaanteriordeberaser:

    SELECTAPELLIDOSFROMMATRICUL,ALUMNOSWHEREALUMNOS.MATRICULA=MATRICUL.MATRICULAANDMATRICULA.ANNO=1995ANDMATRICUL.TIPO=O

    LonicoquehacambiadoeselordendeenumeracindelosficherosenlaclusulaFrom.Tengasiempreencuentaqueelrecorridoseefectuarsiempreempezandoporelficheroqueenumeremosenprimerlugar,luegoporelsegundoyassucesivamente.


Top Related