¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Fundamentos de SQL 2: contar y unir tablas

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de contenedores6 min de lectura6 comandos

Lo que vas a hacer

Una base de datos es muy buena respondiendo preguntas sobre muchas filas a la vez: cuántas hay, cuántas de cada tipo, cuáles no tienen nada. En esta lección le haces cuatro preguntas a la base de datos de la tienda con COUNT, GROUP BY, JOIN y LEFT JOIN. No cambias nada.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de arriba de esta lección y espera a que diga que está en marcha. La primera vez tarda un poco más, porque en ese momento se crea la base de datos de la tienda. Cada botón Ejecutar de abajo escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

1. Dile al terminal cómo entrar

Son los mismos dos comandos de Fundamentos de SQL. El primero deja que el cliente acepte el certificado propio de MySQL. El segundo crea el nombre corto sql, que sirve para entrar en la base de datos shop y ejecutar una sentencia. Si el terminal se ha reiniciado, vuelve a ejecutarlos: no pasa nada.

Comando
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

2. Cuenta filas

COUNT(*) cuenta filas. AS customers le pone nombre a la columna de la respuesta. La tienda tiene 40 clientes.

Comando
sql "SELECT COUNT(*) AS customers FROM customers"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

3. Cuenta cada tipo

GROUP BY country crea una fila de respuesta por cada país, y COUNT(*) cuenta los clientes de cada uno. ORDER BY customers DESC pone primero el número más grande. El Reino Unido (United Kingdom) tiene 14.

Comando
sql "SELECT country, COUNT(*) AS customers FROM customers GROUP BY country ORDER BY customers DESC LIMIT 3"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

4. Cuenta en dos tablas

Cada producto guarda su categoría solo como un número. JOIN pone al lado el nombre de la categoría, y así puedes contar los productos de cada una. Books, Kitchen y Outdoors tienen cinco cada una. Dos productos no tienen categoría, así que un JOIN los deja fuera.

Comando
sql "SELECT categories.name, COUNT(*) AS products FROM products JOIN categories ON products.category_id = categories.id GROUP BY categories.name ORDER BY products DESC LIMIT 4"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

5. Encuentra lo que falta

Un JOIN normal solo conserva las filas que coinciden. LEFT JOIN conserva a todos los clientes y pone NULL donde no hay ningún pedido que coincida. WHERE orders.id IS NULL se queda solo con esos: los cuatro clientes que nunca han hecho un pedido.

Comando
sql "SELECT customers.first_name, customers.country FROM customers LEFT JOIN orders ON orders.customer_id = customers.id WHERE orders.id IS NULL"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. Usa el mismo laboratorio de MySQL que Fundamentos de SQL, así que el atajo sql y el historial del alumno se conservan. La base de datos de la tienda se hizo a propósito con cosas que encontrar: clientes que nunca compraron, productos que nunca se vendieron y valores que faltan. Puede copiar la lección en su propio módulo y cambiarla, o crear otra desde cero con el menú Laboratorio del creador de lecciones.

Más en este laboratorio

Sobre este laboratorio y su código: Laboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.