ResultadoDeAprendizaje

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

Actividad Tema Libre

Nombre:Xavier Alejandro Moreno


Garcia
Matricula:24042
Grupo:2°A

-- Creación de la base de datos

CREATE DATABASE CONCESIONARIA_CARROS;

-- Usamos la base de datos creada

USE CONCESIONARIA_CARROS;
-- 1. Creación de tablas

CREATE TABLE MARCA (IdMarca INT IDENTITY PRIMARY KEY,Nombre


VARCHAR(50) NOT NULL, PaisOrigen VARCHAR(50) NOT NULL
DEFAULT 'Desconocido');

CREATE TABLE MODELO (IdModelo INT IDENTITY PRIMARY KEY,


Nombre VARCHAR(50) NOT NULL, Año INT CHECK (Año >= 1900 AND
Año <= YEAR(GETDATE())), IdMarca INT FOREIGN KEY REFERENCES
MARCA(IdMarca));

CREATE TABLE VEHICULO ( IdVehiculo INT IDENTITY PRIMARY KEY,


IdModelo INT FOREIGN KEY REFERENCES MODELO(IdModelo), Color
VARCHAR(30), Precio MONEY CHECK (Precio > 0), Stock INT CHECK
(Stock >= 0));

CREATE TABLE CLIENTE (IdCliente INT IDENTITY PRIMARY KEY,


Nombre VARCHAR(50), Apellido VARCHAR(50), Telefono
VARCHAR(15));
CREATE TABLE VENTA ( IdVenta INT IDENTITY PRIMARY KEY,
IdVehiculo INT FOREIGN KEY REFERENCES VEHICULO(IdVehiculo),
IdCliente INT FOREIGN KEY REFERENCES CLIENTE(IdCliente),
FechaVenta DATE DEFAULT GETDATE(), Cantidad INT CHECK
(Cantidad > 0));

-- 2. Altas: Insertar registros en las tablas

INSERT INTO MARCA (Nombre, PaisOrigen) VALUES('Toyota', 'Japón'),


('Ford', 'Estados Unidos'), ('BMW', 'Alemania');

INSERT INTO MODELO (Nombre, Año, IdMarca) VALUES('Corolla',


2022, 1), ('Camry', 2023, 1), ('Mustang', 2023, 2), ('Serie 3', 2022,
3);

INSERT INTO VEHICULO (IdModelo, Color, Precio, Stock) VALUES (1,


'Rojo', 25000, 10), (2, 'Azul', 30000, 5), (3, 'Negro', 55000, 2), (4,
'Blanco', 45000, 3);

INSERT INTO CLIENTE (Nombre, Apellido, Telefono) VALUES('Juan',


'Pérez', '1234567890'), ('Ana', 'García', '0987654321'), ('Carlos',
'López', '1112223333');
INSERT INTO VENTA (IdVehiculo, IdCliente, Cantidad) VALUES (1, 1, 1),
(3, 2, 1), (4, 3, 2);

-- 3. Bajas: Eliminar un registro de ejemplo

DELETE FROM CLIENTE WHERE IdCliente = 3;

-- 4. Cambios: Actualizar datos

UPDATE VEHICULOSET Precio = Precio * 1.1 WHERE IdModelo = 1;

SELECT C.Nombre AS Cliente, M.Nombre AS Modelo, V.FechaVenta,


V.CantidadFROM VENTA VINNER JOIN CLIENTE C ON V.IdCliente =
C.IdClienteINNER JOIN VEHICULO VH ON V.IdVehiculo =
VH.IdVehiculoINNER JOIN MODELO M ON VH.IdModelo = M.IdModelo;

- 6. Consultas anidadasSELECT Nombre, PrecioFROM VEHICULO

WHERE Precio = (SELECT MAX(Precio) FROM VEHICULO);


- 7. Consultas con funciones agregadas

SELECT AVG(Precio) AS PrecioPromedio, SUM(Stock) AS TotalStock,


COUNT(IdVehiculo) AS TotalVehiculos

FROM VEHICULO;

-- 8. Consultas con WHERE y HAVING, utilizando ORDER BY y GROUP


BY

SELECT M.Nombre AS Marca, COUNT(VH.IdVehiculo) AS


TotalVehiculos, SUM(VH.Stock) AS StockTotalFROM MARCA MINNER
JOIN MODELO MO ON M.IdMarca= MO.IdMarcaINNER JOIN VEHICULO
VH ON MO.IdModelo = VH.IdModeloGROUP BY M.NombreHAVING
SUM(VH.Stock) > 5ORDER BY StockTotal DESC;

-- 9. Procedimiento almacenado

CREATE PROCEDURE SP_VEHICULOS_DISPONIBLESAS

BEGIN SELECT M.Nombre AS Marca, MO.Nombre AS Modelo,


VH.Color, VH.Stock FROM VEHICULO VH INNER JOIN MODELO MO ON
VH.IdModelo = MO.IdModel INNER JOIN MARCA M ON MO.IdMarca =
M.IdMarc WHERE VH.Stock > 0

ORDER BY VH.Stock DESC;END;-- Ejecutar procedimiento


almacenadoEXEC SP_VEHICULOS_DISPONIBLES;

- 10. Vista: Crear una vista de ventas detalladas


CREATE VIEW VW_DETALLE_VENTAS ASSELECT V.IdVenta, C.Nombre
AS Cliente, C.Apellido, M.Nombre AS Marca, MO.Nombre AS Modelo,
VH.Color, V.Cantidad, V.FechaVentaFROM VENTA VINNER JOIN
CLIENTE C ON V.IdCliente = C.IdClienteINNER JOIN VEHICULO VH ON
V.IdVehiculo = VH.IdVehiculoINNER JOIN MODELO MO ON VH.IdModelo
= MO.IdModeloINNER JOIN MARCA M ON MO.IdMarca = M.IdMarca;

-- Consultar la vista

SELECT * FROM VW_DETALLE_VENTAS;

También podría gustarte