beginner20-30 minutosLecció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

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

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.

ℹ️Note

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 );
Success

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

RDBMSTipoMejor ParaLicencia
PostgreSQLObjeto-relacionalFuncionalidades avanzadas, integridad de datosOpen Source
MySQLRelacionalAplicaciones web, amplio soporte de hostingOpen Source
SQLiteEmbebidoApps móviles, almacenamiento local, prototipadoDominio Público
SQL ServerRelacionalEcosistemas Windows empresarialesComercial
Oracle DBRelacionalEmpresas de gran escalaComercial

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.
⚠️Warning

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íaPropósitoEjemplos
DDLDefinir estructuraCREATE, ALTER, DROP
DMLManipular datosSELECT, INSERT, UPDATE, DELETE
DCLControlar accesoGRANT, REVOKE
TCLGestionar transaccionesCOMMIT, ROLLBACK, SAVEPOINT
ℹ️Note

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.
Success

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:

RolQué ConsultanPor qué
Analista de DatosVentas, comportamiento de usuarios, embudosGenerar informes y paneles
Gerente de ProductoAdopción de funciones, retenciónTomar decisiones de producto basadas en datos
MarketingRendimiento de campañas, segmentosOptimizar gasto en anuncios y segmentación
IngenieroDatos de aplicación, logs, métricasConstruir funciones y depurar problemas
FinanzasIngresos, costos, pronósticosCerrar 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
⚠️Warning

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%