Está en la página 1de 22

FACENA UNNE

Taller de Programacin I Teora

Facultad de Ciencias Exactas y Naturales y AgrimensuraUNNE Desarrollo de Aplicaciones Web. Ao 2012

Expto. Oscar Zalazar - Lic. Luca Salazar - Expto. Pedro L. Alfonzo - Lic. Yanina Medina Osvaldo P. Quintana

FACENA UNNE

Taller de Programacin I Teora

Tema 9: Acceso a bases de datos MySQL en PHP


9.1.- Concepto. 9.1.2. Base de Datos en la Web. 9.1.3. La base de datos MySQL. 9.1.4. Base de datos relacionales.

9.2.- Lenguaje SQL. 9.2.1.- Consultas estructurales. 9.2.2.- Tipos de datos. 9.2.3.- Atributos. 9.2.4.- Consultas de Manipulacin de Datos 9.2.4.1- Sentencia INSERT INTO 9.2.4.2.- Sentencia SELECT 9.2.4.3.- Sentencia UPDATE 9.2.4.4.- Sentencia DELETE 9.3.- PHP y MySQL 9.3.1.- PhpmyAdmin. 9.3.2.-Comunicacin entre PHP y MySql. 9.3.4.-Conexin.

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

9.1.1. Concepto: Una Base de Datos es una coleccin de datos relacionados o bien estructura donde se almacena informacin siguiendo pautas de disposicin y ordenacin, o bien, una Base de Datos es una coleccin de datos organizados de tal manera que se pueda encontrar informacin cuando sea necesaria, pueden ser simples y pequeas o complejas y muy grandes. Tcnicamente el trmino Base de Datos, se refiere al archivo o grupo de archivos que contienen datos reales. Las Bases de Datos permiten acceder a datos sin necesidad de recorrer toda la Base de Datos para encontrar el dato buscado. El acceso a la Base de Datos es mediante un conjunto de programas llamado Sistema Administrador de Base de Datos (DBMS: Database Management System). Actualmente la mayora de los DBMS son sistemas Administradores de Bases de Datos relacionales (RDBMSs: Relational Database Management Systems) donde los datos se organiza y almacena en tablas relacionadas. Uno de los puntos fuertes de PHP es que ofrece soporte para diferentes tipos de DBMS (Ej. IBM, DB2, INFORMIX, MICROSOFT, SQL SERVER, MS SQL, ORACLE, POSTGRE SQL). Adicionalmente PHP tambin ofrece soporte para el estndar ODBC (Open Database Connectivity). El objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicacin, sin importar que DBMS almacene los Datos; se necesita tener instalado un driver ODBC. Luego de tener instalado el RDBMS a utilizar e instalarlo, es necesario conocer como disear y crear la Base de Datos a la cual se acceder de los scripts de PHP. 9.1.2. Base de Datos en la Web Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la informacin de un sitio web. Ventajas: Proporcionar informacin actualizada Facilitar la realizacin de bsquedas Disminuir los costes de mantenimiento Implementar sistemas de control de acceso
2 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

Almacenar preferencias de los usuarios Esquema bsico de un sitio web soportado por bases de datos:

En este esquema se observa que cuando un usuario desde su navegador (maquina del cliente) hace clic sobre un enlace correspondiente a un documento HTML que incluye cdigo PHP, el navegador realiza la solicitud al servidor web correspondiente. El servidor Web llama al intrprete de PHP si es necesario, PHP ejecuta los scripts interactuando con la base de datos (a travs de su gestor de base de datos que puede ser PHPMyAdmin) y devuelve al servidor el documento generado en formato HTML, el documento es interpretado por el navegador se ejecutan los scripts del lado del cliente y se presenta el resultado en la maquina del cliente.

9.1.3. La base de datos MySQL


Dentro de las mltiples posibilidades que los sitios Web dinmicos ofrecen al usuario est la obtencin de informacin almacenada en una base de datos en el servidor. Suponga que se quiere escribir una pgina desde el cual el usuario pueda obtener los

resultados de los eventos deportivos que se celebran en su ciudad. Se tendr una base de datos donde almacenar los resultados de encuentros de ftbol, partidos de tenis, combates de boxeo, carreras de caballos, etc. Su pgina dinmica recibir la solicitud del cliente sobre un determinado deporte, buscar esta informacin en la base de datos y se la servir al cliente. En el mercado existen diversos sistemas de bases de datos. Nosotros hemos elegido para este caso MySQL, por varias razones. Por una parte, es gratuito (aunque tambin existen licencias comerciales). Por otra parte, los datos se almacenan en archivos que tienen un tamao mucho menor que otras bases de datos. Adems, el motor de datos de MySQL es mucho ms rpido,
3 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

tanto grabando datos como localizndolos y recuperndolos, que el de otras bases de datos. Eso sin contar con que MySQL ofrece una gran seguridad sobre la integridad de los datos almacenados. El software open source es gratis y por otra parte los programas de tecnologa abierta son tan eficientes y seguros como los programas que no son gratuitos. 9.1.4. Bases de Datos relacionales. Las Base de Datos relacionales, permiten establecer relaciones entre los distintos datos que componen la misma. Una base de datos relacional est compuesta de relaciones que se llaman tablas. En una base de datos la informacin se almacena en TABLAS (entidades) cada TABLA est formada por FILAS (Instancias) llamadas tambin REGISTROS. Cada registro esta divido en CAMPOS (atributos) que forman columnas. Cada campo contiene un DATO y todos los campos de una columna tienen la misma estructura, es decir que en todos ellos se almacena un dato del mismo tipo tamao mximo etc. Cuando se crea una tabla cada columna tiene un nombre de campo, por ejemplo para una tabla Clientes, los campos serian: Nombre, Apellido, Domicilio, Telfono. Nombre Juan Jose Apellido Perez Domicilio Chaco 1546 Telfono 379-4458263

Dentro de cada una de las tablas es conveniente aunque no obligatorio crear un campo clave. El cual sirve de referencia para localizar el registro como se observa en el siguiente ejemplo. Las Base de datos relacionales son el tipo de Base de Datos ms comnmente utilizados y para ello es necesario conocer algunos conceptos como: Tablas, Columnas, Filas, Valores, Claves, esquemas y Relaciones. Las tablas: tienen un nombre, un nmero de columnas, cada una corresponde a una pieza de dato (campo o atributo). Columnas: cada columna en la tabla tiene un nombre nico y contiene distintos tipos de datos. Adicionalmente cada columna tiene asociado un tipo de dato. Filas: cada fila en la tabla representa un registro, cada fila tiene los mismos atributos.

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

Valores: cada fila se corresponde de un conjunto de valores individuales que corresponden a las columnas. Cada valor tiene el tipo de datos especificado por su columna.

Claves: cada registro en una tabla se debe identificar unvocamente, la columna que identifica al registro en la tabla se llama clave o clave primaria. La clave tambin puede ser compuesta. Las Bases de Datos, en general estn compuestas por mltiples tablas y utilizan una clave como referencia de una tabla a otra (Figura 2). El trmino para el tipo de relaciones es clave fornea. Ejemplo (Figura 1) tabla CLIENTES CLIENTES Cliente_id 1 2
3

Nombre Gabriel Miguel


Julio

Direccin Pasaje Cruz 12310 San Juan 1525


San Lorenzo 1544

Ciudad Corrientes Misiones


Corrientes

Figura 1: TABLA DE datos CLIENTES

ARTICULOS Articulo_id 1 2 3 Cliente_id 3 2 1 Cantidad 25 18 15 Fecha 2011-10-02 2011-08-5 2011-05-22

Figura 2: Clave Primaria y Clave Fornea Esquema: es el conjunto completo de tablas para una Base de Datos. El esquema puede representarse con diagramas informales, modelo entidad-relacin como texto. Relaciones: existen 3 tipos de relaciones:-----a) Relacin uno a uno -----b) Relacin uno a muchos -----c) Relacin muchos a muchos

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

a) Relacin uno a uno: significa que una fila en una tabla se relaciona con una sola fila en otra tabla y viceversa. b) Relacin uno a muchos: una fila en una tabla se relaciona con muchas filas en otra. La tabla que tiene varios registros tiene una clave fornea hacia la tabla con un registro. c) Relacin muchos a muchos: muchas filas de una tabla se relacionan con muchas filas de otra tabla. En este tipo de relaciones se utiliza una tercer tabla que contiene las claves de las otras dos tablas como claves forneas. Una de las ventajas de los RDBMS (Sistema administrador de Base de Datos Relacionales) es la seguridad de los Datos ya que no permite a cualquiera almacenar y obtener datos pues es necesaria una cuenta de usuario para utilizarlo. Una vez diseada la Base de Datos se puede almacenar, actualizar y recuperar los datos, PHP hace de esto una tarea sencilla 9.2.- Lenguaje SQL (Structured Query Languaje). Es un lenguaje estndar para manipular sistemas de base de datos relacionales (RDBMSs). Se utiliza para almacenar y recuperar datos desde una Base de datos y se integra muy bien a los lenguajes de programacin modernos, tiene relativamente pocas instrucciones y es muy facil de aprender a manejar con soltura. Por ejemplo SQL, no puede mostrar un registro de una Base de Datos en una pgina WEB pero si puede recuperar el contenido del registro y cedrselo al Script PHP, que es el que se encargar de darle el formato adecuado y mostrarlo en un documento HTML al usuario. Es utilizado en sistemas de bases de datos tales como: MYSQL, ORACLE, POSTGRE SQL MS SQL SERVER, entre otros. Hay un estndar de ANSI para SQL, y los Sistemas de Base de Datos como MySql generalmente luchan para implementar este estndar. Existen algunas diferencias entre el estndar SQL y MySQL. Las instrucciones de SQL, llamadas genricamente consultas, se pueden considerar divididas en 2 grupos. A) Las estructurales, tambin llamadas de definicin de datos DDL (Data definition Languaje) o definicin de datos del lenguaje: permite a los usuarios de la base de datos
6 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

llevar a cabo las tareas de definicin de las estructuras que almacenarn los datos as como de los procedimientos o funciones que permiten consultarlos. Estn destinadas a crear, modificar y eliminar la Base de Datos) y las estructuras de las tablas as como los ndices. B) La de manipulacin de datos DML (Data Manipulation Languaje) o lenguaje de manipulacin de datos, es un lenguaje proporcionado por el Sistema de gestin de Base de Datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulacin de datos organizados, por el modelo de datos adecuado. Estas instrucciones se ocupan de incorporar nuevos registros a las tablas segn los criterios necesarios, buscar nuevo registro, modificar los datos y grabarlos o eliminarlos. La mayora de las acciones que se necesitan realizar sobre una base de datos se hacen con sentencias SQL. Las sentencias para definicin de datos del lenguaje (DDL) son: CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEX

Las sentencias para Manipulacin de datos del lenguaje (DML) son: SELECT UPDATE DELETE INSERTO INTO

9.2.1. Consultas estructurales: Lo primero que hacemos para gestionar (administrar) una base de datos es crearla, las instrucciones SQL para realizar esto son llamadas genricamente consulta. Para crear realizamos la consulta CREATE DATABASE. Ej CREATE DATABASE IF NOT EXISTS clientes).
7 Facultad de Ciencias Exactas y Naturales y Agrimensura

CLIENTES;

//(creamos la base de datos

FACENA UNNE

Taller de Programacin I Teora

Todas las consultas SQL al igual que las de PHP deben terminar con punto y coma. La clausula IF NOT EXISTS es opcional pero si la Base de Datos ya existe se producir un error. La Base de Datos recin creada (CLIENTES) es solo un contenedor donde se guardaran los datos. Pero sin las tablas la Base de Datos no permite guardar nada.
consulta SQL para crear una tabla:

CREATE TABLE `clientes` ( `id_clientes` INT NOT NULL AUTO_INCREMENT , `nombre_clientes` VARCHAR( 50 ) NOT NULL , `apellido_clientes` VARCHAR( 50 ) NOT NULL , `ciudad_clientes` CHAR( 30 ) NOT NULL , `telefono_cliente` TINYINT( 15 ) NOT NULL , PRIMARY KEY ( `id_clientes` ) ) TYPE = MYISAM ;

En este ejemplo hemos creado la tabla clientes, usando CREATE TABLE seguido del nombre de la tabla que queremos crear, entre parntesis aparece la definicin de los campos que tendr la tabla, separadas cada uno del siguiente por una coma. Cada campo se crea anotando su nombre seguido del tipo de dato que se almacenara. En el ejemplo de creacin de la tabla clientes, hemos definido datos del tipo CHAR Y VARCHAR, los cuales se usan para almacenar cadenas alfanumricas y van seguidos de un nmero entre parntesis. En el caso de CHAR, este nmero indica la cantidad de caracteres que se reservan para la cadena. Si el dato introducido tiene menos caracteres, el campo seguir ocupando lo mismo en el disco, si se empleara VARCHAR y el dato introducido ocupa menos caracteres de los que se reservaron, ese campo en ese registro concreto ocupa menos, tantos bytes como caracteres tenga la cadena grabada. Al final de la definicin de la estructura de la tabla clientes, que hemos visto aparecen dos clausulas, en primer lugar tenemos PRIMARY KEY (id_cliente) nos indica que es una clave primaria. La cual la hemos definido como autoincremental. Otra clausula a la que tenemos que prestar atencin es la siguiente: TYPE = MYISAM, el tipo de tabla se refiere a la forma en que el motor de Base de Datos va a gestionarla. Esto es transparente al usuario. Las alternativas a MyISAM son ISAM Y HEAP. Cuando emplee MYSQL use siempre el tipo MyISAM, que es el menos restrictivo y ms eficiente. Como es lgico, si se desea se puede eliminar una tabla de la Base de Datos con la que estamos trabajando. Para ello emplearemos la consulta DROP TABLE.
8 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

Ejemplo: DROP TABLE IF EXITS nombre de la tabla; Nota: Se debe tener cuidado ya que la eliminacin de una tabla es irreversible. Se pierde todo: estructura y datos. El lenguaje SQL permite la creacin de ndices que el motor de Base de datos usara para agilizar la bsqueda de registros, mediante la consulta CREATE INDEX. Ej: CREATE INDEX ndice ON tabla (campo); Para eliminar un ndice: DROP INDEX ndice; La estructura de una tabla puede ser modificada si es necesario mediante la consulta ALTER TABLE, cuya sintaxis genrica es la siguiente: ALTER TABLE tabla ADD campo definicindelcampo CHANGE campoantiguo camponuevo definiciondelcampo, DROP campo; (Mediante la clausula ADD aadimos un nuevo campo, cambiamos el nombre y la definicin de campos ya existentes mediante la clausula CHANGE, o eliminar campos mediante la clusula DROP). 9.2.2. Tipos de Datos: Los tipos de datos que se puede manejar desde SQL son los siguientes: TIPOS DE DATOS SQL
TIPO

DESCRIPCION Entero 0 a 255 sin signo o de 128 a 127 con signo. Entero de 0 a 65.535 sin signo, o de 32.768 a 32.767 con signo. Entero de 0 a 16.777.215 sin signo o de -8.388.608 a 8.388.607 con signo. Entero de 0 a 4.294.967.295 sin signo o de -2.147.483.648 a 2.147.483.647 con signo. Entero de 0 a 18.446.744.073.709.551.616 sin signo o desde el negativo 9.223.372.036.854.775.807 con signo. Numero con coma flotante de simple precisin. M es la cantidad mxima de dgitos, sin contar el signo ni el punto decimal. D es el nmero de dgitos decimales. Numero en coma flotante de doble precisin. M y D como en el caso anterior. Fecha en formato HH:MM:SS, o bien HHMMSS o HHMM. Fecha y hora en formato AAAA-MM-DD HH:MM:SS. Hora en formato HH:MM:SS, o bien HHMMSS o HHMM. Cadena de n caracteres. Se reservan n caracteres, aunque el dato que luego se grave ocupe menos. . Cadena de longitud variable, se reservan n caracteres, pero si el dato ocupa menos, se

TNTYINT SMALLINT MEDIUMINT INT BEGINT FLOAT (M,D) DOUBLE (M,D) DATE DATETIME TIME CHAR (N) VARCHAR (N) 9

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora reduce su longitud. Texto plano con mximo de 255 caracteres Texto plano con un mximo de 65.535 caracteres. Texto plano con un mximo de 16.777.215 caracteres. Texto plano con un mximo de 4.294.967.295 caracteres. Archivo binario (puede ser texto RTF, imgenes, etc. con un mximo de 255 bytes) Archivo binario con un mximo de 65.535 bytes. Archivo binario con un mximo de 16.777.215 bytes. Archivo binario con un mximo de 4.294.967.295 bytes Campo que acepta cualquiera de los posibles valores enumerados entre parntesis. Nmero guardado como cadena alfanumrica. M y D como en el caso anterior.

TNTYTEXT TEXT MEDIUMTEXT LONGTEXT TINYBLOB BLOB MEDIUMBLOB LONGBLOB ENUM (V1, V2, ETC.) DECIMAL (M,D)

9.2.3.- Atributos:
ATRIBUTOS DE DATOS SQL ATRIBUTO NULL DESCRIPCION

Indica que el campo podr quedar sin ningn contenido cuando se cree un registro, o cuando modifique uno ya existente. Indica que este campo debe tener asignado un contenido obligatoriamente en cada NOT NULL registro. Si se intenta dejar sin contenido se producir un error. Indica el valor que el campo asumir por defecto. Cuando se cree un nuevo registro de la tabla en el campo se almacenar, de forma DEFAULT Valor automtica, el valor establecido por defecto, aunque, por supuesto, si se especifica otro valor se grabar el especificado. Si el campo es numrico, se escribir el valor, sin ms. Si el campo es alfanumrico se acotar con comillas simples Este atributo se aplica a campos numricos cuando queremos que se rellenen con ZEROFILL ceros los dgitos de ms. Por ejemplo, si se reserva en un campo FLOAT sitio para cuatro dgitos y se almacena el valor 867, quedar como 0867 Se utiliza cuando queremos que no se pueda repetir el valor de un campo en otro registro. Por ejemplo, si creamos una tabla personal y uno de los capos es el DNI de cada persona, es lgico que no pueda haber dos personas con el mismo nmero de UNIQUE documento. Si se intenta asignar un valor a ese campo, que ya exista en otro registro, se producir un error. Hay que indicar que MySQL no reconoce este atributo. Lo ignora, sin dar ningn error, por razones de compatibilidad, pero no lo tiene en cuenta. Este atributo, aplicado a campos numricos, hace que el motor de la base de datos UNSIGNED genere un error si se intenta introducir un valor con signo, lo que, en la prctica impide el uso de valores negativos. Este atributo se asigna a un campo numrico cuando deseamos que se incremente de AUTO_INCREMENT forma automtica. Es decir cada nuevo registro que se cree almacenar, en dicho campo, un valor que sea una unidad ms que el anterior. Si elimina un registro, el valor que tena en ese campo no se le volver a asignar a ningn otro. Este atributo define un campo como clave primaria. Esto hace que en dicho campo no PRIMARY KEY pueda haber valores repetidos, lo que en la prctica, sustituye al atributo UNIQUE en aquellos motores de BBDD que no lo utilizan como es el caso de MYSQL.

10

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

9.2.4.- Consultas de Manipulacin de Datos: 9.2.4.1.- Sentencia INSERT INTO Para aadir registros, SELECT para localizar registros, UPDATE para actualizar registros y DELETE para eliminar registros. INSERT INTO: se utiliza para insertar una nueva fila en una tabla. Es posible escribir la instruccin INSERT INTO en 2 formas. La primera forma no especifica los nombres de la columna en que los datos se insertan, solo sus valores: INSERT INTO tabla VALUES (valor_1, valor_2, valor_3,.); La segunda forma especfica tanto los nombres de las columnas y valores que se insertan INSERT INTO tabla (columna_1, columna_2,) VALUES (valor_1, valor_2,); 9.2.4.2.- Sentencia SELECT: Se utiliza para localizar registros dentro de una tabla determinada. SELECT (campo_1, campo_2, campo_n) FROM tabla WHERE condicin; Esto recupera los campos especificados de la tabla indicada para aquellos registros que cumplan la condicin. Por ejemplo: SELECT nombre, apellido FROM clientes WHERE ciudad = corrientes; Con esta consulta conseguiremos el nombre y apellido de los clientes que son de la ciudad de corrientes. Si queremos recuperar todos los datos de los registros que cumplan la condicin la consulta ser: SELECT * FROM clientes WHERE ciudad = corrientes;

La clausula WHERE permite establecer condiciones de seleccin de registros, es especialmente potente y flexible. Clausula GROUP BY, permite agrupar registros segn ciertos criterios, la consulta seria: SELECT nombre, apellido FROM clientes GROUP BY ciudad; Con esto tendremos el nombre y apellido de los clientes agrupados por ciudad.

11

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

Clausula LIKE, podemos establecer una condicin basada en similitudes no exactas. Esto quiere decir que podemos crear un cierto criterio sobre patrones. Esta palabra LIKE es un comparativo que se refiere a la similitud entre dos cosas. Por ejemplo supongamos que queremos ver la lista con todos los datos de los clientes cuyo nombre es julio la consulta sera la siguiente. SELECT * FROM clientes WHERE nombre LIKE julio; Como hemos mencionado la clausula WHERE es muy flexible y operadores como LIKE le dan ms potencia. Podemos usar operadores para encadenar varias condiciones bajo una sola clausula WHERE. En SQL consideramos dos tipos de operadores: los aritmticos y los lgicos, los cuales combinados tienen mucha potencia para el procesamiento de datos.
OPERADORES DE LA CLAUSULA WHERE (aritmticos) OPERADOR > < = <= >= <> LIKE BETWEEN IN Mayor que. Menor que. Igual a. Menor o igual que. Mayor o igual que. Distinto de. Parecido a. Comprendido entre dos valores Se usa para hacer una consulta en una tabla que est en otra Base de datos distinta de la que estamos usando. OPERADORES DE LA CLAUSULA WHERE (lgicos) OPERADOR AND OR NOT DESCRIPCION Une dos condiciones. Deben cumplirse ambas. Une dos condiciones de modo que seleccionar los registros que cumplan, al menos una de ellas. Selecciona los registros que no cumplen la condicin. DESCRIPCION

12

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

UNIONES: Se utilizan para consultar los datos de dos o ms tablas sobre la base de una relacin entre ciertas columnas en estas tablas: JOIN ALEFT JOIN RIGHT JOIN FULL JOIN La palabra clave INNER JOIN devuelve las filas para las cuales hay al menos una coincidencia en ambas tablas. SELECT columnas(s) FROM tabla1 INNER JOIN (tabla2) ON (tabla1.columna=tabla2.columna); La palabra LEFT JOIN devuelve todas las filas de la tabla de la izquierda (tabla1), incluso si no hay coincidencias en la tabla a la derecha (tabla2). SELECT columna(s) FROM tabla1 LEFT JOIN (tabla2) ON (tabla1.column=tabla2.columna); La palabra RIGHT JOIN devuelve todas las filas de la tabla de la derecha (tabla2), incluso si no hay coincidencias en la tabla de la izquierda (tabla1). SELECT columna(s) FROM tabla1 RIGHT JOIN (tabla2) ON (tabla1.columna=tabla2.columna); La palabra FULL JOIN devuelve filas cuando hay una coincidencia en una de las tablas. SELECT columna(s) FROM tabla1 FULL JOIN (tabla2) ON (tabla1.columna=tabla2.columna); FUNCIONES DE AGRUPADO: Devuelve un valor nico, calculado a partir de valores de una columna: AVG( ) : devuelve el valor promedio de 1 columna numerica SELECT AVG (columna) FROM tabla; COUNT( ): devuelve el numero de filas que coinciden con un criterio especifico. SELECT COUNT (columna) FROM tabla; FIRST( ): devuelve el primer valor de la columna seleccionada. SELECT FIRST (columna) FROM tabla; LAST( ) devuelve el ultimo valor de la columna seleccionada. SELECT LAST (columna) FROM tabla; MAX( ): Devuelve el mayor valor de la columna seleccionada SELECT MAX (columna) FROM tabla;
13 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

MIN( ): Devuelve el menor valor de la columna seleccionada. SELECT MIN (columna) FROM tabla; SUM( ): Devuelve la suma total de una columna numrica. SELECT SUM (columna) FROM tabla; Sentencia GROUP BY: se utiliza en conjuncin con las funciones de agregado para agrupar el conjunto de resultados por una o ms columnas. SELECT columna, funcion(columna) FROM tabla WHERE columna operador valor GROUP BY columna; CLAUSULA HAVING: Se aadi a SQL puesto que la clausula WHERE no se puede utilizar con funciones de agregado. FUNCIONES DE FECHA Y HORA: NOW( ): fecha y hora actual CURDATE( ): fecha actual CURTIME( ) hora actual MySQL viene con los siguientes tipos de datos para almacenar una fecha o valor de fecha/hora en la Base de datos: DATE formato YYY-MM-DD DATETIME formato YYY-MM-DD HH:MM:SS TIMESTAMP formato YYY-MM-DD HH:MM:SS YEAR formato YYY o YY Sub-Consultas: Una sub-consulta es una sentencia SELECT dentro de otra sentencia SELECT SELECT * FROM tabla1 WHERE columna1= (SELECT columna1 FROM tabla2); La Sub-consulta esta anidada dentro de la consulta exterior: - Es posible anidar sub-consultas dentro de otras Sub-consultas hasta una profundidad considerable. - Una Sub-consulta debe siempre aparecer entre parntesis. Las principales ventajas de las Sub-Consultas son: - Permiten consultas estructuradas de forma que es posible aislar cada parte de un comando. - Proporcionan un modo alternativo de realizar operaciones que de otro modo necesitaran JOINS y uniones complejas.

14

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

9.2.4.3.- Sentencia UPDATE: Se utiliza para actualizar los registros existentes en una tabla UPDATE tabla SET (columna_1= valor_1, columna_2=valor_2) WHERE columna=valor; La clausula WHERE especifica que registro o registros deben ser actualizados. Si se omite, todos los registros sern actualizados. 9.2.4.4.- Sentencia DELETE: Se utiliza para eliminar filas de una tabla DELETE FROM tabla WHERE columna = valor; La clausula WHERE especifica que registro o registros deben ser eliminados. Si se omite, todos los registros sern eliminados. ALIAS: se puede dar a una tabla o a una columna otro nombre mediante el uso de un alias. Es til cuando se tienen nombres de tablas o columnas muy largos o complejos. SELECT columna(s) FROM tabla AS alias

9.3.- PHP y MySQL


En este apartado solo nos vamos a centrar en el uso de php con mysql, ya que sql es un lenguaje en particular, y muy generalizado. Normalmente, para la administracin de bases de datos mysql, se usa PhpMyAdmin, una interfaz muy amigable con la que se puede manejar las bases de datos.

9.3.1.- PhpMyAdmin
Las formas bsicas para trabajar con MySql son: El cliente de la lnea de comando (proporcionado por MySQL). (Figura 3) El cliente basado en Web (phpMyadmin se instala con el paquete XAMPP). Figura 4

15

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

Figura 3: Cliente de lnea de comando MySQL

Figura 4: Cliente basado en WEB phpMyAdmin PhpMyadmin: Es una herramienta de software libre (incluida en el paquete XAMPP) y escrita en PHP, destinada al manejo y administracin de MySql sobre la Web. Soporta un amplio rango de operaciones con MySql. Las operaciones utilizadas con mayor frecuencia, estn soportadas por la interfaz del usuario. Administracin de bases de datos, Tablas, Campos, Relaciones, ndices, Permisos de usuario. Capacidad de ejecutar cualquier sentencia SQL.

16

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

9.3.2.- Comunicacin en PHP y MySql: Cualquiera sea la manera de trabajar para conectar PHP con MySql el proceso siempre sigue la secuencia: Conectar con MySql para lo cual es necesario proporcionar el Host, el usuario y la contrasea. Seleccionar la Base de datos con la que se quiere trabajar. Preparar la consulta SQL. Ejecutar la consulta y recuperar el resultado. Extraer los datos del resultado de la consulta y mostrarlos (en general mediante una iteracin). Liberar la conexin.

9.3.3.- Conexin Lo primero que se debe realizar siempre, es la conexin de php con mysql. La funcin que se utiliza es mysql_connect la cual conecta el programa PHP con el gestor de base de datos que contiene la base de datos con la que se desea trabajar. El primer parmetro (servidor) contiene el nombre DNS del servidor que almacena la base de datos y el puerto por el que el servidor mysql escucha las peticiones de consulta. El parmetro usuario contiene el nombre de usuario con el que se va a acceder al servidor y el parmetro password contiene la contrasea de autenticacin del usuario sin cifrar. Si la funcin se ejecuta correctamente, devuelve un descriptor de conexin que se utilizar en las funciones de acceso al servidor. Si, por cualquier razn, no se puede realizar la conexin, devuelve el valor booleano false. La sintaxis es: mysql_connect (string servidor, string user, string passwd)
Aqu un ejemplo: <?php $dbhost = "localhost"; $dbuser = "root"; $dbpass = "books"; $conx = mysql_connect($dbhost, $dbuser, $dbpass); ?>

En las variables dbhost, dbuser, y dbpass, definimos el servidor, el usuario y la clave de nuestro servidor mysql, y en la variable $conx, creamos la variable de conexin. La funcin mysql_close cierra una conexin con un servidor MySQL que se ha abierto invocando a mysql_connect( ) . Si la funcion se ejecuta correctamente devuelve el valor booleano true y si se produce algn error, devuelve el valor false.
La sintaxis es: mysql_close (descriptor mydb) 17 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

A continuacin se muestra un ejemplo de conexin y el script finaliza cerrando la conexin abierta invocando a mysql_close( ).
<?php $dbhost = "localhost"; $dbuser = "root"; $dbpass = "mysql"; $conx = mysql_connect($dbhost, $dbuser, $dbpass); If (!$conx) die (No se puede conectar al servidor); // die es un alias de exit mysql_close($conx); ?>

A continuacin, tenemos que seleccionar, dentro del servidor, la base de datos que queremos usar. Para lo cual se utiliza la funcin mysql_selected_db( ), la cual toma un argumento que es nombre de la base de datos a utilizar, la cual retorna TRUE o FALSE segn si se conecto con xito o no. Aqu un ejemplo: en donde se realiza la conexin con el servidor Mysql y se selecciona la base de datos alumnos.
<?php $dbhost = "localhost"; $dbuser = "Mysql"; $dbpass = ""; $conx = mysql_connect($dbhost, $dbuser, $dbpass); $db=mysql_select_db('alumnos'); if(!$conx=mysql_connect($dbhost,$dbuser,"")){ die("Error al Tratar De Conectar"); } if(!mysql_select_db("alumnos")){ die ("Error al Tratar De Conectar Con La Base De Datos"); } ?>

La funcion mysql_select_db selecciona una base de datos almacenada en el gestor Mysql, sobre el que se habr realizado una conexin previa invocando a mysql_connect. La sintaxis es: $db = mysql_select_db(string bdatos);//

Preparar la consulta SQL


Enviar la instruccin SQL a la base de datos: mysql_query() Devuelve un identificador o true (dependiendo de la instruccin) si la instruccin se ejecuta correctamente y false en caso contrario. Sintaxis: $consulta = mysql_query (instruccin, $conexion); Ejemplo:$consulta=mysql_query (select * from alumnos, $conexion) or die (Fallo en la consulta); La consulta es un string:
18 Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE

Taller de Programacin I Teora

Por ejemplo: $ query= SELECT usuario, password FROM usuarios WHERE usuario=juan AND password = juan08; Los datos insertados dentro de la consulta deberan estar correctamente conectados.

Enviar una consulta MySql:


Se utiliza la funcin mysql_query( ), la cual enva una nica consulta ya que mltiples consultas no estn soportadas a la base de datos actualmente activa en el servidor asociado con el identificador de la conexin. El conjunto de resultados devuelto, se pasa a una funcin que maneje el resultado de las tablas y y el acceso a los datos retornados. Ejemplo: $result = mysql_query($query);

Ejecutar la consulta y recupera el resultado: para ello existen varias funciones:


a) mysql_fetch_array( ) b) mysql_fetch_assoc( ) c) mysql_fetch_row( ) Es importante tener en cuenta que mysql_fetch_array( ) no es significativamente ms lenta que mysql_fetch_row( ), sin embargo provee un valor aadido importante. a) mysql_fetch_array(): recupera una fila de resultado como un array asociativo, un array numrico o como ambos y devuelve un array de cadena que corresponde a la fila recuperada, si no hay filas devuelve FALSE. El tipo de array a ser devuelto depende de una constante: MYSQL_ASSOC : un array asociativo con ndices asociativos. MYSQL_NUM : un array con ndices numricos. MYSQL_BOTH : un array con ambos ndices asociativos y numricos. b)mysql_fetch assoc(): recupera una fila de resultado como un array asociativo, devuelve un array asociativo de cadenas que corresponde a la fila recuperada o FALSE si no hay mas filas. Ejemplo: $row = mysql_fetch_assoc($result); print_r($row); echo $row[nombre]; c) mysql_fetch_row(): recupera una fila de resultado como un array numerico y retorna un array
numrico de cadenas que corresponde a la fila recuperada y si no hay filas devuelve false. Ejemplo: 19 $row = mysql_fetch_array ($result, mysql_BOTH); Print_r($row); Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE Echo $row[nombre]; Echo $row[0];

Taller de Programacin I Teora

Obtener y procesar los resultados: mysql_num_rows(), mysql_fetch_array()


En el caso de que la instruccin enviada produzca unos resultados, mysql_query() devuelve las filas de la tabla afectadas por la instruccin mysql_num_rows() devuelve el nmero de filas afectadas Para obtener las distintas filas del resultado se utiliza la funcin mysql_fetch_array(), que obtiene una fila del resultado en un array asociativo cada vez que se invoca

Sintaxis:

$nfilas = mysql_num_rows ($consulta); $fila = mysql_fetch_array ($consulta);

Obtencin de las filas:


$nfilas = mysql_num_rows ($consulta); if ($nfilas > 0) { for ($i=0; $i<$nfilas; $i++) { $fila = mysql_fetch_array ($consulta); // procesar fila i-sima de los resultados } } Obtener los resultados: mysql_num_rows(), mysql_fetch_array() Para acceder a un campo determinado de una fila se usa la siguiente sintaxis: $fila[nombre_campo] // por ser un array asociativo $fila[i] // i=ndice del campo desde 0
Ejemplo: for ($i=0; $i<$nfilas; $i++) { $fila = mysql_fetch_array ($consulta); echo nombre: . $fila[nombre]; echo apellido: . $fila[apellido]; }

Recuperar y mostrar el resultado en un loop: Ejemplo:


<?php $conn = mysql_connect(localhost, root, 260381); $ db = mysql_selected_db(clientes); $query = SELECT nombre, apellido FROM clientes; $result = mysql_query($query);

20

Facultad de Ciencias Exactas y Naturales y Agrimensura

FACENA UNNE While ($row = mysql_fetch_array($result,MYSQL_BOTH)) { echo $row[nombre]; echo $row[apellido]; } mysql_close ($conn); ?>

Taller de Programacin I Teora

Recuperar un nmero fijo de elementos de una tabla:


Se utiliza la opcin LIMIT de la orden SELECT. As, por ejemplo, SELECT * from libros LIMIT 0, 5 recupera los 5 primeros elementos de la tabla. Y en general, SELECT * from libros LIMIT $comienzo, $num recupera $num elementos a partir de la posicin $comienzo La variable $num tendr un valor constante (en este caso 5), mientras que la variable $comienzo se incrementar o decrementar en 5 unidades al pasar a la pgina siguiente o anterior. Para ello se pasar la variable como parmetro en el enlace asociado al botn correspondiente Por ejemplo, el cdigo para el botn siguiente ser:
"<A HREF='$PHP_SELF?comienzo=" . ($comienzo + $num) . "'>Siguiente</A>

Habr que comprobar previamente que el nuevo valor de comienzo es vlido, es decir, que se encuentra dentro de los lmites de la tabla devuelta por la consulta Recuperar los elementos de una tabla que cumplen una condicin se utiliza la opcin WHERE de la orden SELECT. Por ejemplo, SELECT * from noticias WHERE categoria=ofertas recupera las noticias cuya categora tiene el valor ofertas. Y en general, SELECT * from noticias WHERE categoria =$categoria recupera las noticias cuya categora tiene el valor dado por la variable $categoria La variable $categoria se obtendr de un elemento SELECT
Liberar una conexin: La funcion mysql_close() cierra la conexin de Mysql, asociado con el

identificador de enlace especfico, si el identificador de enlace no se especific, el l ultimo enlace abierto es usado. Frecuentemente no es necesario liberar la conexin, los enlaces abiertos no continuos son automticamente cerrados al final de la ejecucin del script. Ejemplo: $dbc = mysql_close($conn);
21 Facultad de Ciencias Exactas y Naturales y Agrimensura

También podría gustarte