Guía 6 BD
Guía 6 BD
Guía 6 BD
FACULTAD DE INGENIERÍA
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO Nº 6
Nombre de la practica: Uso de consultas de Inserción, actualización y eliminación de datos
CICLO 01-2020 Lugar de ejecución: Laboratorio de Informática
Tiempo estimado: 2 horas y 30 minutos
Materia: Base de datos
I. Objetivos
Consultas de acción
Las consultas de acción son aquellas consultas que no devuelven ningún registro, sino que se encargan de
acciones como:
• Agregar registros
• Actualizar registros
• Eliminar registros
Para comprender este tipo de consultas vamos a utilizar como ejemplo el siguiente diagrama de base de
datos:
Tabla: Categoria
1
CREATE TABLE Producto
(CodigoProducto int NOT NULL,
NombreProducto varchar(50),
PrecioUnitario decimal(18,2),
CodigoCategoria int
CONSTRAINT pk_producto PRIMARY KEY (CodigoProducto)
CONSTRAINT fk_categoria FOREIGN KEY (CodigoCategoria)
REFERENCES Categoria(CodigoCategoria)
)
Sentencia INSERT
INSERT. Permite agregar, adicionar o insertar uno o más registros a una (y solo una) tabla en una base de
datos relacional.
Ejemplo 1:
Insertando sin colocar los nombres de los campos esto indica que se debe agregar datos a todas las columnas
NOT NULL y se debe tomar en cuenta el orden de los campos de la tabla
Si se van a proporcionar valores para todos los campos de una tabla pueden omitirse los nombres de dichos
campos en la instrucción.
Ejemplo 2:
Colocando los nombres de los campos, no importa el orden de como estén los campos en la tabla
Ejemplo 3:
Ejemplo 4:
2
En el siguiente ejemplo se agrega datos a la tabla Producto en donde se respeta la relación entre las tablas,
quiere decir que no se puede agregar un código de categoría si este no ha sido ingresado previamente en la
tabla donde se encuentre la clave primaria (en este caso en la tabla Categoria)
SELECT - INTO se utiliza para crear una tabla a partir de los valores de otra tabla existente en la base de datos.
Ejemplo:
Se desea crear una tabla con los datos de la tabla producto que pertenezcan a la categoría bebidas
Resultado:
Después de ejecutar la sentencia SELECT INTO y al hacer un SELECT a la tabla Producto CategoriaBebidas, se
obtienen los siguientes resultados
Resultado:
3
Sentencia INSERT INTO – SELECT
La consulta SELECT de la instrucción INSERT se puede utilizar para agregar valores a una tabla de la base de
datos.
Ejemplo:
Crear la tabla Producto CategoriaVegetales, con las mismas propiedades de la tabla Producto
En el siguiente ejemplo, la instrucción INSERT agregar en la tabla Producto CategoriaVegetales, los datos de
la tabla Producto donde el valor del campo CodigoCategoria sea igual a 4
Al hacer un SELECT a la tabla esta debe tener los datos de los productos que pertenecen a la categoría con
código igual a 1
Nota: a diferencia con la sentencia SELECT - INTO, es que aquí debe de crearse la tabla previamente
Sentencia UPDATE
4
UPDATE. Permite la actualización o modificación de uno o varios registros de una única tabla.
Se debe utilizar en conjunto con la cláusula SET con la cual se indicará(n) el(los) campo(s) a actualizar con el
valor indicado.
Una segunda cláusula WHERE, opcional, permite indicar qué registros deben ser actualizados.
Si se omite la cláusula WHERE la ejecución de la consulta modificará todos los registros de la tabla.
Con este ejemplo se actualiza el dato almacenado en el campo PrecioUnitario de cada registro de la tabla
Producto CategoriaBebidas
Una condición:
Actualiza el precio del producto donde el Codigo del producto sea igual 1
Varias condiciones:
5
Actualiza el precio del producto donde el Codigo del producto sea igual 1 y el codigo de la categoria sea igual
1
Sentencia DELETE
La sentencia DELETE no borra la estructura física de la tabla únicamente elimina los datos.
Ejemplo 1:
Ejemplo 2:
6
Eliminar los registros de la tabla Producto donde el código de la categoría sea igual a 4
Debido a que el sistema de gestión de base de datos hace cumplir las restricciones de referencia, se debe
garantizar la integridad de los datos, si las filas de la tabla de la clave principal se van a eliminar o van a ser
actualizadas, el gestor verifica si todavía existen filas dependientes en tablas de claves foráneas, esas
referencias tienen que ser consideradas.
ON DELETE CASCADE
Específica que si se intenta eliminar una fila con una clave primaria a la que hacen referencia claves foráneas
de filas existentes en otras tablas, todas las filas que contienen dichas claves foráneas también se eliminan.
ON UPDATE CASCADE
Específica que si se intenta actualizar un valor de clave primaria de una fila a cuyo valor de clave hacen
referencia claves foráneas de filas existentes en otras tablas, también se actualizan todos los valores que
conforman la clave foránea al nuevo valor especificado para la clave primaria.
7
Ejemplo 1:
Hacer un SELECT a la tabla Categoria para verificar que registro se quiere eliminar
Dicho error indica que existe una referencia externa con ese dato que queremos eliminar, para verificar
hacemos un SELECT a la tabla Producto
Y exactamente tenemos un registro en la tabla Producto que hace referencia al dato con clave principal que
queremos eliminar
Para no tener ese problema se debe agregar en la restricción de la clave foránea las sentencias ON DELETE
CASCADE y ON UPDATE CASCADE
8
Agregando la restricción nuevamente pero ahora se adiciona al final de la restricción las sentencias ON
DELETE CASCADE y ON UPDATE CASCADE
Ejemplo 2:
También se puede agregar las sentencias ON DELETE CASCADE y ON UPDATE CASCADE a nivel de tabla, o sea
cuando esta se está creando.
9
REFERENCES Categoria(CodigoCategoria)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Recuerde que las sentencias ON DELETE CASCADE y ON UPDATE CASCADE se deben agregar en la restricción
de la clave foránea
III. Requerimientos
IV. Procedimiento
Para conectarse con el servidor de base de datos elija los siguientes parámetros de autenticación:
• Tipo de servidor: Database Engine
• Nombre del servidor: Colocar el nombre del servidor local, por ejemplo PCNumMaquina-SALA2
Nota: NumMaquina es el número de la maquina local
• Autenticación: SQL Server Authentication
• Login: sa
• Password: 123456
10
Tabla Alumno:
Nombre del campo Tipo de dato Tamaño Permite valores nulos Tipo de restricción
Carnet Char 8 No Llave primaria
NombreCompleto Varchar 50 Si
Tabla Materia:
Tabla Inscripcion:
11
Crear la tabla Materia
La llave primaria está compuesta por medio de tres campos, los cuales individualmente son
identificados como claves foráneas
Inscripcion y Alumno:
Inscripcion y Materia:
12
En la tabla Inscripcion se está creando las relaciones entre tablas (creando claves foráneas) por lo
tanto si se intenta eliminar un registro de la tabla Alumno cuyo valor de clave primaria existe
referenciada en la tabla Inscripcion, la acción no se ejecuta y aparece un mensaje de error. Esto
sucede porque, por defecto, para eliminaciones, la opción de la restricción FOREIGN KEY es "NO
ACTION" (ninguna acción).
El mismo error se obtendría si se intenta actualizar un valor del campo Carnet de la tabla Alumno si
esta referenciada por una FOREIGN KEY en este caso sería el campo Carnet de la tabla Inscripcion.
La restricción FOREIGN KEY de la tabla Inscripcion tiene las cláusulas ON DELETE CASCADE y ON
UPDATE CASCADE las cuales estas cláusulas son opcionales.
Estas cláusulas especifican cómo debe actuar SQL Server frente a eliminaciones y modificaciones de
las tablas referenciadas (tablas con la clave primaria) en la restricción del ejemplo la acción la
determina la opción CASCADE, la cual indica que si eliminamos o actualizamos un valor del campo
Carnet de la tabla Alumno los registros coincidentes en la tabla foránea en este caso los datos del
campo Carnet de la tabla Inscripcion, también se eliminan o se modifican a esto se le conoce como
integridad referencial en cascada
13
2. Realice un SELECT a la tabla y observara que esta ya tiene registros
1. El alumno que tiene el carnet GH121214 se debe cambiar el nombre de Gerardo Hierro a Gerardo
Hernández, digitar la siguiente consulta:
14
2. Realice un SELECT a la tabla para verificar, para verificar la actualización del campo en la tabla
15
Como se observa en los resultados se realizó la actualización de los datos en el campo carnet de la tabla
Inscripcion al mismo tiempo que se ejecutó la consulta UPDATE en la tabla Alumno
Se quiere eliminar el registro del alumno donde el carnet GH111214 almacenado en la tabla Alumno
2. Verifique los datos de las tablas Alumno e Inscripcion por medio de una consulta SELECT
3. Y observará que los datos del alumno con carnet GH111214 se han eliminado tanto de la tabla
Alumno y de la tabla Inscripcion
V. Ejercicio complementario
Carnet NombreCompleto
MC129854 Mauricio Campos
IP110943 Ignacio Pérez
MU127895 Mikel Urrutia
OH132390 Oscar Hernández
ML139032 Mayra López
16
CD121515 AL01 C1-14
CD121515 GE01 C1-14
CD121515 HM02 C1-15
GM119056 IP01 C2-14
GM119056 RD02 C2-14
HL130334 BD01 C1-15
VN121415 BD01 C1-15
VN121415 RD02 C1-15
MC129854 AL01 C1-14
MC129854 GE01 C1-14
IP110943 GE01 C1-15
IP110943 HM02 C1-15
c. Con la instrucción SELECT INTO, crear una tabla con el nombre MateriaUV que tenga los datos de la
materia donde las unidades valorativas sean mayores o iguales a 4
d. Con la instrucción INSERT INTO – SELECT, crear una tabla con el nombre Alumno2012 en donde se
almacenen aquellos alumnos que tengan el carnet del año 2012
17
VI. Análisis de resultados
Transformar del Modelo E-R a un modelo de Base de Datos Relacional y crear la base de datos en SQL Server 2012:
18
• Crear la base de datos en SQL Server
• Crear las tablas
o Crear las restricciones: UNIQUE, CHECK Y DEFAULT
o Crear las relaciones entre las tablas e implementar las sentencias ON DELETE CASCADE y ON
UPDATE CASCADE
Para las consultas de actualización y eliminación se evaluara la utilización de diversas tablas y campos.
19