Download Bases de datos en PHP con MySQL

Document related concepts

SQL wikipedia , lookup

Lenguaje de manipulación de datos wikipedia , lookup

Null (SQL) wikipedia , lookup

Base de datos relacional wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Transcript
Bases de datos en
PHP con MySQL
Introducción a la ingeniería en
computación
UTM
1
¿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 Es un conjunto exhaustivo no redundante
Management system). Este programa
de datos estructurados organizados
permite entrar, organizar, seleccionar la
independientemente de su utilización y su
información contenida en la BD.
implementación en máquina accesibles
en tiempo real y compatibles con
usuarios concurrentes con necesidad de
2
información diferente.
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.
3
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)
4
¿Cómo diseñar una BD?

1.
2.
3.
Las etapas de diseño de una base de datos son:
Diseño conceptual
Diseño lógico
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 un5
curso, cada curso puede tener más de un alumno.





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.
6
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.
7
8
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.
9
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.
10
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.
11
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
12
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
13
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
14
Supongamos la BD para una
librería con la siguiente estructura
autorLibro
Libros
Field
Type
Field
Type
ISBN
varchar(20)
ISBN
varchar(20)
Nombre
varchar(40)
titulo
varchar(80)
Apellidos
varchar(40)
precio
float
editorial
varchar(80)
edicion
annoEdic
Ventas
Field
Type
varchar(20)
id
int(11)
int(11)
RFC
varchar(30)
ISBN
varchar(20)
Idioma
varchar(40)
Cliente
varchar(60)
existencia
tinyint(4)
Fecha
date
Cantidad
int(11)
PrecioUnidad
float
15
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
84-18136662-0
Fundamentos de
programacion
84-8966000-X
annoE
dic
Idioma
existen
cia
3
2002
Españ
ol
7
Prentice Hall
1
1997
Españ
ol
7
215.62
Prentice Hall
2
1999
Españ
ol
7
250
Prentice Hall
2
1999
Españ
ol
7
257.35
McGraw Hill
2
1997
Españ
ol
7
precio
editorial
edicion
325.23
McGraw Hill
Fundamentos de
Algoritmia
259.95
84-18976952-0
Redes para todos
83-29837952-x
Arquitectura de
computadoras
33-58837741-x
1001 tips para
programar en
Java
16
Otras consultas
1.
2.
3.
4.
select titulo, precio, precio*1.15 from libros
select titulo, precio, precio*.15 from libros where
precio>250
select titulo, precio, precio*.15 from libros where
precio>250 order by precio
select titulo, precio, precio*.15 from libros where
precio between 220 and 300 order by precio
17
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
18
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:

id

Cantida
d
PrecioUnida
d
2003-1213
2
210
2003-1213
1
255.95
RFC
ISBN
Cliente
Fecha
1
ZILJ-690122
84-181-366620
Ziga León Jorge
2
SAHC850226
84-89660-00X
Santos Hernandez
Cristina
La siguiente consulta:



SELECT * FROM ventas
select sum(preciounidad*cantidad) from ventas
select sum(preciounidad*cantidad) from ventas where fecha = '2003-12-13'
Arrojaría
sum(preciounidad*cantidad)
675.94999694824
19

select autorlibro.apellidos, libros.titulo, libros.precio
from autorlibro, libros where libros.ISBN=
autorlibro.ISBN and autorlibro.apellidos like 'Joy%‘
order by titulo
apellidos
titulo
Joyanes Aguilar
Fundamentos de programacion

precio
325.23
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
20
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'
21
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
22
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

23
USANDO PHP y MySQL
Conexión a la BD
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?php
function Conectarse()
{ if (!($link=mysql_connect("localhost","usuario","Password")))
{ echo "Error conectando a la base de datos.";
exit(); //es posible también la instrucción die(“mensaje”);
}
if (!mysql_select_db("base_datos",$link))
{ echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";
15. mysql_close($link); //cierra la conexion
16.
?>
24
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.
25
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<body>
<?php
include("conex.php"); //en este archivo está la función
conectarse
$link= conectarse();
$result = mysql_query("select titulo, precio from
libros",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>Titulo</TD><TD>Precio</TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>%s</td><td>%s</td></tr>",
$row[“titulo"],$row[“precio"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
26
Inserción de registros
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php
include("conex.php");
$link=Conectarse();
//Petición de los datos desde la otra forma
$nombre=$_GET['nombre'];
$apellidos=$_GET['apellidos'];
//ejecución de la inserción
mysql_query ("insert into prueba (Nombre,Apellidos) values
('$nombre','$apellidos')",$link);
mysql_close($link);
?>
27
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
28