Sei sulla pagina 1di 12

GUA DE LABORATORIO 7

Conexin a la Base de Datos y Sentencias


SQL
Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

LABORATORIO

Objetivo:

Aplicacin para conectar a la Base de Datos.


Ejemplos de aplicacin de sentencias SQL.
Diseo de bases de datos.

Equipos, Materiales, Programas y Recursos:

Sistema Operativo Windows.


Navegador Web.
Editor de texto.

Seguridad:

Ubicar maletines y/o mochilas al final del laboratorio.


No ingresar con lquidos ni comida al aula de laboratorio.
Al culminar la sesin de laboratorio, apagar correctamente la computadora y el monitor.

Preparacin:

Los alumnos debern realizar todos los ejercicios realizados y propuestos de esta gua de
laboratorio.

Procedimiento y Resultados:

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 2


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

LABORATORIO

Ejemplo N 01 Ejemplo resumen de la extensin MySQLi


<?php
// Vamos a pasar una variable $_GET a nuestro ejemplo, en este caso es
// 'aid' para 'actor_id' de nuestra base de datos Sakila. Le vamos a asignar un
// valor predeterminado de 1, y a amoldarla a un integer para evitar inyecciones
// de SQL y/o problemas de seguridad relacionados. El manejo de todo esto va ms
// all del alcance de este sencillo ejemplo:
// http://example.org/script.php?aid=42

if (isset($_GET['aid']) && is_numeric($_GET['aid'])) {


$aid = (int) $_GET['aid'];
} else {
$aid = 1;
}

// Conectarse a y seleccionar una base de datos de MySQL llamada sakila


// Nombre de host: 127.0.0.1, nombre de usuario: tu_usuario, contrasea: tu_contrasea, bd: sakila
$mysqli = new mysqli('127.0.0.1', 'tu_usuario', 'tu_contrasea', 'sakila');

// Oh, no! Existe un error 'connect_errno', fallando as el intento de conexin


if ($mysqli->connect_errno) {
// La conexin fall. Que vamos a hacer?
// Se podra contactar con uno mismo (email?), registrar el error, mostrar una bonita pgina, etc
.
// No se debe revelar informacin delicada

// Probemos esto:
echo "Lo sentimos, este sitio web est experimentando problemas.";

// Algo que no se debera de hacer en un sitio pblico, aunque este ejemplo lo mostrar
// de todas formas, es imprimir informacin relacionada con errores de MySQL -
- se podra registrar
echo "Error: Fallo al conectarse a MySQL debido a: \n";
echo "Errno: " . $mysqli->connect_errno . "\n";
echo "Error: " . $mysqli->connect_error . "\n";

// Podra ser conveniente mostrar algo interesante, aunque nosotros simplemente saldremos
exit;
}

// Realizar una consulta SQL


$sql = "SELECT actor_id, first_name, last_name FROM actor WHERE actor_id = $aid";
if (!$resultado = $mysqli->query($sql)) {
// Oh, no! La consulta fall.
echo "Lo sentimos, este sitio web est experimentando problemas.";

// De nuevo, no hacer esto en un sitio pblico, aunque nosotros mostraremos


// cmo obtener informacin del error
echo "Error: La ejecucin de la consulta fall debido a: \n";
echo "Query: " . $sql . "\n";
echo "Errno: " . $mysqli->errno . "\n";
echo "Error: " . $mysqli->error . "\n";
exit;

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 3


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

// Uf, lo conseguimos!. Sabemos que nuestra conexin a MySQL y nuestra consulta


// tuvieron xito, pero tenemos un resultado?
if ($resultado->num_rows === 0) {
// Oh, no ha filas! Unas veces es lo previsto, pero otras
// no. Nosotros decidimos. En este caso, podra haber sido
// actor_id demasiado grande?
echo "Lo sentimos. No se pudo encontrar una coincidencia para el ID $aid. Intntelo de nuevo.";
exit;
}

// Ahora, sabemos que existe solamente un nico resultado en este ejemplo, por lo
// que vamos a colocarlo en un array asociativo donde las claves del mismo son los
// nombres de las columnas de la tabla
$actor = $resultado->fetch_assoc();
echo "A veces veo a " . $actor['first_name'] . " " . $actor['last_name'] . " en la TV.";

// Ahora, vamor a obtener cinco actores aleatorios y a imprimir sus nombres en una lista.
// El manejo de errores va a ser menor aqu, aunque ya sabemos como hacerlo
$sql = "SELECT actor_id, first_name, last_name FROM actor ORDER BY rand() LIMIT 5";
if (!$resultado = $mysqli->query($sql)) {
echo "Lo sentimos, este sitio web est experimentando problemas.";
exit;
}

// Imprimir nuestros cinco actores aleatorios en una lista, y enlazar cada uno
echo "<ul>\n";
while ($actor = $resultado->fetch_assoc()) {
echo "<li><a href='" . $_SERVER['SCRIPT_FILENAME'] . "?aid=" . $actor['actor_id'] . "'>\n";
echo $actor['first_name'] . ' ' . $actor['last_name'];
echo "</a></li>\n";
}
echo "</ul>\n";

// El script automticamente liberar el resultado y cerrar la conexin


// a MySQL cuando finalice, aunque aqu lo vamos a hacer nostros mismos
$resultado->free();
$mysqli->close();
?>

Ejemplo N 02 Sintaxis MySQL SELECT

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 4


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

Repasemos brevemente la sintaxis superior:

Con SELECT podemos seleccionar una o varias columnas de datos.


FROM table_references nos vale para seleccionar una o varias tablas que
almacenan las columnas previamente indicadas.
En WHERE where_condition se especifican la o las condiciones que se deben
cumplir para los valores solicitados.

Dentro de la clusula WHERE tenemos los siguientes condicionantes que son importantes
y tiles:

GROUP BY: Nos permite agrupar los datos obtenidos de la base de datos.
HAVING: Permite hacer clculos y condiciones ms complejas que no se pueden
hacer con la clusula WHERE.
ORDER BY: Ordenacin por columna.
LIMIT: Especificacin del nmero de filas devueltas.

Otras sentencias de MySQL que os pueden ser tiles:

ALTER TABLE
UPDATE
INSERT
TRUNCATE TABLE
Clsula WHERE

Ejemplos de MySQL SELECT

Vamos a comenzar con estos sencillos ejemplos, ms adelante ir poniendo algunos ms


complejos con los condicionantes anteriormente mencionados:

SELECT * FROM usuarios

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 5


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

Con el ejemplo superior estamos seleccionando todas las columnas (SELECT *) de la tabla
usuarios, se devolvern todas las filas ya que no tenemos ningn condicionante con
WHERE.

SELECT nombre FROM usuarios

Con el ejemplo superior estamos seleccionando la columna nombre de la tabla usuarios,


se devolvern todas las filas ya que no tenemos ningn condicionante con WHERE.

SELECT nombre, apellidos FROM usuarios

Con el ejemplo superior estamos seleccionando las columnas nombre y apellidos de la


tabla usuarios, se devolvern todas las filas ya que no tenemos ningn condicionante con
WHERE.

SELECT nombre, apellidos FROM usuarios, clientes

Con el ejemplo superior estamos seleccionando las columnas nombre y apellidos de 2


tablas distintas, se devolvern todas las filas ya que no tenemos ningn condicionante con
WHERE.

Ejemplos de clusula WHERE MySQL

Vamos a ver con una serie de ejemplos sencillos los condicionantes de WHERE:

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE edad = 40

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


tengan 40 aos. Cuando el campo a comparar es numrico va sin comillas.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE pais = 'Mxico'

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


sean de Mxico. El campo a comparar es alfanumrico, por lo tanto va entre comillas.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE estado_civil != 'soltero'

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 6


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


estn casados, la condicin implica que el resultado devuelto sea distinto a soltero.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE edad > 40

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


tengan ms de 40 aos, los que tengan 40 aos no saldrn en los resultados.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE edad < 40

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


tengan menos de 40 aos, los que tengan 40 aos no saldrn en los resultados.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE edad >= 40

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


tengan 40 aos o ms, los que tengan 40 aos s saldrn en los resultados.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE edad <= 40

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


tengan 40 aos o menos, los que tengan 40 aos s saldrn en los resultados.

Cmo realizar varios condicionantes con OR y/o AND

Hasta ahora os he puesto ejemplos bsicos con una nica condicin, os muestro varios
ejemplos para realizar ms condiciones con OR y/o AND:

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE edad <= 40 AND edad >= 50

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


tengan 40 aos o menos y los que tengan 50 o ms aos, los que tengan 40 y 50 aos
s saldrn en los resultados.

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 7


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE pais = 'Mxico' AND edad > 30

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


sean de Mxico y que tengan ms de 30 aos, los que tengan 30 aos no saldrn en los
resultados.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE pais != 'Mxico' OR edad > 50

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


no sean de Mxico o que tengan ms de 50 aos, los que tengan 50 aos no saldrn en
los resultados. Los empleados que tengan ms de 50 y no sean de Mxico s saldrn.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE pais != 'Mxico' OR edad > 30 AND antiguedad > 10

En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que


no sean de Mxico o tengan ms de 50 aos y que adems tengan una antigedad en
la empresa de ms de 10 aos. Los empleados que sean de Mxico y tengan 30 o menos
aos con antigedad de ms de 10 s saldrn.

1 SELECT nombre, apellidos


2 FROM empleados
3 WHERE (pais = 'Mxico' OR edad > 30) AND antiguedad > 10

Con los parntesis podemos agrupar las condiciones para que sean menos liosas que el
ejemplo anterior. En este nuevo caso se debe cumplir una de las 2 condiciones, que s sea
de Mxico o tenga ms de 30 aos, del resultado obtenido se mostrarn los que adems
tengan ms de 10 aos de antigedad en la empresa.

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 8


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

Actividad N 01 Disear una base de datos para:

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 9


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

Actividad N 02 Disear una base de datos para:

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 10


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

Actividad N 03 Crear la Base de Datos Biblioteca

BASE DE DATOS: BIBLIOTECA

TABLA LIBROS VENDIDOS


ID_LIBRO TITULO ID_VENDEDOR
1 REDES INFORMATICAS 1
EMPRESARIALES I
2 AUDITORIA DE SISTEMAS 2
3 DERECHO INFORMTICO 1
4 PROGRAMACIN 4
5 ESTRUCTURA DE DATOS 5
6 BIOLOGIA 5
7 MATEMATICA 5
8 ANDROID 3
9 FISICA 3
10 ENERGIA 1
11 MOTIVACIN 0
12 COMPUTACIN 0

TABLA VENDEDORES
ID_VENDEDOR NOMBRE APELLIDOS DNI F_NACIMIENTO
1 MIRIAM POZO 32959170 1975-11-02
2 CARLOS GUANILO 32865024 1980-03-10
3 LOURDES MANCILLA 32865033 1982-05-05
4 MIGUEL AGUILAR 32183111 1985-05-05
5 CARLA TRINIDAD 21803117 1985-05-10

TABLA USUARIOS
ID_USUARIOS NOMBRE APELLIDOS F_NACIMIENTO
1 DIEGO CORALES RIVERA 1993-12-31
2 MARCO MORENO SAAVEDRA 1998-03-13
3 LEO CAMPOS AMAYA 1996-05-28
4 DILLAN SILVA CALDERON 1996-08-13
5 MARITA SANCHEZ VIDAL 1990-11-07
6 RAINER RAMOS RAMIREZ 1994-08-03
7 VICTOR LLUEN CHIRINOS 1995-03-15
8 BRANDON PALACIOS ZAMUDIO 1994-02-20
9 GENESIS SALDAA VASQUEZ 1995-06-23
10 ARLYS CRISPIN RAMIREZ 1994-05-14
11 KATHERINE BONIFAZ PONTE 1992-09-21
12 ANDREE VELARDE ZIMIC 1997-02-25
13 ABNER REYES ARAUCO 1992-09-11
14 STEVEN MEZONES NOVOA 1995-04-26
15 GIANCARLOS ROJAS ARELLANO 1996-06-22
16 REYSER OTINIANO CORDOVA 1996-06-10

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 11


Universidad Nacional del Santa Laboratorio7-Conexin a la Base de Datos en PHP

TABLA: USUARIOS_LIBROS
ID_USUARIO ID_LIBRO
2 1
2 2
11 2
14 1
16 5
5 4
11 4

Actividad N 04

REALIZAR LO SIGUIENTE:
1. HACER UN PROGRAMA CONSULTA QUE DEVUELVA LOS LIBROS QUE HA SACADO EL
USUARIO DE LA BIBLIOTECA CON IDENTIFICADOR 11.
2. HACER UN PROGRAMA CONSULTA QUE MUESTRE LOS LIBROS QUE SE HAN VENDIDO.
3. CONSTRUIR UN PROGRAMA QUE MUESTRE LOS USUARIOS CON LOS LIBRO QUE
COMPR.
4. HACER UN PROGRAMA QUE MUESTRE LOS USUARIOS QUE HAN COMPRADO MAS DE
UN LIBRO.
5. HACER UN PROGRAMA QUE MUESTRE LOS LIBROS QUE NO SE VENDIERON
6. HACER UN PROGRAMA QUE MUESTRE USUARIOS QUE COMPRARON LIBROS CON
EDADES ENTRE 20 Y 25 AOS.

EPISI Dra. Diana Cecilia Muoz Casanova dianauns@yahoo.es Pg. 12

Potrebbero piacerti anche