Está en la página 1de 12

Universidad Nacional de Ingeniería

Centro de Extensión y Proyección Social


EXAMEN FINAL
Curso: SQL I - Implementación
Grupo: 63945 Fecha: 27/08/2023 Duración:
Profesor: Julio Enrique Flores Manco

Nombre del alumno: Vásquez Antezana, Eduardo Emerson


N O T A

Siguiendo el Modelo Físico que se presenta. Se pide realizar La Implementación de la


Base de datos respectiva en SQL Server.

Debe seguir estrictamente el orden de trabajo que indica a continuación:


-- Decimal(5,2)
1) Crear la base de datos en una carpeta C:\ExamenFinal con dos archivos.
Solución:
** Se crea en la Carpeta ExamenFinalSQLI ya que hay una creada por la tarea 02 BD Veterinaria
Código SQL:
USE MASTER
GO
CREATE DATABASE BDPROYECTO
ON PRIMARY
(NAME = BDPROYECTO_DAT,
FILENAME = 'C:\ExamenFinalSQLI\VETERINARIASAC_Dat.mdf',
SIZE = 8MB,
MAXSIZE = 200,
FILEGROWTH = 1)
LOG ON
(NAME = BDPROYECTO_LOG,
FILENAME = 'C:\ExamenFinalSQLI\VETERINARIASAC_Dat.ldf',
SIZE = 1MB,
MAXSIZE = 50,
FILEGROWTH = 1MB)
GO

Página 1
Resultados (Imágenes capturadas):

2) Crear las Tablas.

Solución:
Código SQL:
USE BDPROYECTO
GO

CREATE TABLE EMPLEADO


(IDEMPLEADO INT NOT NULL,
APEEMP VARCHAR(30) NOT NULL,
NOMEMP VARCHAR(30) NOT NULL,
DNI_EMP CHAR(8) NOT NULL,
DIRECCION VARCHAR(40) NOT NULL)
GO

CREATE TABLE FAMILIAR


(IDFAM INT NOT NULL,
APEFAM VARCHAR(30) NOT NULL,
NOMFAM VARCHAR(30) NOT NULL,
PARENTESCO VARCHAR(30) NOT NULL,
FECHANAC DATETIME NOT NULL,
IDEMPLEADO INT NOT NULL)
GO

CREATE TABLE EMP_DIRIGE_DEPA


(IDJEFE INT NOT NULL,
IDDEPARTAMENTO INT NOT NULL,
FECHAINICIO DATETIME NOT NULL)
GO

CREATE TABLE EMPLEADO_DEPA


(IDEMPLEADO INT NOT NULL,
IDDEPARTAMENTO INT NOT NULL,
FECHAINGRESO DATETIME NOT NULL)
GO

CREATE TABLE DEPARTAMENTO


(IDDEPARTAMENTO INT NOT NULL,
NOMBREDEPA VARCHAR(20) NOT NULL,
DESCRIPCION VARCHAR(20) NOT NULL)
GO

CREATE TABLE PROYECTO


(IDPROYECTO INT NOT NULL,
NOMBREPROY VARCHAR(20) NOT NULL,
FECHAINICIO DATETIME NOT NULL,
IDDEPARTAMENTO INT NOT NULL,
IDLUGAR INT NOT NULL)
GO

CREATE TABLE DEPARTAM_LUGAR


(IDDEPARTAMENTO INT NOT NULL,
IDLUGAR INT NOT NULL,
NROOFICINA VARCHAR(20) NOT NULL,

Página 2
TELEFONO VARCHAR(15) NOT NULL,
AFORO VARCHAR(20) NOT NULL)
GO

CREATE TABLE LUGAR


(IDLUGAR INT NOT NULL,
DIRECCION VARCHAR(40) NOT NULL,
DISTRITO VARCHAR(40) NOT NULL,
AREA DECIMAL(5,2) NOT NULL)
GO

Resultados (Imágenes capturadas):

3) Crear las claves primarias en cada tabla con el nombre PR_NombreDeTabla

Solución:
Código SQL:
ALTER TABLE EMPLEADO
ADD CONSTRAINT PR_EMPLEADO
PRIMARY KEY (IDEMPLEADO)
GO
EXEC sp_helpconstraint EMPLEADO
GO

ALTER TABLE FAMILIAR


ADD CONSTRAINT PR_FAMILIAR
PRIMARY KEY (IDFAM)
GO
EXEC sp_helpconstraint FAMILIAR
GO

ALTER TABLE EMP_DIRIGE_DEPA


ADD CONSTRAINT PR_EMP_DIRIGE_DEPA
PRIMARY KEY (IDJEFE, IDDEPARTAMENTO)
GO
EXEC sp_helpconstraint EMP_DIRIGE_DEPA
GO

ALTER TABLE EMPLEADO_DEPA


ADD CONSTRAINT PR_EMPLEADO_DEPA
PRIMARY KEY (IDEMPLEADO, IDDEPARTAMENTO)
GO
EXEC sp_helpconstraint EMPLEADO_DEPA
GO

ALTER TABLE DEPARTAMENTO


ADD CONSTRAINT PR_DEPARTAMENTO
PRIMARY KEY (IDDEPARTAMENTO)

Página 3
GO
EXEC sp_helpconstraint DEPARTAMENTO
GO

ALTER TABLE PROYECTO


ADD CONSTRAINT PR_PROYECTO
PRIMARY KEY (IDPROYECTO)
GO
EXEC sp_helpconstraint PROYECTO
GO

ALTER TABLE LUGAR


ADD CONSTRAINT PR_LUGAR
PRIMARY KEY (IDLUGAR)
GO
EXEC sp_helpconstraint LUGAR
GO

ALTER TABLE DEPARTAM_LUGAR


ADD CONSTRAINT PR_DEPARTAM_LUGAR
PRIMARY KEY (IDDEPARTAMENTO, IDLUGAR)
GO
EXEC sp_helpconstraint DEPARTAM_LUGAR
GO

Resultados (Imágenes capturadas):


EMPLEADO

FAMILIA

EMP_DIRIGE_DEPA

EMPLEADO_DEPA

DEPARTAMENTO

Página 4
PROYECTO

LUGAR

DEPARTAM_LUGAR

4) Relacionar las Tablas estableciendo los constrains necesarios.

Solución:
Código SQL:
ALTER TABLE EMP_DIRIGE_DEPA
ADD CONSTRAINT FK_JEFE
FOREIGN KEY (IDJEFE)
REFERENCES EMPLEADO
GO
EXEC sp_helpconstraint EMP_DIRIGE_DEPA
GO
EXEC sp_helpconstraint EMP_DIRIGE_DEPA
GO

ALTER TABLE EMP_DIRIGE_DEPA


ADD CONSTRAINT FK_DEPARTAMENTO
FOREIGN KEY (IDDEPARTAMENTO)
REFERENCES DEPARTAMENTO
GO
EXEC sp_helpconstraint EMP_DIRIGE_DEPA
GO

ALTER TABLE FAMILIAR


ADD CONSTRAINT FK_EMPLEADO
FOREIGN KEY (IDEMPLEADO)
REFERENCES EMPLEADO
GO
EXEC sp_helpconstraint FAMILIAR
GO
ALTER TABLE EMPLEADO_DEPA
ADD CONSTRAINT FK_IDEMPLEADO
FOREIGN KEY (IDEMPLEADO)

Página 5
REFERENCES EMPLEADO
GO
EXEC sp_helpconstraint EMPLEADO_DEPA
GO

ALTER TABLE EMPLEADO_DEPA


ADD CONSTRAINT FK_IDDEPARTAMENTO
FOREIGN KEY (IDDEPARTAMENTO)
REFERENCES DEPARTAMENTO
GO
EXEC sp_helpconstraint EMPLEADO_DEPA
GO

ALTER TABLE PROYECTO


ADD CONSTRAINT FK_DEPAR_PROY
FOREIGN KEY (IDDEPARTAMENTO)
REFERENCES DEPARTAMENTO
GO
EXEC sp_helpconstraint PROYECTO
GO

ALTER TABLE PROYECTO


ADD CONSTRAINT FK_LUGAR_PROY
FOREIGN KEY (IDLUGAR)
REFERENCES LUGAR
GO
EXEC sp_helpconstraint PROYECTO
GO

ALTER TABLE DEPARTAM_LUGAR


ADD CONSTRAINT FK_DEPA_LUGAR
FOREIGN KEY (IDDEPARTAMENTO)
REFERENCES DEPARTAMENTO
GO
EXEC sp_helpconstraint DEPARTAM_LUGAR
GO

ALTER TABLE DEPARTAM_LUGAR


ADD CONSTRAINT FK_LUGAR_DEPA
FOREIGN KEY (IDLUGAR)
REFERENCES LUGAR
GO
EXEC sp_helpconstraint DEPARTAM_LUGAR
GO

Resultados (Imágenes capturadas):

5) Establecer en la Tabla Familiar, en forma predeterminada si no se ingresara


Parentesco, debe ser ‘HIJO’.

Página 6
Solución:
Código SQL:
SELECT*FROM FAMILIAR
GO

ALTER TABLE FAMILIAR


DROP COLUMN PARENTESCO
GO

SELECT*FROM FAMILIAR
GO
-- AGREGAMOS LA COLUMNA PARENTESCO CON EL REQUERIMIENTO
ALTER TABLE FAMILIAR
ADD PARECTESCO VARCHAR(30) DEFAULT 'HIJO'
GO

EXEC sp_helpconstraint FAMILIAR


GO

Resultados (Imágenes capturadas):

6) Agregar un campo adicional a la tabla EMPLEADO; Sueldo

Solución:
Código SQL:
SELECT*FROM EMPLEADO
GO

ALTER TABLE EMPLEADO


ADD SUELDO MONEY NOT NULL
GO

Resultados (Imágenes capturadas):

7) El Sueldo de un empleado no debe ser menor a 1000 soles

Página 7
Solución:
Código SQL:
SELECT*FROM EMPLEADO
GO
-- ELIMINAMOS LA COLUMNA SUELDO
ALTER TABLE EMPLEADO
DROP COLUMN SUELDO
GO

-- ESTABLECEMOS EL LA REGLA >= 1000 SOLES


ALTER TABLE EMPLEADO
ADD SUELDO MONEY CHECK (SUELDO >= 1000)
GO

Resultados (Imágenes capturadas):

8) Establecer que el DNI de un empleado no se puede repetir.

Solución:
Código SQL:
SELECT*FROM EMPLEADO
GO

ALTER TABLE EMPLEADO


ADD CONSTRAINT U_DNI_EMP
UNIQUE (DNI_EMP)
GO
Resultados (Imágenes capturadas):

9) Ingresar tres registros a la Tabla EMPLEADO.

Solución:
Código SQL:
INSERT INTO EMPLEADO VALUES (123,'VASQUEZ','EDUARDO',43972265,'ATE VITARTE',5500)
INSERT INTO EMPLEADO VALUES (456,'ESPINOZA','MARVIN',44856972,'SALAMANCA',5000)
INSERT INTO EMPLEADO VALUES (789,'ALVA','HELY',43587614,'LURIGANCHO',3200)
INSERT INTO EMPLEADO VALUES (234,'PEÑA','GIAN CARLO',40512986,'GAMBETA',4300)
INSERT INTO EMPLEADO VALUES (567,'TIPIANI','MAYRA',54287963,'LURIGANCHO',5000)
INSERT INTO EMPLEADO VALUES (890,'CASTRO','PATRICIA',55684265,'SAN JUAN DE
MIRAFLORES',4700)

Página 8
GO

Resultados (Imágenes capturadas):

10) Cambiar la dirección del segundo registro.

Solución:
Código SQL:
UPDATE EMPLEADO
SET DIRECCION = 'SAN BORJA'
WHERE IDEMPLEADO = 234
GO
SELECT*FROM EMPLEADO
GO

Resultados (Imágenes capturadas):

11) Eliminar el último registro de la Tabla EMPLEADO.

Solución:
Código SQL:
SELECT*FROM EMPLEADO
GO

DELETE EMPLEADO
WHERE IDEMPLEADO = 890
GO

Resultados (Imágenes capturadas):

Página 9
12) En MarketPeru, presentar el monto total de ventas por Local y por Categoría

Solución:
Código SQL:
VENTAS POR CATEGORIA
USE MARKETPERU
GO

SELECT*
FROM PRODUCTO P
INNER JOIN GUIA_DETALLE GD ON P.IdProducto = GD.IdProducto
INNER JOIN CATEGORIA C ON P.IdCategoria = C.IdCategoria
INNER JOIN GUIA G ON GD.IdGuia = G.IdGuia
INNER JOIN LOCAL L ON L.IdLocal = G.IdLocal
GO

SELECT
P.IdCategoria AS 'CATEGORIA',
SUM(GD.PRECIOVENTA*GD.CANTIDAD) AS 'TOTAL VENTAS'
FROM PRODUCTO P
INNER JOIN GUIA_DETALLE GD ON P.IdProducto = GD.IdProducto
INNER JOIN CATEGORIA C ON P.IdCategoria = C.IdCategoria
INNER JOIN GUIA G ON GD.IdGuia = G.IdGuia
INNER JOIN LOCAL L ON L.IdLocal = G.IdLocal
GROUP BY P.IdCategoria
GO

VENTAS POR LOCAL

SELECT
L.IDLOCAL AS 'LOCAL',
SUM(GD.PRECIOVENTA*GD.CANTIDAD) AS 'TOTAL VENTAS'
FROM PRODUCTO P
INNER JOIN GUIA_DETALLE GD ON P.IdProducto = GD.IdProducto
INNER JOIN CATEGORIA C ON P.IdCategoria = C.IdCategoria
INNER JOIN GUIA G ON GD.IdGuia = G.IdGuia
INNER JOIN LOCAL L ON L.IdLocal = G.IdLocal
GROUP BY L.IDLOCAL
GO

Resultados (Imágenes capturadas):

VENTAS POR LOCAL

Página 10
VENTAS POR CATEGORIA

13) En Northwind, presentar los detalles de los pedidos realizados a los productos
con precio entre 25 y 30 y que además tuvieron un descuento por venta mayor o
igual al 15 % y menor o igual al 20%. Mostrar el Número del pedido, código del
producto, nombre del producto, precio de venta, porcentaje de descuento

Solución:
Código SQL:
SELECT
O.ORDERID AS [NUMERO DE PEDIDO],
P.PRODUCTID AS [CODIGO DE PRODUCTO],
P.PRODUCTNAME AS [NOMBRE DEL PRODUCTO],
O_D.UNITPRICE AS [PRECIO DE VENTA],
O_D.DISCOUNT AS [PORCENTAJE DE DESCUENTO]
FROM Orders O
INNER JOIN [Order Details] O_D ON O.OrderID = O_D.OrderID
INNER JOIN Products P ON O_D.ProductID = P.ProductID
WHERE(O_D.UNITPRICE BETWEEN 25 AND 30) AND (O_D.Discount>=0.15 AND O_D.Discount
<=0.20)
GO

Página 11
Resultados (Imágenes capturadas):

Página 12

También podría gustarte