Por qué una base de datos
En resumen: Una base de datos guarda los datos en tablas de filas y columnas, para que muchas personas y programas puedan leerlos y cambiarlos a la vez sin hacer un desastre.
Problema
La hoja de cálculo que todos tocan
Una tienda en línea pequeña lleva sus pedidos en una hoja grande de Excel. Cada fila tiene la fecha, el nombre, el correo y la ciudad del cliente, el producto, la cantidad y el precio. Después de un año hay 3000 filas y empiezan los problemas:
- Maria cambia su correo. Está en 40 filas. Tú corriges 38.
- Un compañero escribe «Sofia», tú escribes «Sofía», y el informe por ciudades ya está mal.
- Dos personas abren el archivo a la vez. Una de ellas pierde sus cambios.
- «¿Cuánto gastó en marzo cada cliente de Plovdiv?» cuesta media hora de filtros.
Excel es una buena herramienta, pero no se hizo para guardar los datos de un negocio en marcha.
La idea
Una base de datos
Una base de datos es un lugar organizado para los datos. El programa que la cuida es un sistema gestor de bases de datos (SGBD). Hace cuatro cosas que un archivo no hace:
- Mantiene reglas. El correo es único, el precio no es negativo, cada pedido pertenece a un cliente que existe. Una fila que rompe una regla simplemente no entra.
- Guarda cada hecho una vez. El correo de Maria está en un solo lugar. Sus pedidos solo apuntan a ella.
- Deja que muchas personas trabajen a la vez, sin que nadie pierda sus cambios.
- Responde preguntas, incluso sobre millones de filas, normalmente en milisegundos.
Te encontrarás con los nombres PostgreSQL, MySQL, SQL Server, Oracle y SQLite. SQLite está en tu teléfono, en tu navegador y en muchas aplicaciones, y en este curso funciona directamente en la página.
Más precisamente, para curiosos
PostgreSQL, MySQL y SQL Server son servidores: un programa aparte al que las aplicaciones se conectan por la red, a menudo desde muchas computadoras a la vez. SQLite es una biblioteca: la base es un único archivo que el programa abre por sí mismo. El lenguaje con el que les haces preguntas es casi el mismo. Las diferencias las irás encontrando por el camino.
La idea
Tablas, filas, columnas
En el tipo más común de base de datos, la relacional, los datos viven en tablas. Una tabla es para un tipo de cosas: clientes, productos, pedidos.
- Cada fila es una cosa: un cliente.
- Cada columna es una propiedad: nombre, correo, ciudad. Todos los valores de una columna son del mismo tipo.
Estos son los clientes de la tienda con la que trabajarás durante todo el curso. Pulsa «Ejecutar»:
Lo que ves es una consulta en el lenguaje SQL. SELECT * significa «todas las columnas», FROM customers significa «de la tabla customers». El punto y coma termina la consulta.
El campo es una base de datos real. Cambia la consulta, ejecútala otra vez, comete un error a propósito: nada se puede romper, y «Base nueva» lo devuelve al principio.
Más precisamente, para curiosos
Mira al cliente 12, Boris. En lugar de una ciudad hay NULL: «sin valor». No es texto vacío ni es cero. Tiene una lección entera, porque NULL está detrás de muchos informes equivocados.
Pruébalo
Los productos
Muestra todos los productos de la tienda. Su tabla se llama products.
Solución
SELECT * FROM products;25 productos. Mira la columna category_id: no dice «Lácteos» sino un número. El número apunta a una fila de la tabla categories. Así el nombre de cada categoría se escribe una sola vez.
Pruébalo
¿Fila o columna?
Ejercicio
Un paseo por la tienda
Además de customers y products, la base tiene cuatro tablas más. Mira dos de ellas.
1. Muestra todos los pedidos (orders). ¿Cuántos hay? Mira la columna customer_id: dice de quién es el pedido, con el mismo número que tiene el cliente en customers.
Todos los pedidos:
Solución
SELECT * FROM orders;60 pedidos. El pedido 60 es del cliente 1. Abre arriba los clientes y mira quién es: Maria.
2. Muestra las categorías (categories). Algunas tienen un parent_id, dos no. ¿Qué crees que significa?
Todas las categorías:
Solución
SELECT * FROM categories;«Alimentos» y «Hogar» son las categorías de arriba (sin padre). «Pan y bollería» tiene parent_id 1, así que está debajo de «Alimentos». Así se guarda un árbol en una tabla.
Test
Ponte a prueba
Lecciones relacionadas
Sección «Lecciones relacionadas»- Continúa en: La tienda · SQL y las bases de datos reales · SELECT: elegir columnas · Clave primaria y clave foránea
- Ejercicios sobre el tema: Bienvenida a las bases de datos