Desarrollo Web Lección 7 - Bases de Datos
Tablas
Objetivo
En esta actividad utilizará una nueva herramienta para obtener una buena visión de la estructura de una base de datos.
Preparación
No hay nada que configurar en este ejercicio.
Herramienta: PHPMyAdmin
Hay muchas bases de datos disponibles que satisfacen nuestras necesidades, pero usaremos MySQL, que es una de las más populares para usar con PHP.
Para simplificar el acceso, comenzaremos a usar PHPMyAdmin para administrar la base de datos. Esta herramienta también nos permite consultar el contenido de nuestra base de datos y actualizar la información.
Navegue a
phpmyadmin e inicie sesión con la contraseña almacenada en su computadora.
Verá una lista de todas las bases de datos disponibles a su izquierda. Seleccione el que pertenece a su clase.
Tablas
Ahora debería ver una lista de tablas en el panel principal del sitio.
Haga clic en la tabla llamada 'Marvel'.
Ahora puedes ver por qué se llama tabla. Contiene información que se presenta en forma de tabla, con encabezados de columna en la parte superior y muchas filas de datos debajo con cada campo que contiene datos correspondientes a su columna.
Aquí puede editar, copiar y eliminar datos.
Encima de la tabla, puede ver un menú de pestañas. Actualmente se encuentra en la pestaña 'Examinar' donde puede ver los datos.
Debajo hay una fila amarilla que muestra el número de filas en el resultado y cuánto tiempo llevó procesarlo. En esta etapa, no necesita preocuparse por el tiempo de procesamiento, pero eso puede ser muy importante para optimizar consultas complejas.
Debajo de la fila amarilla hay un texto que dice SELECT * FROM `marvel`
. Este es el comando SQL que extrae los datos. Dedicaremos más tiempo a analizar las consultas en un minuto.
Los Campos
Haga clic en la pestaña 'Estructura'.
Aquí vemos una tabla diferente. Muestra cómo está estructurada la tabla de datos.
Cada fila corresponde a un 'campo', que es un dato. Cada columna en la vista 'Examinar' es un 'campo'.
Dos de los campos tienen el tipo 'varchar' que significa texto (un número variable de caracteres). El número entre paréntesis es el número de caracteres permitidos.
'first_appeared' es de tipo entero con una longitud de 4 para almacenar el año en que el personaje apareció por primera vez en los cómics de Marvel.
'hero_villain' es del tipo 'set', lo que significa que solo se aceptarán valores específicos. En este caso, los valores son 'Héroe' y 'Villano'.
Todas las columnas tienen un valor 'No' para 'Nulo', lo que significa que deben tener un valor. En algunos casos, es posible que desee no tener ninguna información para un determinado campo, en cuyo caso se marcaría como 'Sí'.
Debajo de esta tabla, verá una sección llamada 'Índices'. Un índice es una forma de ordenar la información (como las letras en los libros de la biblioteca), y cada tabla debe tener al menos un índice, llamado índice 'Principal' que es único. Imagine tener dos filas para 'Iron Man' y actualizar cada una de ellas con información diferente. Nunca sabrías cuál era la correcta.
En esta tabla, el índice principal es el campo 'character_name'.
SELECT Consultas
Haga clic en 'Examinar' para ver los datos nuevamente.
Ahora eche otro vistazo a la 'consulta' (justo debajo de la fila amarilla en la parte superior).
Cuando hizo clic en la tabla 'héroes', PHPMyAdmin ejecutó esta consulta automáticamente.
Dice 'muéstrame todo en la tabla de héroes'. Miremos más de cerca.
SELECT * FROM `heroes`
Una consulta es un comando a la base de datos para obtener información o realizar una acción.
La consulta que ve aquí es la forma básica de cada consulta SELECT.
Las consultas que comienzan con SELECT
solicitan información y son seguidas inmediatamente por la lista de campos deseados.
*
significa 'todos los campos'.
FROM
le dice a la base de datos que los siguientes elementos son las fuentes de datos. En este caso, es la mesa 'héroes'.
Conditiones
Este conjunto de datos actualmente es muy pequeño, pero imagina si tuviera todos los personajes de todas las películas de Marvel en la lista. Sería bastante largo y es posible que no queramos ver la lista completa.
Quizás solo nos interesen los personajes con magia.
Haga clic en la pestaña 'SQL'. Aquí podemos escribir nuestras propias consultas.
Ya hay una consulta escrita para ti.
SELECT * FROM `heroes` WHERE 1
Esto es muy similar a la consulta en la pestaña 'Examinar' excepto por WHERE 1el final.
WHEREsiempre va seguido de condiciones, y los resultados solo incluirán las filas que cumplan esas condiciones.
En este caso, la condición es 1 cuál es la definición de 'verdadero', por lo que mostrará todo.
Cambie la consulta a la siguiente.
SELECT * FROM `heroes` WHERE power='Magic'
Haga clic en la casilla de verificación 'Conservar cuadro de consulta' para que no perdamos nuestra consulta, luego haga clic en 'Ir'.
Ahora puede ver la tabla con solo filas donde se cumple nuestra condición.
Podemos limitar aún más nuestros resultados usando AND. Pruebe la siguiente consulta.
SELECT * FROM `heroes` WHERE power='Magic' AND hero_villain='Hero'
SELECT * FROM `heroes` WHERE power='Magic' OR power='Technology'
Si ejecuta esta consulta, debería ver una lista más larga de caracteres, pero aún no todos. Ahora se muestran aquellos con poderes basados en tecnología y magia, pero no se muestran aquellos con habilidad o poderes biológicos.
Clasificación
La siguiente adición útil a las consultas SELECT es poder ordenar los resultados.
Imagine que está creando un sitio de compras y quiere poder ver cuál de sus usuarios ha gastado más dinero para poder darles algunos incentivos o una bonificación. Ordenar hace esto mucho más fácil. Pruebe la siguiente consulta.
SELECT * FROM `heroes` WHERE power='Magic' OR power='Technology' ORDER BY first_appeared
SELECT * FROM `heroes` WHERE power='Magic' OR power='Technology' ORDER BY first_appeared DESC
Limitar Resultados
La última parte de las consultas SELECT comunes es limitar los resultados a un número determinado. En el ejemplo anterior, queríamos recompensar a los que más gastan, pero probablemente solo querríamos hacerlo para, digamos, los diez primeros, por lo que no es necesario ver más de diez filas.
No tenemos diez filas en nuestro resultado, por lo que no verá el efecto de esto a menos que usemos un número más bajo. Intentemos LIMIT 1
ver el carácter más reciente.
SELECT * FROM `heroes` WHERE power='Magic' OR power='Technology' ORDER BY first_appeared DESC LIMIT 1
Siguiente: Uniones