comando s mysql

Upload: zmith-vera-reyes

Post on 10-Oct-2015

4 views

Category:

Documents


0 download

TRANSCRIPT

  • LENGUAJESQL

    Unmanejadordebasededatosdebedecontenerlenguajesquepermitandefinirelmodelosdelosdatos,estemismoesquepermitecrearlaestructuradelabasededatos.

    LenguajedeDefiniciondeDatos

    EnMysqlelLenguajedeDifiniciondeDatos(LDD)esunsubconjuntodeSQL(CreateTable,createIndex,Createview,createtable,droptable,dropdatabase,dropview,etc;).

    LenguajedeManipulaciondeDatos

    Este lenguaje es que se utiliza para realizar las operaciones como son: consultas (Lenguaje deConsultas),Borrar,insertaryactualizardatos.

    EnMysqlseutilizaunsubconjuntodeSQL(update,insertinto,delete,select,truncate,etc).

    TodosloscomandosdemanejadorMysql,sedebendeterminarconun;,sinoseterminaconun;, elcursorsaltaalasiguientelineaparaseguirescribiendomascomandos,esdebidoaquepuedenexistirsentenciasdeconsultaocreacindetablasmuygrandes,ydeestamanerasehacemultilinea.

    ComandosbsicosparaelLDD,yvisualizacindeesquemas

    CREATEDATABASE;Estecomandocreaunanuevabasededatossobreelmanejadorqueseestautilizando

    USECuandosehacreadounabasededatosysepretendetrabajarsobreella,esnecesarioejecutar

    estecomandoparaasignarlaalreadetrabajo,sisequierecrearalgunatabla,ocurreunerrordebidoaquenosehaestablecidoelreadetrabajo,queenestecasoseralabasededatos.Estasentencia,esla unicaquesepuedeejecutarsinunpuntoycomaparaterminar.

    SHOW[DATABASES|TABLES];Avecesesnecesarioverificarsiaunnosehacreadounabasededatosconalgnnombre

    especifico,otaltalvezverificarquealcrearunabasededatos,laoperacinhayatenidoxito,paraesto,elcomandoshowpermitevisualizarlasbasesdedatossobreelmanejadorolastablassobreunaBDenelreadetrabajo.

    CREATE TABLE ([atributos caractersticas] primary key(atributo), foreignkey(atributo)referencetabla)

    Paracrearlasdefinicionesy/oesquemasdelasentidadesquevanaformarpartedelabasededatos,seejecutaestecomandoparacrearunaentidadotabladelabasededatos,enestadefinicinseespecificantambinlasllavestantoprimariacomoforneas.

  • Ejemplo:createtablepersona(idint(3)notnullauto_increment,nombresvarchar(50)notnull,apellidos

    varchar(30)default'',primarykey(id));

    Lainstruccionanteriorcreaunatablallamadapersona,estableciendocomollaveprimariaelatributoidqueesteesautoincrementable.

    CREATEVIEWas(tablatemporal);Estecomandoseutlizaparacreartablasvirtualesenlabasededatos,esdecir,sepuedeutlizar

    paracrearespejosdetablas,laspropiedadesquetienesonquecualquieroperacionsobrelosdatosenestatablavirtual,tienenefectosobrelosdatosoriginales,latablatemporalpuedeserunaconsulta simplehastaunconsultacompleja.

    DROP[DATABASE|TABLE|VIEW];Este comando se utiliza para eliminar tanto bases de datos como tablas, y vistas (tablas

    virtuales).

    Ejemplo:sisequiereeliminarunatablaquetienecomonombrepersonas:

    DROPTABLEpersonas;

    Estossonloscomandosbasicosparaladefiniciondelosdatos, Algunoscomandomarcanerrorescuandosepretendecreartablas,basesdedatos,y/ovistas,cuandoyaexisten,paraevitarestetipodeerrores, el manejador de bases de datos provee unas instrucciones condicionales para no cometererrores.

    IFEXISTS,IFNOTEXISTS:estossonlasclausulasparaverificarantesdecrearalgunaentidadoDB,lamaneraenqueseutilizaneslasiguiente:

    CREATETABLEIFNOTEXIST(......)CREATEDATABASEIFNOTEXISTS;CREATEVIEWIFNOTEXISTS;

    delamismamaneraparacrearnuevasentidadesoDB's,seutilizaparaeliminarentidadesyoDB's;

    DROP [VIEW | DATABASE | TABLE] IF EXISTS

    Hastaelmomentosehandefinidoloscomandosparaladefiniciondedatos,entoncesloscomandosdemanipulaciondedatos,sonlosquepermiteninteractuarconlainformaciondelaBD,esdecir,sonlosquepermiteninsertar,actualizar,eliminar,etc.LosdatosdelaBD.

    ComandosdelLenguajedeManipulaciondeDatos

    Ellenguajedemanipulaciondedatossepuedeclasificaren2tipos:

  • Lenguajedeconsultaylenguajedemanipulacion.

    Ellenguajedeconsultapermiteobtenerlainformacionrequeridaporelusuario,yelcomandoutilizadoparacrearlosreportes(tablas)paraundeterminadousoes:

    SELECT [atributos, ...] FROM [tabla1, tabla2 .....] WHERE [condiciones] ORDER BY[atributos,atributos].

    Estecomandoseutilizadediferentesmaneras,yseleconocecomosentenciasdeconsulta,obtenerdatos,yseusandemanerasimplehastademaneracompleja.

    Simplesconunasolatabla:

    SELECT*FROMtabla;Estasentenciaobtienetodoslosatributosdetodoslosregistrosqueexistenentabla.

    SELECTatrib1,atrib2,...,atribnFROMtabla;Realizalamismaaccionquelasentenciaanterior,adiferenciadequeenlaanteriorsemuestran

    todoslosatributos,yenestasemuestransoloalgunosatributosespecificados.

    Cuandoserequiereobtenersololosregistrosquecumplenalgunarestriccionocondicionenalgunosdelosatributosdeunatabla,seutilizalaclausulaWHEREparaespecificarlascondicionesquedebencumplirlosregistrosquesedesean.

    SELECT*FROMtablaWHERE(Atributo='valor');

    Cuandosetienenvariascondiciones,sepuedenutilizarlosoperadoreslogicosenconjuntoconlosoperadoresdecomparacion:

    Operadoreslogicos:AND(&),OR(|)NOT.

    Operadoresdecomparacion:= comparadordeequidad< Menorque> Mayorque>= Mayoroigualque5ORC='Mil'));

    ElcomandodeconsultatambiensepuedeutilizarconlaclausulaLIKE,quepermitemanejarpatrones,esdecir,seespecificaunpatronpararealizarlascomparaiones,ylosregistrosquetenganesepatronenelatributoespecificadosevanaobtenerindependientementemaysculaominuscula.

  • Elusodeestaclausulaesdelasiguientemanera:

    ('%patron%'),esteespecificaquenoimportaendondeaparescaesepatron,inclusopuedenoexistir, esdecirnoimportaquetengaatras,niquetengadelantedelpatron,sevaaobtenerelregistro.

    ('patron%'),Esteusodefinequetodoslosregistrosqueempiecenconelpatronespecificadosevanaobtener.

    (%patron),delamismamanera,queelanterioradiferenciaqueentesonlosqueterminan.

    Ejemplo:

    SELECT*FROMpersonaWHERE(ApellidosLIKE'Perez%');

    enesteejemploseobtienentodoslosregistrosdelatablapersonaqueempiezanconPerez,noimportaquetengadespus.

    Cuando existen varias condiciones sobre un mismo atributo en una sentencia es tedioso estarespecificandocadacondicinsobreelatributo,paraeliminarestaproblematicayquelassentenciasnosetornenmuygrandes,SELECTsecombinaconlaclausulaINquerecibeunconjuntodevaloresenloscualessevanaevaluarlascondiciones

    Ejemplo:

    SELECT*FROMtablaWHERE(id[NOT]IN(valor1,valor2,valor3,....,valorn))

    enelcasodequeseancadenasdecaracteressemetenentrecomillas.

    EnresumenelcomandoSELECTobtieneregistrosdeunaomastablas,ycomoresultadoentregaunatablatemporal.

    ElLenguajedeManipulaciondedatoseselquepermitecomosunombreloindicamanipularlosdatosexistentesenlabasededatos.

    InsertarRegistros.

    INSERTINTO.Estecomandopermiteinsertarregistrossobreunatablaenespecificodelabasededatos,yexisten3manerasbsicasdeinsertarregistros.

    1.INSERINTO('campo1','campo2')VALUES('valorCampo1','valorCampo2');2.INSERINTOVALUES('valorCampo1','valorCampo2');3.INSERINTOSETcampo1='valorCampo1',campo2='valorCampo2';

    Lamaneraenqueseenvianlosdatosen1y2eslamisma,esdecir,enelordenenqueseencuentranloscampoenlatabla,demismamaneraseleenvianlosdatos,adiferenciadela3noimportaenqueoredenseleenvienlosdatos,yaqueenestaultimaseleespecificaelnombreelcampo.Asimismo,

  • cuandonosetienendatosparadeterminadoscamposconvalorespordefault,esnecesarioespecificarelespaciodelcampoen3nosoloseomite.

    Actualizardatosderegistros.

    Elcomandoparactualizardatosenunafiladeterminadaseutiliza:

    UPDATESETCampo='valornuevodeCampo'WHERE(condiciones);

    sisetienenqueactualizarvarioscampos,seseparanconcomas,OJO,lacondiciondeactualizacionesnecesariasisolosequiereactualizarendeterminadasfilas,yaquesinoseindicaunacondicion,seactualizantodaslasfilasdelatabla,yestopuederesultardesagradablesinosepretendiaeso,MySQLno permite retaurar, a diferencia de otros Manejadores, que si se equivocan, con solo escribirROLLBACK,deshacentodaslasoperacionesquehanhechosincausardaosenlaBD,comoeselcasodeORACLE,asiquemuchocuidado.

    EliminarRegistros.

    cuando existen registros inecesarios ne las tablas y no se pretende llevar un historial, osimplementeseequivocaronyquiereneliminartodalafila,EllenguajeSQLpermiteeliminarregistrosmedianteelcomandoDELETE.

    DELETEFROM[tabla1,tabla2]WHERE(condicionestabla1ytabla2);

    Estecomandoesmuyimportantesuuso,deigualmaneraqueUPDATEnecesariamentetienequellevarlas condiciones deeliminaciondefilas, yaquesi noseespecificalacondicion, eliminatodoslosregistrosdela tabla, yesopuedesermuydesastrosoparalosAdministradoresdeDB,asi muchocuidadoconestecomando.

    Sisequiereeliminartodoslosregistrosdelatablan,SQLpermitehacerloconuncomandomuhsimpleTRUNCATE,yseusadelasiguientemanera:

    TRUNCATE;

    Yelresultadoesvaciarlatabladeregistros,esmuyparecidoalaaccindevaciarlapapeleradereciclajedeUnix.

    Hastaelmomentossehanestaejecutandosentenciassobreunasolatabla,cuandosrequiereaccederalosdatosdemasdeunatablarelacionadasdealgunamaneraynorelacionadas,existenlasopcionesavanzadasdeloscomandosmencionadosconanterioridad.

    ComandoSELECTconvariastablas:

    SELECTtabla1.*,tabla2.*fromtabla1,tabla2WHERE(condicionesderelacion)

    Enestetipodeconsultasesnecesarioespecificarlacondicionderelacionquehayentrelastablas,esto

  • debido a que si no se especifican se van a realiza operaciones del algebra relacional que no seobtendranresultadossatisfactorios.

    Estecomandopermiteutilizarseconunaclausulaquepermitedistinguirdatosdeuno,ylaclasusuesDISTINCT,quepermiteobtenerdatosnoduplicados,siysolositodoslosatributosseparecen.

    SELECTDSTINCTtabla1.*,tabla2.*FROMtabla1,tabla2WHERE(Condicionesderelacion)

    AnteriormenteseindicoqueelcomandoSELECTdacomoresultadootratabla,porlotanto,sisequierenobtenersoloalgunasfilasdelresultadodeunaconsulta,sepuedehacerdeunamaneramuysimple,aquisehaceusodelosALIAS,quepermitenombrayaseaunatabla,ounatributoyseusadelasiguientemanera:

    SELECT*FROM(SELECT*FROMtablaWHEREid>20andid

  • SELECT*fromtabla1UNION[ALL]tabla2

    ElcomandoIntersectObtienelainterseccionde2tablas,esdecirlosregistrosqueestanentabla1yqueestanentabla2.

    SELECT*FROMtabla1INTERSECTtabla2

    ElcomandoMINUSobtienelosregistrosquenoestanenlatabla2SELECT*FROMtabla1MINUStabla2;

    Loscomandodeequijuntasporasociacionesyaseaalaizquierdaoladerecha:

    SELECT*fromtabla1JOINtabla2onC1=C2;

    estetipodecomandoentregacomoresultadounauniondetablas,esdecir,secreaunatablaconlosatributosdetabla1ytabla2

    ElIDENTIFICADORLEFToRIGHTespordondesehacelajunta,ElIDENTIFICADOROUTER,indicasiseadierenaunquenocumplalacondicion.

    Ejemplos:

    SELECTtabla1.*,tabla2.*fromtabla1RIGHTJOINtabla2onC1=C2;

    SELECTtabla1.*,tabla2.*fromtabla1LEFTJOINtabla2onC1=C2;

    SELECTtabla1.*,tabla2.*fromtabla1LEFTOUTERJOINtabla2onC1=C2;

    SELECTtabla1.*,tabla2.*fromtabla1RIGHTOUTERJOINtabla2onC1=C2;

    elresultadodelassentenciasanterioressondiferentes,yaquelajuntasehaceenunadireccionyotra,delamismamaneraquelasclausulasdelalgebrarelacional,delamaneraenqueseespecificanseobtienenresultadosdiferentes.

    Elusodeloscomandosdellenguajedemanipulaciondedatospuederserdemuchasmaneras,comoporejemplo,sisepretendeinsertarregistrosdeunatablatemporalaparatirdelosregistrosdeunaomastablas,seprocededelasiguientemanera.

    INSERTINTOtablaAS(SELECT*FROMtablasWHERE(condiciones)).

    EJERCICIOS:

    Delabasededatosporporcionada,realizarlassiguienteconsultas:

    1.Muestretodoslosprofesoresquetienenporlomenosunapublicacion

    2.MuestrelosprofesoresquetienennivelSNI

  • 3.Muestrelosprofesoresquetenganperfilpromep

    4.SiformapartedelgrupodedocentesdealaFim,actualicesuGradoacademico,noimportaquenolotenga,soloactualiceesecampoparasupersona;

    5.ObtengalosusuariosquenopertenecenalgrupodedocentesyqueestanenlaBD

    6. Liste los Proyectos que tienen los usuarios jpacheco, gsolorio, mvega, ladamex,mvillagomez

    7.Obtengalacantidadderegistrosobtenidosparaelpatronadmindentrodelatablausuariosypersonas

    8. Obtengaunlistacontodoslosprofesoresconelniveldeaccesoyel ordenadosporGrado;lamaneraquedaacriterio.