+ All Categories
Home > Documents > Programación PHP -Introduccion Al SQL - VerFinal

Programación PHP -Introduccion Al SQL - VerFinal

Date post: 06-Jul-2018
Category:
Upload: vero-gonzalez
View: 232 times
Download: 0 times
Share this document with a friend

of 22

Transcript
  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    1/22

    Programación PHP – Módulo III

    Introducción al SQL

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    2/22

    Tabla de Contenidos

    Programación PHP – Módulo III............................................................................ 1

    Introducción al SQL............................................................................................. 1

     Tabla de Contenidos............................................................................................2

    Introducción........................................................................................................ 3

    ases de datos relacionales.............................................................................3

    !n Primer "#em$lo...........................................................................................3

    Consultas............................................................................................................ %

    Consultas Sim$les............................................................................................%

    Consultas de em$are#amiento.........................................................................&

     Totali'aciones utili'ando SQL.........................................................................11

    Inserciones........................................................................................................ 1(

    orrado............................................................................................................. 1&

    )ctuali'aciones.................................................................................................2*

    2

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    3/22

    Introducción

     A lo largo del segundo módulo de este curso, hemos introducido las nociones

    básicas de la programación PHP utilizando conexiones a bases de datos,especialmente MySQL A partir de ello, en el presente módulo pro!undizaremos enel lengua"e de consulta SQL, lengua"e destinado a operar con bases de datosrelacionales, particularmente MySQL Posteriormente comenzamos a recorrer elcamino del aprendiza"e de la programación orientada a ob"etos, los conceptossubyacentes, y su aplicación en PHP Por ultimo re#isaremos algunos conceptosde seguridad en aplicaciones $eb y su aplicación mediante PHP

    Bases de datos relacionales

    %l SQL &Standard Query Language) es, como sus siglas lo indican, un lengua"e

    estándar de consultas utilizado en las bases de datos relacionales para acceder,manipular y actualizar los datos almacenados en ellas

    Las bases de datos relacionales se llaman as' por(ue parten de la utilización delconcepto de relación para obtener datos almacenados en di!erentes estructuras dealmacenamiento &tablas) mostrándolos como una estructura espec'!ica en !uncióndel resultado necesario &*istas) La idea detrás de las bases de datos relacionaleses (ue el usuario !inal no deba restringirse a la estructura de!inida dealmacenamiento, si no (ue pueda obtener los datos (ue necesita en una solaestructura aun(ue ellos est+n almacenados completa, parcial o en !ormacompartida en una o más tablas de la base de datos

    %l lengua"e SQL, es a la #ez un lengua"e simple pero muy potente, y para poderextraer de +l toda su potencialidad hay (ue dominar disciplinas de algebrarelacional (ue trascienden los alcances de este módulo y por lo tanto noslimitaremos a mostrar la !orma de realizar consultas y actualizaciones simples delos datos almacenados

    Un Primer Ejemlo

    *amos a tomar como base una base de datos llamada  prueba, con dos tablascliente y cheques con la siguiente estructura

    -abla Cheques

    3

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    4/22

    -abla Clientes

    .omo #erán utilizaremos el PhpMyAdmin para este tutorial

    La primera tarea a realizar es obtener el contenido completo de cada una de lastablas Para ello utilizaremos los comandos SQL USE y SELECT.

    USE [base de datos]

    SELECT [colu!nas] "#$% [tabla]

    .on el comando USE  seleccionamos sobre (u+ base de datos #amos a traba"ar%n el caso (ue seleccionemos la base de datos del panel de la iz(uierda, el usode este comando es innecesario .on el comando SELECT  obtendremos los datosalmacenados en la tabla

    +

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    5/22

    Por supuesto estos comandos los debemos escribir en la #entana SQL delPhpMyAdmin

    .omo resultado de e"ecutar la consulta, mediante el botón Continuar , obtenemosel contenido completo de la tabla cliente.

    /bser#emos (ue el comando ingresado !ue

    Select & 'ro! cliente

    Consultas

    Consultas Simles

    %l SELECT  es una palabra reser#ada del SQL e indica (ue #amos a seleccionarlos campos (ue se indican a continuación &0 indica todos los campos) desde&"#$% ) la tabla elegida &cliente)

    %

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    6/22

    Si (uisi+ramos mostrar solo algunos campos simplemente ingresamos

    %l resultado es el siguiente

    .omo obser#amos, la consulta solo nos de#uel#e los campos codigo y no!bre

    .on esto hemos limitado el n1mero de columnas del resultado, si ahoradeseáramos limitar el n1mero de !ilas &cantidad de resultados) de la consulta,deberemos seleccionar un criterio de b1s(ueda de manera de !iltrar la consulta

    Por e"emplo, si deseamos #er los datos solamente del cliente nro 23 debemoslimitar el resultado en cuanto a las !ilas (ue de#ol#erá, esto se realiza mediante elmodi!icador (E#E  del comando SELECT 

    ,

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    7/22

    /bser#e (ue luego de la cláusula (E#E , se ingresó el criterio de seleccióndeseado &codigo * +).

    %l resultado es el esperado, y la consulta solo de#uel#e los datos del cliente nro 2

    %ntonces, con el comando SELECT  de!inimos (ue campos de la tabla #amos aobtener, con la cláusula "#$%  le indicamos de (ue tabla los #amos a obtener ycon la cláusula (E#E , indicamos condiciones de !iltrado sobre los datos aobtener La ultima cláusula (ue nos (ueda para esta primera mirada del comandoSELECT  es $#,E# -  (ue como su nombre lo indica nos permite alterar elorden en (ue se muestran los #alores en el resultado

    (

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    8/22

    Si e"ecutamos esta consulta el resultado es el siguiente

    Si obser#amos, traemos todas las !ilas de la tabla, pero el orden en (ue se nosmuestran es el indicado con la cláusula $#,E# -/ esto es, seg1n el e"emplo,ordenado por nombre y no por el código (ue es el orden por de!ecto

    La cláusula $#,E# - , ordena en !orma ascendente por de!ecto y si (ueremosin#ertir su !uncionamiento &!orma descendente) debemos agregar el modi!icador,ESC.

    -

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    9/22

    %l resultado de e"ecutar el SELECT  con el orden descendente es el mostrado en laimagen anterior

    Consultas de emarejamiento

     Ahora bien, hasta ahora hemos obtenido datos de una de las tablas existentes-oda#'a no hemos seleccionada nada (ue in#olucre las dos tablas Por supuesto

    lo aplicado indi#idualmente a la tabla cliente, es per!ectamente #álido para la tablacheques o para cual(uier tabla indi#idual sobre la (ue (ueramos traba"ar

    Para combinar datos de tablas di!erentes, SQL nos exige (ue ambas tablascompartan uno o un con"unto de campos (ue posean el mismo signi!icadosemántico Por e"emplo, en la tabla cheque existe un campo llamado cliente dondese indica de (ue cliente es cada che(ue, completando dicho campo con el códigodel cliente relacionado %s muy importante entender (ue en los campos (uecompartan ambas tablas, el contenido, esto es lo almacenado no solo debe ser del

    &

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    10/22

    mismo tipo y tama4o &en el caso (ue nos ocupa 56- de 7) sino (ue además debenposeer el mismo signi!icado

    Si estas condiciones ocurren, podemos combinar en una consulta, datos deambas tablas, de manera de mostrar al usuario !inal los datos como si se tratarade una 1nica tabla &concepto de 0ista)

    %l empare"amiento de tablas en SQL sigue conceptos de algebra relacional, parahacerlo un poco más sencillo, pensemos (ue cada tabla es un con"unto deelementos, y al empare"ar las tablas, SQL tratara de realizar una intersección entreambas tablas de manera de obtener las !ilas donde un datos determinado secomparta entre ambas tablas

    Para combinar ambas tablas entonces necesitamos indicarle al SQL por cualcampo e!pare1a!os ambas tablas de manera (ue pueda realizar la intersecciónindicada

    SELECT tabla2.ca!po/ tabla2.ca!po/ tabla+.ca!po "#$% tabla2/tabla+ (E#E tabla2.ca!po * tabla+.ca!po

    %n la descripción de la sintaxis mostrada más arriba, #emos (ue en el área dondeespeci!icamos las columnas del resultado, podemos incluir campos tanto de latabla8 como de la tabla2 Luego en la cláusula "#$%  debemos ingresar todas lastablas (ue !ormen parte de la consulta y en la cláusula (E#E  igualamos loscampos compartido para realizar el empare"amiento

    %n la práctica lo (ue estamos realizando es una intersección/ es decir (ue en elresultado solo nos #an a aparecer las !ilas (ue empare"en el campo igualado, estoes (ue contengan el mismo #alor en cliente y en cheques.

    %l resultado es el siguiente

    1*

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    11/22

     

    Totali!aciones utili!ando SQL

    Muchas #eces las necesidades de procesamiento (ue re(uiere un sistema,

    implican la totalización o resumen de datos almacenados %stos es, a partir de losdatos nominales almacenados en la base de datos, realizar una consulta, (ueademás de seleccionar los datos a mostrar, nos muestre un resumen de losmismos, con !unciones de totalización asociadas &por e"emplo sumarización,promedio, máximo, m'nimo, etc)

    .uando necesitamos totalizar datos de una tabla tenemos (ue empezar a utilizar'unciones internas del SQL, (ue nos permiten ir un poco más allá de la simpleselección de datos

    *amos a tomar nue#amente como base la base de datos llamada prueba, (uecontiene dos tablas cliente y cheques con la siguiente estructura

    11

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    12/22

    Lo primero (ue #amos a realizar es contar la cantidad de !ilas de una tabla

    Para ello necesitamos utilizar la !unción C$U3T4) (ue cuenta la cantidad de !ilasde una consulta

    %l resultado es el siguiente

    .omo #emos nos aparece solamente el total de !ilas y como titulo la eti(ueta total  (ue es la especi!icada con el clausula 5S

    La !unción C$U3T4) en realidad cuenta la cantidad de !ilas en el con"unto deresultados, y por lo tanto se #a a #er a!ectada si a!ectamos la cantidad deresultados Por lo explicado, el e"emplo anterior cuenta todos los registros de latabla seleccionada, puesto (ue no realizamos ning1n tipo de !iltrado

    12

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    13/22

    Si necesitamos contar cuantas !ilas de#uel#e la consulta, (ue cumplen con undeterminado criterio, lo (ue debemos utilizar es la cláusula (E#E 

    %n la cláusula (E#E  indicamos (ue solo cuente las !ilas cuyo campo codigo es

    mayor a 9

    %l resultado es 2, puesto (ue solo hay 2 !ilas (ue cumplen la condición indicada

     Ahora supongamos (ue necesitamos saber el importe total en che(ues (uetenemos de cada cliente %sto es un tipo de consulta muy com1n en un sistemaadministrati#o, esto es, a partir de una tabla general, obtener la totalización de uncampo de una tabla asociada

    %n el e"emplo (ue estamos usando, podemos utilizar las tablas cliente y cheques para realizar un e"emplo de este tipo de consultas

    13

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    14/22

    %l resultado como #emos es el detalle de la tabla cliente y la totalización de latabla cheques

    /bser#amos (ue hemos introducido una nue#a cláusula, llamada 6#$U7 - %sta cláusula es necesaria por(ue tenemos en la tabla cheques más de un

    che(ue por cada cliente, y lo (ue nosotros necesitamos saber es el importe totalpor cada cliente La cláusula 6#$U7 -  lo (ue hace es agrupar por los campos(ue 6/ est+n la !unción de agregación &en este caso SU%4) ) de manera obteneren el resultado una !ila por cada cliente, con el importe total de todos sus che(uessumarizados en la columna correspondiente

    1+

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    15/22

    :tilizamos la !unción SU%4) por(ue en este caso necesitamos totalizar el importede los che(ues

    Por supuesto podemos utilizar los !iltros necesarios mediante la cláusula (E#E ,

    en el e"emplo solo la utilizamos para empare"ar las tablas, pero podr'amos !iltrarademás por alguna condición anterior

    %s importante saber (ue la cláusula (E#E  se aplica P;%*5AM%6-% al aclausula 6#$U7 - y a la !unción SU%4), por lo tanto en estas dos 1ltimasinstrucciones solo #an a considerarse las !ilas (ue cumplan con las condicionesespeci!icadas en el (E#E 

     Asimismo podemos necesitar !iltrar el resultado de la aplicación de !unciones deagregación, esto es realizar un !iltro sobre el resultado !inal de la e"ecución de laconsulta SQL .omo ya #imos, la cláusula (E#E  no nos ayuda en esto puesto(ue ella !iltra A6-%S de la e"ecución de las agregaciones y por lo tanto deberemos

    utilizar otra clausual para !iltrar

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    16/22

    *emos (ue se ha agregado la cláusula 58936 donde le indicamos a la consulta(ue del resultado solo traiga a(uellas l'neas donde la sumatoria del importe de losche(ues sea mayor a 8====

    1,

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    17/22

    *emos (ue el resultado, a di!erencia del anterior, se limita a traernos dos !ilas,a(uellas (ue cumplen con la condición del 58936.

    Inserciones

    Hasta a(u' hemos #isto como consultar datos existentes en las tablas de nuestrabase de datos, pero los datos están all' por(ue en alg1n momento se insertaron enella .omo explicamos las base de datos relacionales solo admiten (ue el usuariose comuni(ue con ellas mediante SQL y por lo tanto las inserciones de datosdeben ser realizados mediante le mismo lengua"e

    La cláusula SQL para insertar datos en una tabla es 93SE#T  y tiene la siguientesintaxis

    93SE#T 93T$ tabla 4ca!po2/ ca!po+/ ca!po:/ ;../ ca!po3)85LUES 40alor2/ 0alor+/ 0alor:/ ;;./ 0alor3)

    *ayamos a un e"emplo para entenderlo rápidamente, supongamos (ue (uieroinsertar un nue#o cliente en mi tabla cliente.

    .omo siempre escribimos el comando en la #enta SQL del PhpMyAdmin, yobser#amos como seleccionamos las columnas de la tabla cliente y le asignamos&por orden) un #alor a cada uno de ellas /bser#emos (ue para las columnas (uealmacenan #alores num+ricos, los #alores han sido ingresados directamente ypara a(uellas (ue almacenan #alores tipo carácter, los #alores se han especi!icadoentre comillas

    1(

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    18/22

    %l PhpMyAdmin nos in!orma (ue hay 8 &una) columna a!ectada, por lo (uesabemos (ue la inserción ha sido realizada con +xito

     Ahora en el resultado obser#amos un problema, > La dirección nos (uedóalmacenada en el campo no!bre ?

    Si obser#amos el comando (ue introdu"imos, obser#amos (ue el campo do!icilio lo pusimos segundo en la lista, sin importar (ue sea el tercero en la de!inición dela tabla, y el #alor del domicilio &pichincha 29@ @to A) lo pusimos como tercer

    1-

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    19/22

    #alor asignado, por lo tanto el domicilio lo almaceno en no!bre y el nombre endo!icilio, simplemente por(ue eso !ue lo (ue di"e (ue haga Por supuesto (ueeste error es para remarcar (ue en la cláusula 93SE#T  es muy importanteconser#ar los órdenes puesto (ue si no es muy !ácil cometer errores sobre todo en

    inserciones comple"as

    Borrado

    .omo #imos en el e"emplo anterior, cometimos un error en la inserción de una !ila,por lo tanto deseamos eliminarla para corregir este error Para eliminar una o mas!ilas de una tabla necesitamos utilizar la cláusula ,ELETE  cuya sintaxis es lasiguiente

    ,ELETE "#$% tabla (E#E condiciones de borrado

    /bser#emos (ue la cláusula ,ELETE  no me permite especi!icar campos puesto

    (ue borra siempre una !ila completa%n el e"emplo deseamos borrar el cliente cuyo campo código tiene el #alor 29 (uees el (ue ingresamos erróneamente

    *emos (ue simplemente usamos la cláusula ,ELETE  con la indicación de sobre(ue tabla operar y en la cláusula (E#E  realizamos el !iltro pre#io al borrado,esto es seleccionamos (ue !ila se #an a borrar

    1&

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    20/22

    :na #ez más se nos indica (ue hay una !ila a!ecta por lo (ue podemos in!erir (ueel borrado se realizó con +xito

    Hay (ue aclarar (ue SQL no pre#+ en !orma estándar de ning1n m+todo derecuperación inmediato, por lo tanto siempre hay (ue estar muy seguro antes dee"ecutar una consulta de borrado

    "ctuali!aciones

    2*

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    21/22

    /tra de las necesidades comunes durante la e"ecución de un sistema, esmantener actualizados los datos almacenados en las bases de datos3 esto es,cual(uier dato, por lo general, su!re modi!icaciones a lo lardo del tiempo y la basede datos debe re!le"arlo

    Por supuesto no ser'a teóricamente posible dar de ba"a una !ila y darla de altanue#amente cada #ez (ue se modi!i(ue un dato, pero esto es altamenteine!iciente

    Para e#itar esto, SQL nos brinda una cláusula (ue nos permite actualizar los datosde campos indi#iduales dentro de una tabla determinando, esta cláusula esU7,5TE  y tiene la siguiente sintaxis

    U7,5TE  tablaSET  campo8B#alor8, campo2B#alor2, C campo6 B *alor6

    (E#E  campo6 B #alor6

    Supongamos ahora (ue el cliente

  • 8/17/2019 Programación PHP -Introduccion Al SQL - VerFinal

    22/22

    .omo #emos, una #ez más, PhpMyAdmin nos in!orma de una sola !ila a!ecta porlo (ue podemos deducir (ue la actualización se realizó con +xito

    22


Recommended