Está en la página 1de 3

DROP TABLE Empleados2;

CREATE TABLE Empleados2


AS
(SELECT Emp_Id, Emp_Nombre, Emp_Cargo, Emp_Jefe, Emp_FechaContrato,
Emp_Salario, Emp_Comision, Dep_ID
FROM Empleados);

--------- VISTA CON CLÁUSULA GROUP BY Y FUNCIONES DE GRUPO ---------


CREATE OR REPLACE VIEW EmpleadosPorDepartamento AS
SELECT Dep_ID as Codigo, SUM(Emp_Salario) AS Salario
FROM Empleados2
GROUP BY Dep_Id;

SELECT *
FROM EmpleadosPorDepartamento
ORDER BY Codigo;

No se puede sobre esta vista (eliminar, actualizar, insertar)


DELETE FROM EmpleadosPorDepartamento
WHERE Salario =11100000;

UPDATE EmpleadosPorDepartamento
SET Salario=20000000
WHERE Salario =11100000;

INSERT INTO EmpleadosPorDepartamento


VALUES (50, 5000000);

--------- VISTA CON CLÁUSULA DISTINCT ---------


CREATE OR REPLACE VIEW ListaCargos AS
SELECT DISTINCT Emp_Cargo as Cargo
FROM Empleados2;

SELECT *
FROM ListaCargos;

No se puede sobre esta vista (eliminar, actualizar, insertar)


DELETE FROM ListaCargos
WHERE Cargo = 'OFICINISTA';

UPDATE ListaCargos
SET Cargo = 'OFICINISTA'
WHERE Cargo = 'ANALISTA';
INSERT INTO ListaCargos
VALUES ('AUXILIAR');

--------- VISTA CON EXPRESIONES ---------


CREATE OR REPLACE VIEW EmpleadosDel30 AS
SELECT Emp_Id AS Id,
Emp_Nombre AS Nombre,
Emp_Cargo AS Cargo,
Emp_FechaContrato AS FechaContrato,
Emp_Salario*12 AS SalarioAnual,
Dep_ID
FROM Empleados2
WHERE Dep_Id = 30;

INSERT INTO Empleados2


VALUES (9000,'Prueba', 'VENDEDOR', NULL, '01/01/01', 1000000, NULL, 30);

SELECT *
FROM EmpleadosDel30;

No se puede sobre esta vista (actualizar, insertar)


--No se puede actualizar
UPDATE EmpleadosDel30
SET SalarioAnual=40000000
WHERE Id = 1100;

--Se puede actualizar si el campo a modificar no contiene la expresión.


UPDATE EmpleadosDel30
SET Cargo='OFICINISTA'
WHERE Id = 9000;

--No se puede insertar por el campo con la expresión.


INSERT INTO EmpleadosDel30
VALUES (9100, 'PEDRO', 'AUXILIAR', '05/05/09', 5000000, 30);

Se puede sobre esta vista (eliminar)


DELETE FROM EmpleadosDel30
WHERE Id = 9000;

--------- VISTA SIN COLUMNAS DE VALOR NOT NULL ---------


CREATE OR REPLACE VIEW EmpleadosDel30 AS
SELECT Emp_Id AS Id,
Emp_Nombre AS Nombre,
Dep_ID
FROM Empleados2
WHERE Dep_Id = 30;

SELECT *
FROM EmpleadosDel30;

No se puede sobre esta vista (insertar)


INSERT INTO EmpleadosDel30
VALUES (9000, 'PEDRO', 30);

Se puede sobre esta vista (actualizar, eliminar)


--Insertar este registro en la tabla empleados para actualizar
INSERT INTO Empleados2
VALUES (9000,'Prueba', 'VENDEDOR', NULL, '01/01/01', 1000000, NULL, 30);

--Actualizar campos que están en la vista


UPDATE EmpleadosDel30
SET Nombre = 'JUAN'
WHERE Id = 9000;

SELECT *
FROM EmpleadosDel30;

--Eliminar cualquier registro


DELETE FROM EmpleadosDel30
WHERE Id = 9000;

SELECT *
FROM EmpleadosDel30;

También podría gustarte