bases de datos en php con mysql

28
1 Bases de datos en PHP con MySQL Introducción a la ingeniería en computación UTM

Upload: amalie

Post on 25-Feb-2016

95 views

Category:

Documents


4 download

DESCRIPTION

Bases de datos en PHP con MySQL. Introducción a la ingeniería en computación UTM. ¿Qué es una base de datos?. Una base de datos (BD) es una colección de información organizada de tal forma que un programa pueda seleccionar rápidamente conjuntos de datos deseados. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Bases de datos en PHP con MySQL

1

Bases de datos en PHP con MySQL

Introducción a la ingeniería en computación

UTM

Page 2: Bases de datos en PHP con MySQL

2

¿Qué es una base de datos? Una base de datos (BD) es una colección de

información organizada de tal forma que un programa pueda seleccionar rápidamente conjuntos de datos deseados.

Las bases de datos tradicionales se organizan por campos, registros y archivos. Un campo es una pieza simple de

información. Un registro es un conjunto completo de

campos. Un archivo es un conjunto de registros Una base de datos está determinada por

un conjunto de archivos.

Para accesar a la información de una base de datos es necesario un sistema manejador de bases de datps (Database Management system). Este programa permite entrar, organizar, seleccionar la información contenida en la BD.

Es un conjunto exhaustivo no redundante de datos estructurados organizados independientemente de su utilización y su implementación en máquina accesibles en tiempo real y compatibles con usuarios concurrentes con necesidad de información diferente.

Page 3: Bases de datos en PHP con MySQL

3

Sistemas de gestión de bases de datos Un conjunto de programas que permiten almacenar, modificar, y extraer

información de una base de datos. Hay diferentes tipos de DBMS desde los muy pequeños para operar sobre PC’s hasta los muy grandes que operan sobre mainframes.

Un DBMS contiene: DDL: Lenguaje de Definición de Datos DML: Lenguaje de Manipulación de Datos SQL: Lenguaje de Consulta.

Entre los DBMS mas comunes están: Oracle, SqlServer, Informix, Sysbase, MySQL, postgreSQL.

Una BD es una colección de archivos interrelacionados almacenados en conjunto sin redundancia y un DBMS es un conjunto de numerosas rutinas de software interrelacionadas cada una de ellas es responsable de una determinada tarea.

Page 4: Bases de datos en PHP con MySQL

4

Algunas Aplicaciones con DBMS Sistemas de reservación Inventarios Sistema de consulta de una biblioteca Sistema para control de Recursos humanos Bases de datos topográficas, etc

El modelo relacional Este es el modelo que se está empleando con más frecuencia en la

práctica, debido el rápido entendimiento por parte de los usuarios que no tienen conocimientos profundos sobre Sistemas de Bases de Datos

En este modelo toda la información se representa a través de arreglos bidimensionales o tablas.

Las operaciones básicas son: Seleccionar renglones de alguna tabla (SELECT) Seleccionar columnas de alguna tabla (PROJECT) Unir o juntar información de varias tablas (JOIN)

Page 5: Bases de datos en PHP con MySQL

5

¿Cómo diseñar una BD? Las etapas de diseño de una base de datos son:

1. Diseño conceptual2. Diseño lógico3. Diseño físico

El diseño conceptual se refiere a identificar qué datos serán usados para una aplicación, por ejemplo para una agenda serían: ¿?

El diseño lógico se refiere a la descripción de cada pieza de información y las relaciones que existen entre ellas.

En esta etapa se definen las tablas (y su contenido) que se van a usar, relaciones entre los datos, campos llave, así como la normalización de dichos datos.

Las tablas se relacionan con otras teniendo columnas en común, dicha columna puede aparecer en más de dos tablas. Existen tres tipos de relación: uno a uno, uno a muchos y muchos a muchos.

Ejemplo de uno a uno: un profesor estará solamente en un cubo, cada departamento solamente tiene un jefe.

Ejemplo de uno a muchos: los profesores que están en cierto instituto. Los alumnos que son de cierta carrera.

Ejemplo de muchos a muchos: un alumno puede asistir a más de un curso, cada curso puede tener más de un alumno.

Page 6: Bases de datos en PHP con MySQL

6

Normalización Es el proceso para eliminar redundancia y aumentar la

estabilidad y rendimiento de una BD. Ayuda a determinar qué dato pertenece a qué tabla y las relaciones entre las columnas de una tabla.

Primera forma normal (1NF): Cada atributo de la tabla es atómico – debe almacenar el dato

más pequeño posible, esto para facilitar la búsqueda y ordenamiento de los datos. Ejemplo: el nombre de una persona puede ocasionar problemas, ya que se podrían hacer búsquedas por nombre o por apellidos. Entonces es necesario tener un campo para el nombre y otro para apellidos.

No existen atributos multivaluados: por ejemplo un libro puede tener más de un autor, y además tener estar en más de una categoría. Para este caso dichos atributos deben ser movidos a otra tabla.

Page 7: Bases de datos en PHP con MySQL

7

2NF Todas las columnas deben depender directamente

de la llave primaria. En caso de encontrar atributos que no dependan de la clave primaria deberán ser enviados a otra tabla.

Page 8: Bases de datos en PHP con MySQL

8

Page 9: Bases de datos en PHP con MySQL

9

3NF Se cumple con esta forma cuando se tienen columnas

independientes. Es decir cuando una columna no puede ser derivada de otra. Por ejemplo no es necesario un campo edad si se tiene por

ejemplo la fecha de nacimiento.

Llaves Es una columna o grupo de, que funciona como un

identificador único en una columna.

Page 10: Bases de datos en PHP con MySQL

10

El diseño físico Se hace un refinamiento del diseño lógico y se elige qué DBMS

se usará. En esta etapa se determina: Los datos que se usarán más comunmente Columnas que requieran índices Áreas que necesitarán más espacio físico por un mayor

incremento de la información que habrá en ella Si es factible hacer una desnormalización de los datos para

obtener una mejora en el rendimiento de la BD

SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de

base de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos.

Page 11: Bases de datos en PHP con MySQL

11

Componentes de SQL El lenguaje SQL está compuesto por comandos, cláusulas,

operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Comandos Existen dos tipos de comandos SQL:

Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.

Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.

Comandos DLL CREATE Utilizado para crear nuevas tablas, campos e índices DROP Empleado para eliminar tablas e índices ALTER Utilizado para modificar las tablas agregando campos o

cambiando la definición de los campos.

Page 12: Bases de datos en PHP con MySQL

12

Comandos DML:

SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado

INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.

UPDATE Utilizado para modificar los valores de los campos y registros especificados

DELETE Utilizado para eliminar registros de una tabla de una base de datos

Cláusulas Las cláusulas son condiciones de modificación utilizadas

para definir los datos que desea seleccionar o manipular. FROM Utilizada para especificar la tabla de la cual se van a

seleccionar los registros WHERE Utilizada para especificar las condiciones que deben

reunir los registros que se van a seleccionar GROUP BY Utilizada para separar los registros

seleccionados en grupos específicos ORDER BY Utilizada para ordenar los registros

seleccionados de acuerdo con un orden específico

Page 13: Bases de datos en PHP con MySQL

13

Operadores lógicos

AND Es el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.

OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.

NOT Negación lógica. Devuelve el valor contrario de la expresión.

Operadores de Comparación < Menor que > Mayor que <> Distinto de <= Menor ó Igual que >= Mayor ó Igual que = Igual que BETWEEN Utilizado para especificar un intervalo de valores. LIKE Utilizado en la comparación de un modelo In Utilizado para especificar registros de una base de datos

Page 14: Bases de datos en PHP con MySQL

14

Funciones de Agregado

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros. AVG Utilizada para calcular el promedio de los

valores de un campo determinado COUNT Utilizada para devolver el número de

registros de la selección SUM Utilizada para devolver la suma de todos los

valores de un campo determinado MAX Utilizada para devolver el valor más alto de un

campo especificado MIN Utilizada para devolver el valor más bajo de un

campo especificado

Page 15: Bases de datos en PHP con MySQL

15

Supongamos la BD para una librería con la siguiente estructura

LibrosField Type

ISBN  varchar(20) 

titulo  varchar(80) 

precio  float 

editorial  varchar(80) 

edicion  varchar(20) 

annoEdic  int(11) 

Idioma  varchar(40) 

existencia  tinyint(4) 

autorLibroField Type

ISBN  varchar(20) 

Nombre  varchar(40) 

Apellidos  varchar(40) 

VentasField Typeid  int(11) 

RFC  varchar(30) 

ISBN  varchar(20) 

Cliente  varchar(60) 

Fecha  date 

Cantidad  int(11) 

PrecioUnidad  float 

Page 16: Bases de datos en PHP con MySQL

16

Mostrar todos los datos que están en la tabla libros Select * from libros

Otra opción es poner exactamente qué campos quiere mostrar.

ISBN titulo precio editorial edicion annoEdic

Idioma existencia

 84-181-36662-0 

 Fundamentos de programacion   325.23   McGraw Hill   3   2002   Españ

ol   7 

 84-89660-00-X 

 Fundamentos de Algoritmia   259.95   Prentice Hall   1   1997   Españ

ol   7 

 84-189-76952-0   Redes para todos   215.62   Prentice Hall   2   1999   Españ

ol   7 

 83-298-37952-x 

 Arquitectura de computadoras   250   Prentice Hall   2   1999   Españ

ol   7 

 33-588-37741-x 

 1001 tips para programar en Java 

 257.35   McGraw Hill   2   1997   Español   7 

Page 17: Bases de datos en PHP con MySQL

17

Otras consultas1. select titulo, precio, precio*1.15 from libros 2. select titulo, precio, precio*.15 from libros where

precio>250 3. select titulo, precio, precio*.15 from libros where

precio>250 order by precio4. select titulo, precio, precio*.15 from libros where

precio between 220 and 300 order by precio

Page 18: Bases de datos en PHP con MySQL

18

Consultas que implican más de una tabla:

Mostrar apellido del autor y el título del libro. select autorlibro.apellidos, libros.titulo from

autorlibro, libros where libros.ISBN= autorlibro.ISBN

Joyanes Aguilar   Fundamentos de programacion 

 Brassard   Fundamentos de Algoritmia 

 Bratley   Fundamentos de Algoritmia 

 Gibbs   Redes para todos 

 Mano   Arquitectura de computadoras 

 Chan   1001 tips para programar en Java 

 Griffith   1001 tips para programar en Java 

 Iasi   1001 tips para programar en Java 

Page 19: Bases de datos en PHP con MySQL

19

Más consultas select autorlibro.apellidos, libros.titulo from autorlibro, libros where

libros.ISBN= autorlibro.ISBN and autorlibro.apellidos like 'Jo%’

Si hacemos la siguiente consulta: SELECT * FROM ventas

La siguiente consulta: select sum(preciounidad*cantidad) from ventas select sum(preciounidad*cantidad) from ventas where fecha = '2003-12-13'

Arrojaría

id RFC ISBN Cliente Fecha Cantidad

PrecioUnidad

 1   ZILJ-690122   84-181-36662-0   Ziga León Jorge   2003-12-

13   2   210 

 2   SAHC-850226 

 84-89660-00-X 

 Santos Hernandez Cristina 

 2003-12-13   1   255.95 

sum(preciounidad*cantidad)

 675.94999694824 

Page 20: Bases de datos en PHP con MySQL

20

select autorlibro.apellidos, libros.titulo, libros.precio

from autorlibro, libros where libros.ISBN= autorlibro.ISBN and autorlibro.apellidos like 'Joy%‘ order by titulo

select autorlibro.apellidos, libros.titulo, libros.precio from autorlibro, libros where libros.ISBN= autorlibro.ISBN and (autorlibro.apellidos like 'Joy%' or autorlibro.apellidos like 'Br%') order by titulo

apellidos titulo precio

 Bratley   Fundamentos de Algoritmia   259.95 

 Brassard   Fundamentos de Algoritmia   259.95 

 Joyanes Aguilar   Fundamentos de programacion   325.23 

apellidos titulo precio

 Joyanes Aguilar   Fundamentos de programacion   325.23 

Page 21: Bases de datos en PHP con MySQL

21

La instrucción DELETE Crea una consulta de eliminación que elimina los

registros de una o más de las tablas listadas en la cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algún campo en concreto. Su sintaxis es:

DELETE FROM Tabla WHERE criterio Ejemplo: delete from ventas where fecha >= '2003-12-16'

Page 22: Bases de datos en PHP con MySQL

22

INSERT Insertar un único Registro

INSERT INTO Tabla (campo1, campo2, .., campoN) VALUES (valor1, valor2, ..., valorN)

INSERT INTO ventas (id, RFC, ISBN, Cliente, Fecha, Cantidad, PrecioUnidad) VALUES (5, 'SAHC-850226', '33-588-37741-x', 'Santos Hernandez Cristina', '2003-12-14', 6, 250)

Si los datos del registro a insertar le son enviados en el mismo orden en que están definidos en la tabla, se puede usar la siguiente sintaxis

INSERT INTO Tabla VALUES (valor1, valor2, ..., valorN) También es posible insertar datos generados por una consulta.

INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen

Page 23: Bases de datos en PHP con MySQL

23

Actualización de valores No genera ningún resultado. Para saber qué registros

se van a cambiar, hay que examinar primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de actualización.

Update tabla set campo1=valor1, campo2=valor2 [,…] where condiciones

update libros set precio=precio*0.95 update libros set sueldo=sueldo*1.05 where sueldo > 45.50

Page 24: Bases de datos en PHP con MySQL

24

USANDO PHP y MySQLConexión a la BD

1. <?php2. function Conectarse() 3. { if (!($link=mysql_connect("localhost","usuario","Password"))) 4. { echo "Error conectando a la base de datos."; 5. exit(); //es posible también la instrucción die(“mensaje”);6. } 7. if (!mysql_select_db("base_datos",$link)) 8. { echo "Error seleccionando la base de datos."; 9. exit(); 10. } 11. return $link; 12. } 13. $link=Conectarse(); 14. echo "Conexión con la base de datos conseguida.<br>"; 15.mysql_close($link); //cierra la conexion 16. ?>

Page 25: Bases de datos en PHP con MySQL

25

Instrucciones para conexión a BD en MySQL Al ejecutar la instrucción mysql_connect se crea un vínculo entre

la base de datos y la pagina PHP, este vínculo será usado posteriormente en las consultas que hagamos a la base de datos.

Finalmente, una vez que hemos terminado de usar el vínculo con la base de datos, lo liberaremos con la instrucción mysql_close para que la conexión no quede ocupada.

mysql_query sirve para hacer una consulta a la base de datos en el lenguaje de consultas SQL

mysql_fetch_array se extraen los datos de la consulta a un array.

mysql_free_result liberamos la memoria usada en la consulta.

Page 26: Bases de datos en PHP con MySQL

26

1. <body> 2. <?php 3. include("conex.php"); //en este archivo está la función

conectarse4. $link= conectarse(); 5. $result = mysql_query("select titulo, precio from libros",

$link); 6. ?> 7. <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1> 8. <TR><TD>Titulo</TD><TD>Precio</TD></TR> 9. <?php

10. while($row = mysql_fetch_array($result)) { 11. printf("<tr><td>%s</td><td>%s</td></tr>",

$row[“titulo"],$row[“precio"]); 12. } 13. mysql_free_result($result); 14. mysql_close($link); 15. ?> 16. </table> 17. </body>

Page 27: Bases de datos en PHP con MySQL

27

Inserción de registros1. <?php 2. include("conex.php");

3. $link=Conectarse(); 4. //Petición de los datos desde la otra forma5. $nombre=$_GET['nombre']; 6. $apellidos=$_GET['apellidos'];

7. //ejecución de la inserción8. mysql_query ("insert into prueba (Nombre,Apellidos) values

('$nombre','$apellidos')",$link);

9. mysql_close($link); 10. ?>

Page 28: Bases de datos en PHP con MySQL

28

Bibliografía Tutoriales SQL

http://www.programacion.com/tutorial/sql/ http://www.wwits.net/programs/dbtutorindex.phtml

PHP y MySQL http://www.webestilo.com/php/php07a.phtml

Libros: Database Design Guide – Pervasive Software (e-book) FUNDAMENTOS DE BASES DE DATOS - KORTH, HENRY F.

Usen después de instalar el PHP-triad http://localhost/phpmyadmin para definir sus tablas y hacer las

pruebas necesarias