Lenguaje de Definición de Datos (DDL) 1/3
1. Introducción a DDL #
El Lenguaje de Definición de Datos (DDL) se utiliza para definir y modificar la estructura de las bases de datos y sus objetos, como tablas, índices y vistas. Los principales comandos de DDL son CREATE, ALTER, y DROP.
2. Comando CREATE #
Sintaxis básica de CREATE TABLE:
1CREATE TABLE tabla ( 2 columna1 tipo_dato, 3 columna2 tipo_dato, 4 ... 5);
Ejemplo:
1CREATE TABLE estudiantes ( 2 id INT PRIMARY KEY, 3 nombre VARCHAR(50), 4 edad INT, 5 clase VARCHAR(50) 6);
Este comando crea una tabla llamada estudiantes con cuatro columnas: id, nombre, edad, y clase.
Consideraciones #
- Orden de las columnas: En CREATE TABLE, el orden en que defines las columnas es importante. Las restricciones de clave primaria y foránea, por ejemplo, deben estar definidas de manera apropiada.
- Indices: Los índices pueden ser creados explícitamente para mejorar el rendimiento de las consultas. Algunos índices, como los índices de clave primaria y foránea, se crean automáticamente.
3. Comando ALTER #
El comando ALTER TABLE en SQL se utiliza para modificar la estructura de una tabla existente en una base de datos. Este comando permite realizar varias operaciones de cambio en la tabla, tales como agregar, eliminar o modificar columnas, así como modificar las restricciones y otros elementos de la tabla.
Sintaxis básica de ALTER TABLE #
1ALTER TABLE nombre_tabla 2[acción];
Donde:
nombre_tablaes el nombre de la tabla que deseas modificar.acciónes la operación que deseas realizar sobre la tabla.
Operaciones comunes con ALTER TABLE #
-
Agregar una columna (
ADD): Puedes agregar una nueva columna a una tabla existente utilizando la palabra claveADD.Sintaxis:
1ALTER TABLE nombre_tabla 2ADD nombre_columna tipo_dato;Ejemplo: Agregar una columna
telefonode tipoVARCHAR(15)a la tablaclientes:1ALTER TABLE clientes 2ADD telefono VARCHAR(15); -
Eliminar una columna (
DROP COLUMN): Puedes eliminar una columna de una tabla utilizandoDROP COLUMN.Sintaxis:
1ALTER TABLE nombre_tabla 2DROP COLUMN nombre_columna;Ejemplo: Eliminar la columna
telefonode la tablaclientes:1ALTER TABLE clientes 2DROP COLUMN telefono; -
Modificar una columna (
MODIFY COLUMNoCHANGE): Puedes cambiar el tipo de datos o las propiedades de una columna existente conMODIFY COLUMN(en algunos SGBDs, como MySQL) oCHANGE(en otros).Sintaxis:
Cargando actividad al acercarte…Ejemplo: Cambiar el tipo de la columna
edadde tipoINTaSMALLINTen la tablaclientes:Cargando actividad al acercarte… -
Renombrar una columna (
RENAME COLUMN): Algunos SGBDs permiten renombrar una columna con el comandoRENAME COLUMN.Sintaxis:
Cargando actividad al acercarte…Ejemplo: Renombrar la columna
telefonoanumero_telefonoen la tablaclientes:Cargando actividad al acercarte… -
Renombrar una tabla (
RENAME TO): Puedes renombrar la tabla completa utilizandoRENAME TO.Sintaxis:
Cargando actividad al acercarte…Ejemplo: Renombrar la tabla
clientesaclientes_nuevos:Cargando actividad al acercarte… -
Agregar una restricción (
ADD CONSTRAINT): Puedes agregar restricciones comoPRIMARY KEY,FOREIGN KEY,UNIQUE, etc., a una tabla existente.Sintaxis:
1ALTER TABLE nombre_tabla 2ADD CONSTRAINT nombre_restricción tipo_restricción (columna);Ejemplo: Agregar una clave primaria a la columna
idde la tablaclientes:1ALTER TABLE clientes 2ADD CONSTRAINT pk_id PRIMARY KEY (id); -
Eliminar una restricción (
DROP CONSTRAINT): Puedes eliminar restricciones de una tabla utilizandoDROP CONSTRAINT.Sintaxis:
Cargando actividad al acercarte…Ejemplo: Eliminar la restricción
pk_id(clave primaria) de la tablaclientes:Cargando actividad al acercarte…
Consideraciones #
- Dependencias: Al modificar una columna o restricción, debes considerar las dependencias que puedan existir, como claves foráneas que referencian otras tablas.
- SGBD y sintaxis: La sintaxis exacta puede variar según el sistema de gestión de bases de datos (SGBD) que estés utilizando. Por ejemplo, MySQL usa
MODIFY COLUMNmientras que en otros SGBDs como PostgreSQL, se usaSET DATA TYPE.
4. Comando DROP #
El comando DROP TABLE en SQL se utiliza para eliminar una tabla completa de la base de datos, incluyendo todos los datos almacenados en la tabla, la estructura de la tabla (es decir, las definiciones de columnas y sus propiedades), y cualquier índice o restricciones asociadas a esa tabla. Esta operación es irreversible, lo que significa que una vez que se elimina la tabla, no se puede recuperar, a menos que tengas un respaldo de los datos.
Sintaxis de DROP TABLE #
1DROP TABLE nombre_tabla;
nombre_tabla: Es el nombre de la tabla que deseas eliminar.
Ejemplo de uso #
Imagina que tienes una tabla llamada clientes y deseas eliminarla de la base de datos. El comando sería:
1DROP TABLE clientes;
Este comando eliminará:
- La tabla
clientes. - Todos los datos almacenados en la tabla.
- Cualquier índice, clave primaria, clave foránea u otras restricciones asociadas a esa tabla.
Consideraciones importantes #
-
Irreversibilidad: Al ejecutar
DROP TABLE, la tabla se elimina permanentemente de la base de datos. Si la tabla contiene datos importantes, asegúrate de realizar un respaldo antes de usar este comando. -
Dependencias: Si la tabla que estás eliminando tiene dependencias (por ejemplo, si existen claves foráneas en otras tablas que referencian a esta tabla), algunas bases de datos pueden generar un error. Es recomendable verificar que no haya dependencias antes de eliminar una tabla.
-
Espacio en disco: Aunque
DROP TABLEelimina los datos de la tabla, es posible que los archivos de datos de la base de datos no se liberen inmediatamente (dependiendo del sistema de gestión de bases de datos). -
No afecta otras tablas: El comando
DROP TABLEsolo afecta a la tabla específica que se menciona en el comando. Otras tablas o objetos en la base de datos no se verán afectados.
Variantes de DROP TABLE #
-
Eliminar múltiples tablas: Puedes eliminar varias tablas de la base de datos en una sola operación separando los nombres de las tablas con comas.
Sintaxis:
1DROP TABLE tabla1, tabla2, tabla3;Ejemplo:
1DROP TABLE clientes, empleados, productos;Esto eliminará las tres tablas de la base de datos.
-
IF EXISTS: Para evitar errores si la tabla no existe, puedes agregar la cláusulaIF EXISTS. Esto le dice a la base de datos que no genere un error si la tabla que intentas eliminar no se encuentra.Sintaxis:
1DROP TABLE IF EXISTS nombre_tabla;Ejemplo:
1DROP TABLE IF EXISTS clientes;En este caso, si la tabla
clientesno existe, no se generará un error.
5. Comando TRUNCATE #
El comando TRUNCATE en SQL se utiliza para eliminar todos los registros de una tabla de manera rápida y eficiente, pero manteniendo la estructura de la tabla intacta. A diferencia de DROP, que elimina completamente la tabla, TRUNCATE solo borra los datos dentro de la tabla, dejando la estructura (columnas, índices, restricciones, etc.) lista para almacenar nuevos datos.
Sintaxis básica de TRUNCATE #
(no es compatible con SQLite)
1TRUNCATE TABLE nombre_tabla;
nombre_tabla: Es el nombre de la tabla de la cual deseas eliminar todos los registros.
Ejemplo de uso #
Si tienes una tabla llamada clientes y deseas eliminar todos sus registros, pero conservar la tabla y su estructura, utilizarías el siguiente comando:
(no es compatible con SQLite)
1TRUNCATE TABLE clientes;
Este comando eliminaría todos los registros de la tabla clientes de forma rápida, pero no eliminaría la tabla ni afectaría sus definiciones (como las columnas o restricciones).
Características y ventajas de TRUNCATE #
-
Rendimiento más rápido: En comparación con el comando
DELETE,TRUNCATEes más rápido porque no registra cada eliminación de fila individualmente en el log de transacciones. Esto es especialmente útil cuando se necesita vaciar grandes tablas, ya queTRUNCATEes una operación de alto rendimiento. -
No afecta la estructura de la tabla: Mientras que
DROP TABLEelimina completamente la tabla,TRUNCATEsolo elimina los datos y deja la tabla en su lugar. La estructura de la tabla (columnas, índices, restricciones) sigue siendo la misma. -
No dispara triggers: En muchos sistemas de bases de datos, los triggers (disparadores) no se ejecutan cuando se utiliza
TRUNCATE, a diferencia deDELETE, que sí dispara los triggers. Esto puede ser ventajoso en algunos casos si no necesitas que los triggers se activen al eliminar los datos. -
Reinicio de los contadores de autoincremento: Dependiendo del SGBD, al utilizar
TRUNCATE, los contadores de columnas con la propiedadAUTO_INCREMENT(por ejemplo, las claves primarias autoincrementales) pueden restablecerse a su valor inicial (generalmente 1). Esto no ocurre conDELETE. -
No permite condiciones: A diferencia de
DELETE, que permite utilizar la cláusulaWHEREpara eliminar registros específicos,TRUNCATEelimina todos los registros de la tabla sin excepción. No puedes especificar una condición comoWHEREconTRUNCATE.
Diferencias entre TRUNCATE y DELETE #
-
DELETE:- Elimina filas una por una.
- Puede usar
WHEREpara eliminar registros específicos. - Registra cada eliminación en el log de transacciones.
- Dispara los triggers de eliminación (si están configurados).
- Es más lento que
TRUNCATEpara grandes volúmenes de datos.
-
TRUNCATE:- Elimina todas las filas de la tabla de una vez.
- No puede usar
WHERE. - No registra cada eliminación de fila individualmente en el log de transacciones.
- No dispara los triggers.
- Es más rápido y eficiente que
DELETEcuando se trata de eliminar todos los registros de una tabla.
Consideraciones y limitaciones #
-
No se puede deshacer:
TRUNCATEes irreversible. Si eliminas los datos de una tabla conTRUNCATE, no podrás recuperarlos a menos que hayas realizado un respaldo previamente. -
Restricciones y dependencias: Si la tabla tiene claves foráneas que la referencian (relaciones con otras tablas), es posible que no puedas truncar la tabla hasta que elimines o modifiques las dependencias.
-
Privilegios: Los usuarios deben tener privilegios suficientes para ejecutar
TRUNCATE, ya que es una operación que afecta a toda la tabla.
Ejemplo en contexto #
Supongamos que tienes una tabla llamada ventas con los registros de todas las ventas realizadas en tu sistema. Si por alguna razón deseas vaciar esta tabla pero seguir usando la misma estructura para las nuevas ventas, puedes utilizar TRUNCATE:
1TRUNCATE TABLE ventas;
Este comando eliminaría todas las ventas registradas en la tabla ventas sin borrar la tabla en sí, lo que te permitiría seguir agregando nuevos registros sin la necesidad de crear una nueva tabla.
Resumen del tema
Conceptos clave #
- DDL (Data Definition Language): sentencias para crear, modificar y destruir objetos estructurales de la base de datos.
CREATE DATABASE/CREATE TABLE: inicializa nuevas bases de datos y tablas definiendo columnas, tipos de datos y restricciones.ALTER TABLE: modifica la estructura de una tabla existente (ADD COLUMN,DROP COLUMN,MODIFY/ALTER COLUMN,ADD CONSTRAINT).DROP TABLE: elimina completamente la tabla, su estructura, datos e índices de forma irreversible (IF EXISTSpreviene errores).TRUNCATE TABLE: vacía rápidamente todos los registros de una tabla liberando espacio y reiniciando autoincrementales, conservando la estructura intacta.DELETEvs.TRUNCATEvs.DROP:DELETE: borra filas filtradas (DML), registra en log y activa triggers.TRUNCATE: borra todas las filas (DDL), más rápido, sinWHERE, no activa triggers de fila.DROP: borra filas, índices y la estructura completa de la tabla.
Qué debes recordar #
Usa CREATE y ALTER para definir y evolucionar esquemas, TRUNCATE para vaciar tablas rápidamente conservando la estructura y DROP solo cuando quieras destruir el objeto por completo.