Una vez tenemos nuestra base de datos creada, llega el momento de definir su estructura interna. En el modelo relacional, esto significa crear tablas.
Pero además, el mundo real los requisitos cambian. Lo que hoy es un campo de texto de 50 caracteres, mañana necesita 200. Por eso, tan importante como saber crear tablas es saber modificarlas, sin perder los datos que contienen 😊.
En este artículo aprenderemos a estructurar nuestros datos y a evolucionarlos con T-SQL.
La sentencia CREATE TABLE
Para create una nueva tabla usaremos la instrucción CREATE TABLE. Para ello debemos especificar tres cosas:
- El nombre de la tabla
- Los nombres de sus columnas
- Los tipos de datos y propiedades de cada columna
Por ejemplo, supongamos que queremos almacenar la información de los empleados de nuestra empresa.
USE MiEmpresa; -- Importante: asegúrate de estar en la BBDD correcta
GO
CREATE TABLE Empleados (
EmpleadoID INT PRIMARY KEY,
Nombre NVARCHAR(50) NOT NULL,
Apellido NVARCHAR(50) NOT NULL,
FechaNacimiento DATE,
Email VARCHAR(100)
);
GO
En este ejemplo sencillo ya vemos varios conceptos clave:
- Tipos de datos:
INT,NVARCHAR,DATE. (Profundizaremos en ellos en el próximo artículo). - Nulabilidad (
NULL/NOT NULL): Definimos si el campo es obligatorio. Si ponemosNOT NULL, SQL Server no nos dejará guardar el registro si falta ese dato. - Restricción
PRIMARY KEY: Marcamos queEmpleadoIDes el identificador único.
Modificación de tablas ALTER TABLE
El diseño de software es un proceso vivo. Es muy probable que, después de crear la tabla Empleados, te des cuenta de que olvidaste guardar el número de teléfono o que el campo de Email se ha quedado corto.
Para esto usamos la instrucción ALTER TABLE.
Añadir nuevas columnas ADD
Podemos agregar columnas a una tabla que ya tiene datos.
ALTER TABLE Empleados
ADD Telefono VARCHAR(20) NULL;
Ojo con los NOT NULL: Si añades una columna NOT NULL a una tabla que ya tiene filas, SQL Server te dará error (porque las filas antiguas no tendrían valor para esa nueva columna). Solución: Añádela como NULL o especifica un valor por defecto (DEFAULT).
Modificar columnas existentes ALTER COLUMN
Imagina que Nombre NVARCHAR(50) se queda pequeño y necesitamos 100 caracteres.
ALTER TABLE Empleados
ALTER COLUMN Nombre NVARCHAR(100) NOT NULL;
También podemos usar esto para cambiar el tipo de dato (por ejemplo, de INT a BIGINT), pero cuidado: si los datos existentes no se pueden convertir al nuevo tipo, la operación fallará.
Eliminar columnas DROP COLUMN
Si una columna ya no es necesaria, podemos borrarla físicamente.
ALTER TABLE Empleados
DROP COLUMN FechaNacimiento;
Esta operación borra permanentemente los datos de esa columna. No hay “Ctrl+Z” (a menos que uses transacciones).
Eliminar tablas DROP TABLE
Si queremos eliminar una tabla completa (su estructura y todos sus datos), usamos DROP TABLE.
DROP TABLE Empleados;
Al igual que con las bases de datos, es buena práctica comprobar si existe para evitar errores en nuestros scripts de despliegue:
DROP TABLE IF EXISTS Empleados;
¿DROP vs TRUNCATE?
A veces solo queremos borrar los datos pero dejar la tabla vacía lista para usar de nuevo. Para eso no uses DROP.
Usa TRUNCATE TABLE Empleados. Es mucho más rápido y mantiene la estructura.
Buenas prácticas de nombrado
Mantén una convención de nombres consistente.
- Usa nombres en singular o plural, pero no mezcles (
ClientevsClientes). Yo prefiero singular para tablas y columnas. - Usa PascalCase (
FechaNacimiento) en lugar de guiones bajos (fecha_nacimiento), es más estándar en el ecosistema Microsoft. - Evita espacios y caracteres extraños para no tener que usar corchetes
[]constantemente.
