Los scripts de SQL son una herramienta esencial para realizar cambios complejos en la base de datos en SQL Server. En este artículo, exploraremos qué son los scripts de SQL y cómo se pueden utilizar de manera efectiva.
Cambios Deseados
Antes de sumergirse en los scripts de SQL, es importante definir claramente los cambios deseados en la base de datos. Esto implica comprender el modelo de datos actual e identificar las áreas que necesitan mejoras. Por ejemplo, si tenemos un modelo de datos simple que consta de tablas para países y ciudades, es posible que deseemos expandirlo para incluir tablas para empleados, clientes, resultados de llamadas y llamadas.
¿Qué son los Scripts de SQL?
En programación, los scripts son una serie de comandos o instrucciones que se ejecutan en otro programa. Los scripts de SQL son un tipo específico de script que contiene comandos de SQL. Estos comandos pueden ser una combinación de comandos de Lenguaje de Definición de Datos (DDL) o comandos de Lenguaje de Manipulación de Datos (DML).
Los comandos DDL se utilizan para crear, alterar o eliminar objetos de la base de datos, como tablas, restricciones e índices. Por otro lado, los comandos DML se utilizan para manipular datos en la base de datos, como insertar, actualizar o eliminar registros.
Beneficios de Utilizar Scripts de SQL
Utilizar scripts de SQL tiene varios beneficios, especialmente al realizar cambios significativos en la base de datos:
- Consistencia: Al utilizar scripts, puede asegurarse de que los cambios se apliquen de manera consistente en diferentes entornos.
- Control de Versiones: Los scripts se pueden almacenar en sistemas de control de versiones, lo que le permite realizar un seguimiento de los cambios y revertirlos fácilmente si es necesario.
- Preservación de Datos: Al implementar una nueva versión de la base de datos, los scripts pueden ayudar a preservar los datos existentes al realizar los cambios necesarios sin perder ninguna información.
Copia de Seguridad y Restauración
Antes de realizar cambios importantes en la base de datos, siempre se recomienda crear una copia de seguridad. Esto garantiza que tenga una copia de la base de datos en caso de que algo salga mal durante la ejecución del script.
En SQL Server, puede crear fácilmente una copia de seguridad haciendo clic derecho en la base de datos, seleccionando la opción “Tareas” y eligiendo “Copia de seguridad”. Luego puede restaurar la copia de seguridad si es necesario.
Ejemplo de Script de SQL
Echemos un vistazo a un ejemplo de script de SQL que crea nuevas tablas y las rellena con datos:
-- tablas
CREATE TABLE llamada (
id int NOT NULL IDENTITY (1, 1),
id_empleado int NOT NULL,
id_cliente int NOT NULL,
hora_inicio datetime NOT NULL,
hora_fin datetime NULL,
id_resultado_llamada int NULL,
CONSTRAINT llamada_pk PRIMARY KEY (id)
);
CREATE TABLE resultado_llamada (
id int NOT NULL IDENTITY (1, 1),
texto_resultado char(128) NOT NULL,
CONSTRAINT resultado_llamada_pk PRIMARY KEY (id)
);
CREATE TABLE cliente (
id int NOT NULL IDENTITY (1, 1),
nombre_cliente varchar(255) NOT NULL,
id_ciudad int NOT NULL,
direccion_cliente varchar(255) NOT NULL,
CONSTRAINT cliente_pk PRIMARY KEY (id)
);
CREATE TABLE empleado (
id int NOT NULL IDENTITY (1, 1),
nombre varchar(255) NOT NULL,
apellido varchar(255) NOT NULL,
CONSTRAINT empleado_pk PRIMARY KEY (id)
);
-- claves foráneas
ALTER TABLE llamada ADD CONSTRAINT llamada_resultado_llamada FOREIGN KEY (id_resultado_llamada) REFERENCES resultado_llamada (id);
ALTER TABLE llamada ADD CONSTRAINT llamada_cliente FOREIGN KEY (id_cliente) REFERENCES cliente (id);
ALTER TABLE llamada ADD CONSTRAINT llamada_empleado FOREIGN KEY (id_empleado) REFERENCES empleado (id);
-- insertar valores
INSERT INTO resultado_llamada (texto_resultado) VALUES ('llamada iniciada');
INSERT INTO resultado_llamada (texto_resultado) VALUES ('finalizada - exitosamente');
INSERT INTO resultado_llamada (texto_resultado) VALUES ('finalizada - sin éxito');
INSERT INTO empleado (nombre, apellido) VALUES ('Thomas (Neo)', 'Anderson');
INSERT INTO empleado (nombre, apellido) VALUES ('Agente', 'Smith');
INSERT INTO cliente (nombre_cliente, id_ciudad, direccion_cliente) VALUES ('Tienda de Joyas', 4, 'Calle Larga 120');
INSERT INTO cliente (nombre_cliente, id_ciudad, direccion_cliente) VALUES ('Panadería', 1, 'Kurfürstendamm 25');
INSERT INTO cliente (nombre_cliente, id_ciudad, direccion_cliente) VALUES ('Café', 1, 'Tauentzienstraße 44');
INSERT INTO cliente (nombre_cliente, id_ciudad, direccion_cliente) VALUES ('Restaurante', 3, 'Ulica lipa 15');
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (1, 4, '2020/1/11 9:0:15', '2020/1/11 9:12:22', 2);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (1, 2, '2020/1/11 9:14:50', '2020/1/11 9:20:1', 2);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (2, 3, '2020/1/11 9:2:20', '2020/1/11 9:18:5', 3);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (1, 1, '2020/1/11 9:24:15', '2020/1/11 9:25:5', 3);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (1, 3, '2020/1/11 9:26:23', '2020/1/11 9:33:45', 2);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (1, 2, '2020/1/11 9:40:31', '2020/1/11 9:42:32', 2);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (2, 4, '2020/1/11 9:41:17', '2020/1/11 9:45:21', 2);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (1, 1, '2020/1/11 9:42:32', '2020/1/11 9:46:53', 3);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (2, 1, '2020/1/11 9:46:0', '2020/1/11 9:48:2', 2);
INSERT INTO llamada (id_empleado, id_cliente, hora_inicio, hora_fin, id_resultado_llamada) VALUES (2, 2, '2020/1/11 9:50:12', '2020/1/11 9:55:35', 2);
Este script crea las tablas necesarias, define las relaciones entre ellas utilizando claves foráneas e inserta datos de muestra en las tablas.
Conclusión
Los scripts de SQL son herramientas poderosas para realizar cambios complejos en la base de datos en SQL Server. Al utilizar scripts, puede garantizar la consistencia, preservar los datos y realizar un seguimiento y revertir fácilmente los cambios. Comprender cómo escribir y ejecutar scripts de SQL es esencial para cualquier desarrollador o administrador de SQL Server.