DEFAULT en SQL: qué es, cómo se usa y ejemplos prácticos

En SQL, la restricción DEFAULT se utiliza para asignar un valor por defecto a una columna cuando en una operación INSERT no se especifica ningún valor para esa columna.

De esta forma, si no se proporciona un dato, el motor de base de datos completa automáticamente el valor definido en DEFAULT. Esto ayuda a mantener la consistencia de los registros y a simplificar la inserción de datos.

¿Qué es DEFAULT en SQL?

  • Es una restricción de columna que se define al crear o modificar una tabla.
  • Permite establecer un valor inicial que se insertará automáticamente si no se proporciona otro.
  • Se aplica en operaciones de INSERT cuando la columna no aparece en la lista de valores o se especifica como DEFAULT.
  • No reemplaza valores NULL explícitos: si insertás NULL, la columna almacenará NULL (salvo que tenga NOT NULL).

👉 Es muy útil para columnas como fecha_registro, estado, saldo_inicial o banderas lógicas.

Sintaxis de DEFAULT

Definir DEFAULT en CREATE TABLE

CREATE TABLE empleados (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  fecha_registro DATE DEFAULT CURRENT_DATE,
  activo BOOLEAN DEFAULT TRUE
);

Definir DEFAULT con ALTER TABLE

ALTER TABLE empleados
ALTER COLUMN activo SET DEFAULT TRUE;

Insertar usando DEFAULT

INSERT INTO empleados (id, nombre) VALUES (1, 'Ana');

👉 Como no se especifica activo, se insertará TRUE.

INSERT INTO empleados (id, nombre, activo) VALUES (2, 'Luis', DEFAULT);

👉 Aquí se inserta explícitamente el valor por defecto.

Ejemplos prácticos de DEFAULT

1. Valor por defecto en fechas

CREATE TABLE pedidos (
  id INT PRIMARY KEY,
  fecha DATE DEFAULT CURRENT_DATE
);

INSERT INTO pedidos (id) VALUES (1);

👉 La fila creada tendrá fecha = fecha_actual automáticamente.

2. Bandera lógica con valor inicial

CREATE TABLE usuarios (
  id INT PRIMARY KEY,
  nombre VARCHAR(100),
  activo BOOLEAN DEFAULT TRUE
);

INSERT INTO usuarios (id, nombre) VALUES (1, 'Carla');

👉 El usuario se insertará como activo = TRUE sin necesidad de especificarlo.

3. Valores numéricos iniciales

CREATE TABLE cuentas (
  id INT PRIMARY KEY,
  saldo DECIMAL(10,2) DEFAULT 0
);

INSERT INTO cuentas (id) VALUES (1);

👉 La cuenta nueva tendrá saldo = 0.

4. DEFAULT en combinación con NOT NULL

CREATE TABLE productos (
  id INT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  stock INT NOT NULL DEFAULT 0
);

👉 Así, nunca habrá productos con NULL en stock.

5. DEFAULT aplicado a expresiones

En algunos motores (ej. PostgreSQL), se pueden usar funciones como valores por defecto:

CREATE TABLE registros (
  id SERIAL PRIMARY KEY,
  creado_en TIMESTAMP DEFAULT NOW()
);

👉 Cada fila nueva tendrá como valor inicial la fecha y hora actual.

DEFAULT y los distintos motores de base de datos

  • MySQL/MariaDB: soporta DEFAULT con valores literales o funciones específicas (CURRENT_TIMESTAMP).
  • PostgreSQL: muy flexible, soporta DEFAULT con funciones, expresiones y constantes.
  • SQL Server: permite DEFAULT, incluso con funciones (GETDATE()).
  • Oracle: soporta DEFAULT con expresiones y secuencias (SYSDATE, NEXTVAL).

👉 Siempre revisar la documentación de cada motor, porque no todos permiten funciones complejas como DEFAULT.

Diferencias entre DEFAULT y otros valores

  • DEFAULT vs. NULL:
    • Si no se menciona la columna → se aplica DEFAULT.
    • Si se menciona y se asigna NULL → se guarda NULL (a menos que tenga NOT NULL).
  • DEFAULT vs. trigger:
    • DEFAULT es estático o basado en funciones sencillas.
    • Triggers permiten lógica más compleja (ej. generar códigos automáticos).

Errores comunes al usar DEFAULT

  1. Pensar que DEFAULT reemplaza NULL:
    • INSERT INTO usuarios (id, nombre, activo) VALUES (1,'Ana',NULL);
      👉 Insertará NULL, no TRUE.
  2. Olvidar NOT NULL cuando corresponde:
    • Si una columna debe tener siempre un valor válido, conviene definir NOT NULL DEFAULT.
  3. Usar funciones no soportadas:
    • Algunos motores no permiten todas las funciones en DEFAULT.
  4. Cambiar DEFAULT en tablas con muchos registros:
    • En algunos motores puede ser costoso modificarlo en tablas muy grandes.

Buenas prácticas con DEFAULT

  • Usar DEFAULT en columnas que siempre deben tener un valor inicial.
  • Combinarlo con NOT NULL cuando no querés valores vacíos.
  • Definir DEFAULT en columnas booleanas o de estado (activo = TRUE, estado = 'pendiente').
  • Usar valores lógicos y acordes al negocio: no poner 0 como DEFAULT en todas partes.
  • Documentar los valores por defecto en el diseño de la base de datos.

Ejemplo avanzado: sistema de órdenes

CREATE TABLE ordenes (
  id INT PRIMARY KEY,
  cliente_id INT NOT NULL,
  fecha TIMESTAMP DEFAULT NOW(),
  estado VARCHAR(20) NOT NULL DEFAULT 'Pendiente',
  total DECIMAL(10,2) DEFAULT 0,
  FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);

INSERT INTO ordenes (id, cliente_id) VALUES (1, 5);

👉 Resultado:

  • fecha = fecha y hora actual.
  • estado = «Pendiente».
  • total = 0.

Todo sin tener que especificar manualmente esos valores.

Preguntas frecuentes (FAQ)

1. ¿DEFAULT aplica si la columna no está en la inserción?
Sí. Si omitís la columna, el motor inserta automáticamente el valor por defecto.

2. ¿DEFAULT se aplica si inserto NULL?
No. Si ponés explícitamente NULL, ese es el valor guardado (a menos que exista NOT NULL).

3. ¿Puedo usar funciones en DEFAULT?
Depende del motor. PostgreSQL, Oracle y SQL Server lo permiten; MySQL solo en casos específicos.

4. ¿Se puede modificar el valor DEFAULT de una columna existente?
Sí, con ALTER TABLE ... ALTER COLUMN ... SET DEFAULT.

5. ¿Qué diferencia hay entre DEFAULT y un trigger?
DEFAULT es más simple y eficiente, pero limitado. Triggers permiten lógica compleja y condicional.

Conclusión

La restricción DEFAULT en SQL es una herramienta clave para garantizar la integridad y facilidad de uso en bases de datos. Permite asignar valores iniciales de manera automática, simplificando las inserciones y evitando datos incompletos.

Su uso adecuado ayuda a mantener la consistencia, reducir errores y mejorar la eficiencia del diseño de tablas.

¿Querés aprender más? 🚀

Si este artículo sobre DEFAULT en SQL te resultó útil, te invitamos a seguir aprendiendo con nuestro Curso de SQL en AprenderSQL.es.

En el curso vas a encontrar:

  • Explicaciones claras sobre restricciones (DEFAULT, NOT NULL, UNIQUE, CHECK, etc.).
  • Ejemplos prácticos aplicados a proyectos reales.
  • Ejercicios para practicar la creación de tablas con valores por defecto.
  • Buenas prácticas de diseño de bases de datos relacionales.

👉 Con nuestro curso podrás dominar SQL paso a paso y aplicar lo aprendido en proyectos reales, entrevistas laborales y análisis de datos.

Conoce cómo definir valores por defecto en Claves y restricciones y repasa más términos en el Glosario SQL completo.

Scroll al inicio