oracle sep 05 consultas avanzadas
TRANSCRIPT
![Page 1: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/1.jpg)
UNIVERSIDAD NACIONALJOSE FAUSTINO SANCHEZ CARRION
FACULTAD DE INGENIERIA
ESCUELA ACADEMICO PROFESIONAL DEINGENIERIA INFORMATICA
CURSOBASE DE DATOS II
SEPARATA Nº 05CONSULTAS AVANZADAS Y SUB CONSULTAS
DOCENTEING. EDWIN IVAN FARRO PACIFICO
HUACHO-LIMAPERU
![Page 2: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/2.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 2
CONSULTAS AVANZADAS
JOIN DE TABLASUn join o consulta correlacionada, permite mostrar datos a partir de múltiples tablas y las muestra enúnico resultado.Pero que sucede si realizamos la siguiente consulta:
SQL> SELECT ename,dname FROM emp,dept;
Obtenemos un producto cartesiano sin ninguna
EQUIJOINRecupera filas de una o más tablas unidas sobre la base de una condición de igualdad en lacláusula WHERE.
Ejemplo 1Listar el nombre del empelado y el nombre al departamento al que pertenece:
SQL> SELECT emp.ename,dept.dname FROM emp ,dept2 WHERE emp.deptno=dept.deptno;
Ó
SQL> SELECT e.ename,d.dname FROM emp e,dept d2 WHERE e.deptno=d.deptno;
Ejemplo 2Listar el código del empleado, nombre, nro de departamento de los que sean vendedores:
SQL> SELECT e.empno,e.ename,d.deptno2 FROM emp e,dept d3 WHERE d.deptno=e.deptno AND e.job='SALESMAN';
NON-EQUIJOINRecupera filas de dos o más tablas teniendo como base una relación diferente a la condición deigualdad en la cláusula WHERE.
EMPempnoenamejobmgrhiredatesalcommdeptno
DEPTdeptnodnameloc
![Page 3: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/3.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 3
Se utiliza cuando por ejemplo se busca rangos
Ejemplo 3Listar el nombre de los empleados la categoría y a la que pertenecen, de acuerdo al rango en quese encuentra el salario.
SQL>SELECT e.ename as Empleado,s.grade as CategoríaFROM emp e,salgrade sWHERE e.sal BETWEEN s.losal AND s.hisal;
Ejemplo 4Mostrar el nombre del empleado y el salario sólo de aquellos empleados cuyo salario esta en elgrado 3
SQL> SELECT e.ename,e.sal2 FROM emp e,salgrade s3 WHERE (e.sal BETWEEN s.losal AND s.hisal)4 AND s.grade=3
Insertar el siguiente registro:
SQL> INSERT INTO emp(empno,ename)2 VALUES (7999,'SALAS');
JOIN EXTERNOCombina dos o más tablas para recuperar aquellas filas de una tabla que no tienen un relacióndirecta de correspondencia en la otra tabla.Ingresar los siguientes registros
empno ename job mgr hiredate sal comm Detno7950 ROMYNA VENDEDOR 7941 10/05/02 10007951 ANDREA VENDEDOR 11/12/02 1000 2007952 TORIBIA VENDEDOR 7941 20/08/03 10007953 URSULA VENDEDOR 7941 21/09/03 1000 150
Ejemplo 5Mostrar todos los empleados así estos no tengan asociado un número de departamento.
SQL> SELECT e.empno,e.ename,d.deptno,d.dnameFROM emp e,dept dWHERE e.deptno=d.deptno(+)
Ejemplo 6Mostrar todos los departamentos así estos no tengan asociado ningún empelado.
SQL> SELECT e.empno,e.ename,d.deptno,d.dnameFROM emp e,dept dWHERE e.deptno(+)=d.deptno
Nota: (+) se le conoce como operador Outerjoin
![Page 4: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/4.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 4
AUTOJOINHace un join de una tabla consigo misma como si se trataran de dos tablas diferentes.
Ejemplo 7Mostrar el número , nombre del empleado y cargo, también el número el nombre de su jefe y cargoutilizando alias para las columnas.
SQL> SELECT e.empno cod_emp,e.ename nom_emp,j.empno cod_jefe,j.ename nom_jefeFROM emp j,emp eWHERE e.mgr=j.empnoORDER BY 1,3
PRODUCTO CARTESIANOSe crea cuando se omite un Join en una sentencia SELECT, lo que provoca que Oracle relacionetodas las filas de la primera tabla a todas las filas de la segunda tabla.
Ejemplo 8SQL> SELECT e.empno,e.ename,d.dname
FROM emp e,dept d
NATURAL JOINS (Versión 9i y posteriores)Es un enlace entre dos tablas que comparten el mismo nombre para la columna común. Simplificande manera importante las combinaciones de tablas, eliminando los alias de tablas y los joins decomparación.
Ejercicio 9Listar los nombres de los empleados y el departamento al que pertenecen
SQL> SELECT ename,deptno,dname2 FROM emp NATURAL JOIN dept;
OPERACIONES CON CONJUNTOSCombinan dos o más consultas en un solo resultado. Se cuentan con los siguientes operadores.
UnionUne dos conjuntos de resultados
Ejercicio 10
SQL> SELECT ename2 FROM emp3 WHERE deptno IN (10,30)4 UNION5 SELECT ename6 FROM emp7 WHERE deptno IN (10,20);
![Page 5: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/5.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 5
IntersectInterfecta dos conjuntos resultados
Ejercicio 11
SQL> SELECT ename2 FROM emp3 WHERE deptno IN (10,30)4 INTERSECT5 SELECT ename6 FROM emp7 WHERE deptno IN (10,20);
MinusResta dos conjuntos de resultados.
Ejercicio 12
SQL> SELECT ename2 FROM emp3 WHERE deptno IN (10,30)4 MINUS5 SELECT ename6 FROM emp7 WHERE deptno IN (10,20);
FUNCIONES DE GRUPOSUM (campo)AVG (campo)MAX (campo)MIN (campo)COUNT (campo)
Ejercicio 13Suma de todos los salarios
SQL> SELECT SUM(sal) FROM emp;
Ejercicio 14Suma de todos los salaries cuyo número de departamento sea 20
SQL> SELECT SUM(sal) FROM emp2 WHERE deptno=20;
Ejercicio 15Listar las suma de los salarios, el mayor y menor salario del departamento 20
Ejercicio 16Contar todos los empleados del departamento 20
![Page 6: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/6.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 6
Ejercicio 17Contar el número empleados que han comisionado.
Ejercicio 18Listar el promedio de las comisiones
Ejercicio 19Listar el mayor sueldo por cada departamento (sólo con el código)
Ejercicio 20Listar el mayor sueldo por cada departamento (mostrar el nombre del departamento)
Ejercicio 21Listar los sueldos promedio por departamento
Ejercicio 22Listar el número de personas con el mismo cargo
SUB CONSULTASSeleccionan filas de una tabla con una condición que depende de los valores de otra consulta.Una subconsulta puede recuperar un solo valor para completar la condición de la cláusula WHERE,opuede haber una subconsulta multifila que recupera mas de una valor para completar la cláusulaWHERE.Las subconsultas pueden aparecer en la cláusula WHERE de las siguientes sentencias:
SELECT INSERT UPDATE DELETE
Ejercicio 23Empleados que ganan más que smithSQL> select ename,sal from emp
2 where sal>(select sal3 from emp where ename='SMITH');
SQL> select ename,sal from emp2 where sal<(select avg(sal)3 from emp) and sal>(select min(sal)4 from emp where deptno=10);
![Page 7: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/7.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 7
Ejercicio 24Quienes trabajan en el mismo departamento que SmithSQL> select ename from emp where deptno=(select deptno
2 from emp where ename='SMITH') and ename<>'SMITH';
Operadores:IN : Busca que debe ser igual a alguno de los elementos de la subconsultaANY : mayor que el menorALL : mayor que el mayor
Ejercicio 25Quienes trababajn en el departamento que tienen el sueldo más altoSQL> select ename
2 from emp3 where deptno in4 (select deptno5 from emp6 where sal=(select max(sal) from emp));
Ejercicio 26Empleados que ganan más que todos los vendedores.SQL> select ename
2 from emp3 where sal>all4 (select sal from emp5 where job='SALESMAN');
Ejercicio 27Quienes son los que ganan más que el vendedor que gana menos.SQL> select ename
2 from emp3 where sal>any(select sal4 from emp5 where job='SALESMAN');
Ejercicio 28Los empleados que nos son jefes.SQL> select ename
2 from emp3 where empno not in(select MGR from emp4 where MGR is not null);
Ejercicio 29El empleado que trabaja en el mismo departamento de un empleado que su nombre tenga S.SQL> select ename from emp
2 where deptno in3 (select deptno from emp4 where ename like '%S%');
![Page 8: Oracle Sep 05 Consultas Avanzadas](https://reader036.vdocuments.site/reader036/viewer/2022081804/55cf969b550346d0338c9ccd/html5/thumbnails/8.jpg)
Universidad Nacional José Faustino Sánchez Carrión Ing. CIP Edwin Iván Farro Pacífico
Ing. CIP Edwin Iván Farro Pacífico Pag 8
Ejercicio 30Empleados cuyo jefe sea KINGSQL> select ename from emp
2 where MGR=(select empno3 from emp where ename='KING');