-- Crear una base de datos y tablas para los ejemplos
CREATE DATABASE Tienda;
-- Tabla Clientes
CREATE TABLE Clientes (
ClienteID INT PRIMARY KEY,
Nombre VARCHAR(50),
Email VARCHAR(100),
Edad INT
);
-- Tabla Pedidos
CREATE TABLE Pedidos (
PedidoID INT PRIMARY KEY,
ClienteID INT,
Fecha DATE,
Monto DECIMAL(10, 2),
FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID)
);
-- Insertar datos en la tabla Clientes
INSERT INTO Clientes (ClienteID, Nombre, Email, Edad)
VALUES
(1, 'Juan', 'juan@example.com', 30),
(2, 'Ana', 'ana@example.com', 25),
(3, 'Pedro', 'pedro@example.com', 20);
-- Insertar datos en la tabla Pedidos
INSERT INTO Pedidos (PedidoID, ClienteID, Fecha, Monto)
VALUES
(1, 1, '2023-01-15', 100.00),
(2, 2, '2023-01-16', 150.00),
(3, 1, '2023-01-17', 200.00),
(4, 3, '2023-01-18', 250.00),
(5, 2, '2023-01-19', 300.00);
-- Crear una vista para mostrar el resumen de pedidos por cliente
CREATE VIEW ResumenPedidos AS
SELECT
Clientes.Nombre,
COUNT(Pedidos.PedidoID) AS TotalPedidos,
SUM(Pedidos.Monto) AS MontoTotal
FROM
Clientes
JOIN
Pedidos ON Clientes.ClienteID = Pedidos.ClienteID
GROUP BY
Clientes.Nombre;
-- Consultar la vista ResumenPedidos
SELECT * FROM ResumenPedidos;
-- Actualizar la vista ResumenPedidos
CREATE OR REPLACE VIEW ResumenPedidos AS
SELECT
Clientes.Nombre,
COUNT(Pedidos.PedidoID) AS TotalPedidos,
SUM(Pedidos.Monto) AS MontoTotal,
AVG(Pedidos.Monto) AS PromedioMonto
FROM
Clientes
JOIN
Pedidos ON Clientes.ClienteID = Pedidos.ClienteID
GROUP BY
Clientes.Nombre;
-- Consultar la vista actualizada ResumenPedidos
SELECT * FROM ResumenPedidos;
-- Eliminar la vista ResumenPedidos
DROP VIEW ResumenPedidos;
Creación de Vistas con CREATE VIEW:
CREATE VIEW ResumenPedidos AS ...
crea una vista llamada ResumenPedidos
. Una vista es una consulta almacenada que actúa como una tabla virtual. En este caso, la vista ResumenPedidos
muestra un resumen de los pedidos por cliente, incluyendo el nombre del cliente, el número total de pedidos y el monto total de los pedidos.Consultar la Vista:
SELECT * FROM ResumenPedidos;
permite consultar la vista ResumenPedidos
como si fuera una tabla regular. Esta consulta muestra el resumen de pedidos por cliente definido en la vista.Actualizar la Vista con CREATE OR REPLACE VIEW:
CREATE OR REPLACE VIEW ResumenPedidos AS ...
actualiza la vista existente ResumenPedidos
. En este ejemplo, se añade una columna adicional PromedioMonto
, que muestra el promedio del monto de los pedidos por cliente. La cláusula CREATE OR REPLACE VIEW
permite modificar la definición de una vista existente sin necesidad de eliminarla primero.Eliminar la Vista con DROP VIEW:
DROP VIEW ResumenPedidos;
elimina la vista ResumenPedidos
. Esto borra la vista de la base de datos, pero no afecta a los datos subyacentes en las tablas Clientes
y Pedidos
.Las vistas son útiles para simplificar consultas complejas, mejorar la seguridad limitando el acceso a datos sensibles y proporcionar una capa de abstracción sobre las tablas subyacentes.