Base de datos Querynomicon (SQLite): pingüinos, tablas y ejercicios de SQL
Querynomicon es una pequeña base SQLite para aprender SQL desde cero: el conjunto de datos de pingüinos de Palmer y un diminuto laboratorio con personal, experimentos y placas de ensayo. En SQLtest.online puedes consultarla directamente en el navegador: resolver ejercicios con corrección automática y ejecutar tus propias consultas en el playground, sin instalar nada.
- 13 tablas
- 344 pingüinos
- 50 experimentos
- 49 ejercicios de SQL
Qué es Querynomicon
La base procede del Querynomicon, el tutorial gratuito de Greg Wilson «An Introduction to SQL for Wary Data Scientists». Su tabla principal contiene los pingüinos de Palmer: medidas de 344 pingüinos de tres especies de tres islas de la Antártida.
Los datos son pocos y fáciles de leer, pero tienen las particularidades de los datos reales: valores ausentes (NULL) en las medidas y en la columna de sexo. Por eso la base es ideal para aprender filtrado, ordenación, agrupación, tratamiento de NULL y lo básico de DDL y DML.
Qué contiene la base
Las tablas se agrupan en dos bloques.
Pingüinos
penguins con las 344 aves y little_penguins, una muestra de 10 filas para pruebas rápidas.
Laboratorio
department, staff, experiment, performed (quién realizó cada experimento), plate e invalidated, además de machine, usage, person y contact.
Las tablas de pingüinos no tienen claves: cada fila es un ave. Las tablas del laboratorio se relacionan con identificadores numéricos, y performed une personal y experimentos en una relación de muchos a muchos.
Cuántos datos hay en las tablas:
| Tabla | Filas | Contenido |
|---|---|---|
| penguins | 344 | pingüinos y sus medidas |
| little_penguins | 10 | una muestra de 10 pingüinos |
| department | 4 | departamentos |
| staff | 10 | personal |
| experiment | 50 | experimentos |
| performed | 65 | personal ↔ experimentos |
| plate | 256 | placas de ensayo |
| invalidated | 30 | placas invalidadas |
| machine | 3 | aparatos del laboratorio |
| person | 15 | personas |
| usage | 8 | registro de uso de aparatos |
| contact | 8 | contactos |
Estructura de las tablas
Haz clic en una tabla para ver sus columnas, una fila de ejemplo y sus claves.
Lista de tablas
- identID del departamento
- nameNombre del departamento
- buildingNombre del edificio
| ident | name | building |
|---|---|---|
| gen | Genética | Chesson |
- speciesEspecie de pingüino
- islandIsla de residencia
- bill_length_mmLongitud del pico, mm
- bill_depth_mmProfundidad del pico, mm
- flipper_length_mmLongitud de la aleta, mm
- body_mass_gMasa corporal, g
- sexSexo
| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex |
|---|---|---|---|---|---|---|
| Gentoo | Biscoe | 52.1 | 17 | 230 | 5550 | MALE |
- speciesEspecie de pingüino
- islandIsla de residencia
- bill_length_mmLongitud del pico, mm
- bill_depth_mmProfundidad del pico, mm
- flipper_length_mmLongitud de la aleta, mm
- body_mass_gMasa corporal, g
- sexSexo
| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex |
|---|---|---|---|---|---|---|
| Gentoo | Biscoe | 52.1 | 17 | 230 | 5550 | MALE |
- identNúmero de empleado
- personalNombre del empleado
- familyApellido del empleado
- deptDepartamento
- ageEdad
| ident | personal | family | dept | age |
|---|---|---|---|---|
| 7 | Abram | Chokshi | gen | 23 |
- identID de la máquina
- nameNombre de la máquina
- detailsJSON con detalles
| ident | name | details |
|---|---|---|
| 1 | WY401 | {"acquired": "2023-05-01"} |
| 2 | Inphormex | {"acquired": "2021-07-15", "refurbished": "2023-10-22"} |
| 3 | AutoPlate 9000 | {"note": "necesita actualización de software"} |
Consultas de ejemplo
Estas consultas muestran cómo se relacionan los datos. Copia cualquiera y ejecútala en el playground.
Experimentos y placas: una relación de uno a muchos con LEFT JOIN y un recuento.
SELECT e.ident, e.kind, e.started, COUNT(p.ident) AS plates
FROM experiment e
LEFT JOIN plate p ON p.experiment = e.ident
GROUP BY e.ident
ORDER BY e.ident
LIMIT 3;
| ident | kind | started | plates |
|---|---|---|---|
| 1 | calibration | 2023-08-25 | 1 |
| 2 | calibration | 2023-02-14 | 1 |
| 3 | trial | 2023-02-22 | 10 |
Quién realizó un experimento: una relación de muchos a muchos mediante performed.
SELECT s.personal, s.family, e.kind, e.started
FROM performed pf
JOIN staff s ON s.ident = pf.staff
JOIN experiment e ON e.ident = pf.experiment
ORDER BY e.ident, s.ident
LIMIT 3;
| personal | family | kind | started |
|---|---|---|---|
| Nitya | Lal | calibration | 2023-08-25 |
| Indrans | Sridhar | calibration | 2023-02-14 |
| Kartik | Gupta | trial | 2023-02-22 |
Ejercicios de SQL por tema
La base Querynomicon tiene 49 ejercicios, desde el primer SELECT hasta vistas, índices y triggers. Las soluciones se comprueban automáticamente en un SQLite real. El número de la derecha es la cantidad de ejercicios del tema; los puntos de color muestran el rango de dificultad.
- Fundamentos de SQL 1
- Consultas analíticas 2
- Consultas de manipulación de datos (DML) 1
- Lenguaje de Definición de Datos (DDL) 13
Por dónde empezar
Los primeros ejercicios de la base Querynomicon:
- Recuperar Todos los Departamentos
- Nombres del Personal
- Ordenar Pingüinos
- Especies de Pingüinos
- Pingüinos de Peso Más Ligero
- Recuperación de Datos de Pingüinos
- Distribución de Especies de Pingüinos por Isla
- Distribución de Población (Pivot)
- Pingüinos Pequeños
- Especies de Pingüinos Pequeños
Todos los ejercicios de Querynomicon →
Preguntas frecuentes
¿Hay que instalar SQLite para usar Querynomicon?
No. Los ejercicios y el playground de SQLtest.online ejecutan las consultas en nuestros servidores, así que basta con un navegador. En el playground, elige SQLite 3 Preloaded.
¿Qué son los pingüinos de Palmer?
Un conjunto de datos didáctico muy popular: medidas de pingüinos adelia, barbijo y papúa tomadas en la estación Palmer, en la Antártida. Se usa a menudo como sustituto moderno del conjunto de datos iris.
¿Es buena esta base para principiantes?
Sí. Las tablas son pequeñas y el tema no necesita explicación, así que puedes centrarte en el propio SQL: SELECT, WHERE, ORDER BY, GROUP BY y el tratamiento de NULL.