¿Qué es SQL y las Bases de Datos Relacionales?
Principiante⏱20-30 minutos📖6 min de lecturaLección 1 de 10

¿Qué es SQL y las Bases de Datos Relacionales?

Entiende SQL, bases de datos relacionales, tablas, filas, columnas, claves primarias y RDBMS populares como MySQL, PostgreSQL y SQLite

SQL (Structured Query Language) es el lenguaje estándar para gestionar y consultar datos en sistemas de gestión de bases de datos relacionales (RDBMS). Permite crear, leer, actualizar y eliminar datos: a menudo llamadas operaciones CRUD.

¿Qué es una Base de Datos Relacional?

Una base de datos relacional organiza datos en tablas (como hojas de cálculo) donde cada tabla almacena información sobre un tema. Las tablas se relacionan entre sí mediante claves, eliminando redundancia mientras mantienen los datos conectados.

ℹ️Nota

El modelo relacional fue inventado por Edgar F. Codd en IBM en 1970. Revolucionó la forma en que almacenamos y consultamos datos al separar la estructura lógica del almacenamiento físico.

Conceptos Principales

Tablas

Una tabla es una colección de datos relacionados organizados en filas y columnas.

users | id | name | email | age | |----|--------|--------------------|-----| | 1 | Alice | alice@example.com | 30 | | 2 | Bob | bob@example.com | 25 | | 3 | Carol | carol@example.com | 28 |

Filas y Columnas

  • Columna: Un solo campo (atributo) de datos, como name o email. Las columnas tienen un tipo de dato (texto, número, fecha, etc.).
  • Fila: Un único registro en una tabla, que representa una entidad (un usuario, un producto, etc.).

Clave Primaria

Una clave primaria identifica de forma única cada fila en una tabla. Toda tabla debería tener una.

sql
CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT, email TEXT );
✅Éxito

Una buena clave primaria es única, nunca es nula y nunca cambia. Los enteros autoincrementables son la opción más común.

Clave Foránea

Una clave foránea vincula filas entre tablas, creando relaciones.

sql
CREATE TABLE orders ( id INTEGER PRIMARY KEY, user_id INTEGER, total DECIMAL, FOREIGN KEY (user_id) REFERENCES users(id) );

Sistemas RDBMS Populares

RDBMS
Tipo
Mejor Para
Licencia
PostgreSQL
Objeto-relacional
Funcionalidades avanzadas, integridad de datos
Open Source
MySQL
Relacional
Aplicaciones web, amplio soporte de hosting
Open Source
SQLite
Embebido
Apps móviles, almacenamiento local, prototipado
Dominio Público
SQL Server
Relacional
Ecosistemas Windows empresariales
Comercial
Oracle DB
Relacional
Empresas de gran escala
Comercial

Cuándo Elegir Cada Uno

  • SQLite: Tu proyecto necesita una base de datos ligera y sin servidor (apps móviles, sitios pequeños, desarrollo/pruebas).
  • PostgreSQL: Necesitas funciones avanzadas (JSON, búsqueda de texto completo, tipos personalizados, escrituras concurrentes).
  • MySQL: Quieres una base de datos web ampliamente alojada y probada (WordPress, e-commerce).
  • SQL Server / Oracle: Trabajas en un entorno empresarial con licencias existentes.
⚠️Advertencia

Aunque SQL está estandarizado, cada RDBMS tiene su propio dialecto. LIMIT en MySQL/PostgreSQL es TOP en SQL Server y ROWNUM en Oracle. Usa SQL ANSI cuando sea posible.

Tu Primera Consulta SQL

sql
SELECT '¡Hola, Mundo SQL!' AS greeting;

Esto devuelve:

greeting
¡Hola, Mundo SQL!

Cómo Fluyen los Datos en un RDBMS

  1. El cliente envía una consulta SQL (vía app, CLI o GUI).
  2. El analizador verifica la sintaxis y construye un árbol de análisis.
  3. El optimizador elige el plan de ejecución más eficiente.
  4. El ejecutor ejecuta el plan y obtiene/actualiza datos.
  5. Los resultados se envían de vuelta al cliente.

Caso de Uso Real: Base de Datos de Comercio Electrónico

Una tienda online podría tener tablas como:

  • customers: quién compra
  • products: qué compran
  • orders: cuándo compran
  • order_items: qué productos en cada pedido
  • categories: agrupación de productos

En lugar de almacenar el nombre del cliente en cada pedido, cada fila de orders contiene una clave foránea customer_id. Esto evita la duplicación y facilita las actualizaciones: cambia la dirección en un solo lugar.

sql
-- Encuentra todos los pedidos de la cliente Alice SELECT o.id, o.order_date, o.total FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.name = 'Alice';

Categorías de Instrucciones SQL

Categoría
Propósito
Ejemplos
DDL
Definir estructura
CREATE, ALTER, DROP
DML
Manipular datos
SELECT, INSERT, UPDATE, DELETE
DCL
Controlar acceso
GRANT, REVOKE
TCL
Gestionar transacciones
COMMIT, ROLLBACK, SAVEPOINT
ℹ️Nota

A lo largo de este curso, usarás DML con más frecuencia. SELECT por sí solo representa ~80% de todo el SQL escrito.

¿Por qué Aprender SQL?

  • Universal: Toda empresa tecnológica usa una base de datos. SQL es la puerta de entrada.
  • Estable: SQL fue inventado en los años 1970 y sigue siendo el lenguaje de datos nº 1.
  • Alto impacto: Una sola consulta puede analizar millones de filas en milisegundos.
  • Transferible: Las habilidades se aplican a MySQL, PostgreSQL, SQLite, BigQuery, Snowflake y más.
✅Éxito

SQL no es solo para ingenieros. Analistas de datos, gerentes de producto, especialistas en marketing y diseñadores se benefician al consultar datos directamente.

SQL en el Mundo Real

SQL no es solo para ingenieros de backend. Así es como diferentes roles lo usan:

Rol
Qué Consultan
Por qué
Analista de Datos
Ventas, comportamiento de usuarios, embudos
Generar informes y paneles
Gerente de Producto
Adopción de funciones, retención
Tomar decisiones de producto basadas en datos
Marketing
Rendimiento de campañas, segmentos
Optimizar gasto en anuncios y segmentación
Ingeniero
Datos de aplicación, logs, métricas
Construir funciones y depurar problemas
Finanzas
Ingresos, costos, pronósticos
Cerrar balances y planificar presupuestos

Ejemplo: Consulta de Marketing

sql
-- Encuentra los 5 principales canales de marketing por tasa de conversión SELECT channel, COUNT(DISTINCT user_id) AS visitors, COUNT(DISTINCT CASE WHEN purchased THEN user_id END) AS buyers, ROUND(COUNT(DISTINCT CASE WHEN purchased THEN user_id END) * 100.0 / COUNT(DISTINCT user_id), 2) AS conversion_pct FROM campaign_data WHERE campaign_date >= '2024-01-01' GROUP BY channel ORDER BY conversion_pct DESC LIMIT 5;

Configurando Tu Entorno

Para practicar SQL localmente, elige una opción:

  1. SQLite (más fácil): Instala sqlite3 y abre un archivo .db.
  2. PostgreSQL: Instala, ejecuta psql, crea una base de datos.
  3. MySQL: Instala, ejecuta mysql -u root -p.
  4. Online: Usa SQLFiddle, DB Fiddle o SQLite Online.
bash
# SQLite — sin configuración requerida sqlite3 test.db
sql
-- Crea una tabla y consúltala inmediatamente CREATE TABLE hello (message TEXT); INSERT INTO hello VALUES ('¡SQL funciona!'); SELECT * FROM hello;

Errores Comunes de Principiantes en SQL

  • Olvidar el punto y coma: Las instrucciones SQL necesitan un ; al final
  • Usar = en lugar de IS NULL: WHERE name = NULL nunca funciona
  • Mezclar comillas simples y dobles: SQL usa comillas simples para strings
  • Omitir WHERE en DELETE/UPDATE: Eliminación masiva accidental
  • **SELECT ***: Devuelve datos innecesarios y se rompe con cambios de esquema
⚠️Advertencia

Siempre prueba tus consultas en una copia de los datos primero. Un UPDATE o DELETE descontrolado en datos de producción puede causar daños irreversibles.

Preguntas de Práctica

  1. ¿Qué significa la sigla SQL?
  2. Nombra tres sistemas RDBMS populares y un caso de uso para cada uno.
  3. ¿Cuál es la diferencia entre una clave primaria y una clave foránea?
  4. En la tabla employees(id, name, department_id, salary), ¿qué columna es probablemente la clave primaria? ¿Cuál es una clave foránea?
  5. ¿Cuáles son las cuatro categorías de instrucciones SQL?
  6. ¿Por qué se considera SQLite "sin servidor"?
  7. Verdadero o Falso: SQL es idéntico en todos los sistemas de base de datos.
  8. ¿Por qué una base de datos de comercio electrónico debería usar claves foráneas en lugar de almacenar nombres de clientes en cada fila de pedido?
  9. ¿Qué hace el optimizador SQL?
  10. Enumera cinco industrias o roles donde las habilidades en SQL son valiosas.
Progreso10%