SQL – DDL intuitivo
Las sentencias DDL (Lenguaje de Definición de Datos) se utilizan para crear, modificar o eliminar estructuras de la base de datos, como tablas, índices o vistas.
Estas instrucciones no manipulan datos directamente, sino la estructura que los contiene.
Principales sentencias DDL
| Instrucción | Descripción |
|---|---|
| CREATE | Crea nuevos objetos (tablas, vistas, índices, etc.) |
| ALTER | Modifica la estructura de un objeto existente |
| DROP | Elimina un objeto de la base de datos |
| TRUNCATE | Elimina todos los datos de una tabla sin borrar la estructura |
| RENAME | Cambia el nombre de una tabla u otro objeto |
1. CREATE
Crear una tabla. Sintaxis completa:
CREATE TABLE nombre_tabla ( nombre_columna tipo_dato [restricciones], ... [restricciones_tabla] );
Elementos clave
| Parte | Descripción |
|---|---|
| nombre_tabla | Nombre de la tabla que estás creando |
| nombre_columna | Nombre de cada columna |
| tipo_dato | Tipo de dato (ej: INT, VARCHAR(50), DATE, DECIMAL(10,2)...) |
| Restricciones | Restricciones de columna (ej: NOT NULL, PRIMARY KEY, UNIQUE, etc.) |
| restricciones_tabla | Restricciones generales de la tabla (claves primarias/foráneas múltiples) |
Tipos de datos comunes
| Tipo de dato | Descripción |
|---|---|
| INT | Número entero |
| VARCHAR(n) | Texto variable de hasta n |
| CHAR(n) | Texto fijo de n caracteres |
| DATE | Fecha |
| DECIMAL(x,y) | Número decimal (x cifras, y decimales) |
Restricciones comunes
| Restricción | Significado |
|---|---|
| PRIMARY KEY | Identificador único, no puede ser NULL |
| NOT NULL | No se permiten valores nulos |
| UNIQUE | Los valores deben ser únicos |
| DEFAULT valor | Valor por defecto si no se especifica |
| CHECK (condición) | Condición que debe cumplirse para los valores |
| FOREIGN KEY | Clave foránea (referencia a otra tabla) |
Ejemplo completo:
CREATE TABLE Empleados ( ID INT PRIMARY KEY, Nombre VARCHAR(50) NOT NULL, Edad INT CHECK (Edad >= 18), Departamento_ID INT, FechaIngreso DATE DEFAULT DATE(), Salario DECIMAL(10, 2), CONSTRAINT FK_Departamento FOREIGN KEY (Departamento_ID) REFERENCES Departamentos(ID) );
2. ALTER
Añadir una columna. La sintaxis completa es:
ALTER TABLE nombre_tabla ADD nombre_columna tipo_dato [restricciones];
Ejemplo:
ALTER TABLE Empleados ADD FechaNacimiento DATE;
Modificar el tipo de una columna:
ALTER TABLE Empleados ALTER COLUMN Salario DECIMAL(12,2);
Eliminar una columna:
ALTER TABLE Empleados DROP COLUMN FechaNacimiento;
3. DROP
Eliminar una tabla:
DROP TABLE Empleados;
4. TRUNCATE
Eliminar todos los datos de una tabla (más rápido que DELETE):
TRUNCATE TABLE Empleados;
NOTA: Esto no se puede deshacer y no activa triggers. TEMA 6. DDL TEMA 6. DDL
Resumen de las diferencias clave:
| Característica | TRUNCATE | DELETE |
|---|---|---|
| Velocidad | Más rápido | Más lento (registra cada fila) |
| Resetea auto incremento | Sí | No |
| Condición | No permite condiciones | Permite WHERE |
| Activación de triggers | No activa triggers | Activa triggers |
| Transacciones | No siempre transaccional | Totalmente transaccional |
| Reversibilidad | A veces no es reversible | Reversible (con ROLLBACK) |
5. RENAME
(no estándar, depende del SGBD)
Cambia el nombre de una tabla.
En Oracle:
RENAME Empleados TO Personal;
En SQL Server / Access, se hace con herramientas gráficas o comandos específicos.
Consideraciones importantes
- Las sentencias DDL suelen confirmarse automáticamente (autocommit).
- No puedes usar WHERE en DDL.
- Cambiar estructuras puede afectar a otras dependencias (índices, relaciones, vistas...).