CHECK en SQL
La restricción CHECK valida una condición antes de guardar cada fila y protege la calidad de los datos.
CHECK en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.
Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.
Esta lección sobre CHECK en SQL forma parte del tutorial SQL de The Data Schools. Cada ejemplo está pensado para ejecutarse en el editor con las tablas de demostración Clientes, Productos o Pedidos.
Lee la sintaxis, ejecuta el ejemplo tal cual y después modifica columnas, filtros o valores para comprobar que entiendes el comportamiento de la sentencia.
Consejo: escribe consultas pequeñas y verifica el resultado antes de combinar varias cláusulas. Así localizas errores de sintaxis más rápido.
Errores frecuentes: olvidar la indentación en bloques if, for o def; confundir = con ==; no importar un módulo antes de usarlo.
Sintaxis CHECK
La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.
Plantilla
CREATE TABLE tabla (
valor INTEGER CHECK (valor > 0)
);
Ejemplo CHECK en precios
Observa qué columnas devuelve la consulta y cómo se nombran con AS. Ese alias es lo que verás en la cuadrícula del editor.
Solo precios positivos
CREATE TABLE Productos_Check (ID INTEGER PRIMARY KEY, Nombre TEXT NOT NULL, Precio REAL CHECK (Precio > 0));
INSERT INTO Productos_Check VALUES (1, 'Teclado', 29.99), (2, 'Ratón', 12.50);
SELECT Nombre, Precio FROM Productos_Check ORDER BY Nombre;
| Nombre | Precio |
|---|---|
| Ratón | 12.50 |
| Teclado | 29.99 |
Ejemplo CHECK con rango
Observa qué columnas devuelve la consulta y cómo se nombran con AS. Ese alias es lo que verás en la cuadrícula del editor.
Edad laboral válida
CREATE TABLE Empleados_Check (ID INTEGER PRIMARY KEY, Nombre TEXT NOT NULL, Edad INTEGER CHECK (Edad >= 18 AND Edad <= 65));
INSERT INTO Empleados_Check VALUES (1, 'Laura', 32), (2, 'Miguel', 28);
SELECT Nombre, Edad FROM Empleados_Check ORDER BY Nombre;
| Nombre | Edad |
|---|---|
| Laura | 32 |
| Miguel | 28 |
Resumen CHECK
- Rechaza filas que no cumplen la expresión.
- Puede validar rangos y combinar condiciones.
- La sintaxis exacta puede variar entre motores.
Cómo practicar en el editor
1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.