Gráffica Academy
Creado para la ComunidadAprende a programar
Escribir al equipo

Contacta con el equipo de Gráffica Estudio Academy.

IG @ X in
SQL · Módulo 11

Crear tablas y procedimientos almacenados

Once módulos preguntando y modificando datos en tablas que ya existían. Hoy levantas el capó: así es exactamente como se construyen esas tablas desde cero —las mismas tres que has usado en todo el curso—, y conoces una pieza que vive fuera del propio SQL estándar: los procedimientos almacenados.

De dónde salió la base de datos de este curso

Todo este tiempo has consultado clientes, productos y pedidos como si ya existieran por arte de magia. En realidad, cada playground las crea con exactamente esta sentencia antes de que escribas tu primera consulta:

create-table.sql
1
Pulsa "Ejecutar" para ver el resultado.
CREATE TABLE

Define una tabla nueva: su nombre y, entre paréntesis, cada columna con su tipo de dato.

PRIMARY KEY

Marca la columna que identifica a cada fila de forma única. No puede repetirse ni estar vacía. En SQLite, una PRIMARY KEY de tipo INTEGER se autoincrementa sola.

DROP TABLE

Elimina una tabla entera, con todo su contenido. No pide confirmación — la contraparte de CREATE TABLE, y otro candidato a "comando peligroso" de este curso.

ALTER TABLE

Modifica una tabla que ya existe: añadir una columna, por ejemplo, con ALTER TABLE productos ADD COLUMN descuento REAL;


FOREIGN KEY: la relación entre tablas, hecha explícita

Ya usabas cliente_id para relacionar pedidos con clientes en tus JOIN — pero eso, por sí solo, es solo un número. Una FOREIGN KEY (clave foránea) le dice a la base de datos: "este número tiene que corresponder de verdad a un id que exista en la otra tabla", y se lo hace cumplir por ti.

foreign-key.sql
1
Pulsa "Ejecutar" para ver el resultado.

Más restricciones habituales

NOT NULL

Obliga a que la columna siempre tenga un valor — no se permite dejarla vacía (NULL) al insertar.

UNIQUE

No permite valores repetidos en esa columna, aunque no sea la clave primaria (por ejemplo, dos clientes no deberían compartir email).

DEFAULT

Un valor que se usa automáticamente si no especificas ninguno al insertar. DEFAULT 0 en stock, por ejemplo.

CHECK

Una condición que cada fila debe cumplir siempre. CHECK (precio > 0) impide precios negativos por diseño, no por disciplina del programador.

💡 Consejo

Cuantas más reglas dejes que imponga la propia base de datos (NOT NULL, UNIQUE, CHECK, FOREIGN KEY...), menos bugs de datos corruptos vas a perseguir más adelante en el código de la aplicación. Es mucho más fácil prevenir un dato mal formado en el origen que limpiarlo después.


Procedimientos almacenados

Un procedimiento almacenado es un bloque de SQL con nombre, guardado dentro de la propia base de datos, que puedes ejecutar tantas veces como quieras llamándolo por su nombre — como una función, pero viviendo en el servidor de base de datos en vez de en tu código de aplicación.

stored-procedure.sql
1
Pulsa "Ejecutar" para ver el resultado.
⚠️ Sobre este ejemplo

Si pulsas "Ejecutar" verás un error — y es intencionado. SQLite (el motor que corre en tu navegador para este curso) no soporta procedimientos almacenados; es una extensión propia de MySQL, PostgreSQL o SQL Server, no del estándar SQL que has aprendido hasta ahora. Aun así, mereces reconocer la sintaxis si te la encuentras: te evita el "¿esto qué es?" el primer día en un trabajo nuevo.


Ponlo a prueba

Comprueba lo que has aprendido

3 preguntas · sin nota, solo para afianzar lo de hoy

1. ¿Para qué sirve una FOREIGN KEY?

2. ¿Qué hace la restricción CHECK (precio > 0)?

3. ¿Por qué el playground de este módulo no puede ejecutar CREATE PROCEDURE?

Síguenos IG @ X in