0% encontró este documento útil (0 votos)
9 vistas6 páginas

Lab_hoy

Cargado por

salomon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas6 páginas

Lab_hoy

Cargado por

salomon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

--Creacion

CREATE DATABASE SistemaFacturacion;

USE SistemaFacturacion;

CREATE TABLE Clientes (

ID INT PRIMARY KEY,

Nombre VARCHAR(100) NOT NULL,

Apellidos VARCHAR(100) NOT NULL,

Telefono VARCHAR(20)

);

CREATE TABLE Productos (

IDProd INT PRIMARY KEY,

Nombre VARCHAR(100) NOT NULL,

Precio DECIMAL(10, 2) NOT NULL

);

CREATE TABLE Facturas (

IDFact INT PRIMARY KEY,

Fecha DATE NOT NULL,

Tipo VARCHAR(50),

ClienteID INT,

FOREIGN KEY (ClienteID) REFERENCES Clientes(ID)

);

CREATE TABLE DetalleFactura (


FacturaID INT,

ProductoID INT,

Cantidad INT NOT NULL,

Precio DECIMAL(10, 2) NOT NULL,

PRIMARY KEY (FacturaID, ProductoID),

FOREIGN KEY (FacturaID) REFERENCES Facturas(IDFact),

FOREIGN KEY (ProductoID) REFERENCES Productos(IDProd)

);

--Insertar datos

INSERT INTO Clientes (ID, Nombre, Apellidos, Telefono)

VALUES

(1, 'Juan', 'García Pérez', '555-123-4567'),

(2, 'María', 'López Sánchez', '555-234-5678'),

(3, 'Carlos', 'Martínez Rodríguez', '555-345-6789'),

(4, 'Ana', 'Fernández González', '555-456-7890'),

(5, 'Pedro', 'Gómez Torres', '555-567-8901'),

(6, 'Laura', 'Díaz Ruiz', '555-678-9012'),

(7, 'Miguel', 'Hernández Vargas', '555-789-0123'),

(8, 'Elena', 'Jiménez Moreno', '555-890-1234'),

(9, 'José', 'Álvarez Castro', '555-901-2345'),

(10, 'Lucía', 'Romero Ortega', '555-012-3456');

INSERT INTO Productos (IDProd, Nombre, Precio)

VALUES

(101, 'Laptop Ultrafina', 899.99),


(102, 'Smartphone Premium', 699.50),

(103, 'Tablet 10 pulgadas', 299.99),

(104, 'Monitor 27"', 249.95),

(105, 'Teclado inalámbrico', 45.50),

(106, 'Mouse ergonómico', 29.99),

(107, 'Impresora multifunción', 179.99),

(108, 'Auriculares Bluetooth', 89.95),

(109, 'Disco duro externo 1TB', 79.99),

(110, 'Cámara web HD', 59.99);

INSERT INTO Facturas (IDFact, Fecha, Tipo, ClienteID)

VALUES

(1001, '2025-01-10', 'Venta', 1),

(1002, '2025-01-15', 'Venta', 3),

(1003, '2025-01-20', 'Venta online', 2),

(1004, '2025-01-25', 'Reparación', 5),

(1005, '2025-01-30', 'Venta', 7),

(1006, '2025-02-05', 'Venta online', 4),

(1007, '2025-02-10', 'Servicio técnico', 9),

(1008, '2025-02-15', 'Venta', 6),

(1009, '2025-02-20', 'Venta online', 8),

(1010, '2025-02-25', 'Venta', 10);

INSERT INTO DetalleFactura (FacturaID, ProductoID, Cantidad, Precio)

VALUES

(1001, 101, 1, 899.99),

(1001, 105, 1, 45.50),


(1002, 103, 2, 299.99),

(1003, 102, 1, 699.50),

(1004, 107, 1, 179.99),

(1005, 104, 2, 249.95),

(1006, 108, 1, 89.95),

(1007, 110, 1, 59.99),

(1008, 106, 3, 29.99),

(1009, 109, 2, 79.99),

(1010, 101, 1, 899.99),

(1010, 108, 1, 89.95);

--Tarea

--a) Crea una vista que muestre los datos del cliente

--y la cantidad de facturas de cada uno, usando sub-consultas.

CREATE VIEW VistaClientesFacturas AS

SELECT

C.ID,

C.Nombre,

C.Apellidos,

C.Telefono,

(SELECT COUNT(*) FROM Facturas F WHERE F.ClienteID = C.ID) AS


CantidadFacturas

FROM

Clientes C;

--Llamar
SELECT * FROM VistaClientesFacturas;

--b) Agrega un índice "non-clustered" por la columna nombre,

--a la tabla de productos o cliente, y luego crea una consulta

--donde sea utilizado el index nom-clustered.

CREATE NONCLUSTERED INDEX IX_Productos_Nombre

ON Productos(Nombre);

--c) Crea una consulta en álgebra relacional que muestre el nombre

--y id del los clientes con id menor a 100.

--π ID, Nombre (σ ID < 100 (Clientes))

--Ejemplo en SQL

SELECT ID, Nombre

FROM Clientes

WHERE ID < 100;

--d) Crea un script que altere la tabla de clientes y

--agregue la fecha de ingreso. Agrega una UPDATE donde esa fecha

--de ingreso sea la fecha actual menos 10 años.

SELECT * FROM Clientes;

ALTER TABLE Clientes

ADD FechaIngreso DATE;


UPDATE Clientes

SET FechaIngreso = DATEADD(YEAR, -10, GETDATE());

SELECT ID, Nombre, Apellidos, FechaIngreso

FROM Clientes;

También podría gustarte