SlideShare una empresa de Scribd logo
1 de 59
Base de Datos Docente: Manuel Reyes O.
UNIDAD V Lenguaje de consulta Estandar SQL
Objetivos ,[object Object],[object Object],[object Object],[object Object]
Tablas Utilizadas EMPNO ENAME  JOB  MGR HIREDATE  SAL  COMM  DEPTNO --------- ---------- --------- --------- --------- --------- --------- --------- 7839 KING  PRESIDENT  17-NOV-81  5000  10 7698 BLAKE  MANAGER  7839 01-MAY-81  2850  30 7782 CLARK  MANAGER  7839 09-JUN-81  1500  10 7566 JONES  MANAGER  7839 02-APR-81  2975  20 7654 MARTIN  SALESMAN  7698 28-SEP-81  1250  1400  30 7499 ALLEN  SALESMAN  7698 20-FEB-81  1600  300  30 7844 TURNER  SALESMAN  7698 08-SEP-81  1500  0  30 7900 JAMES  CLERK  7698 03-DEC-81  950  30 7521 WARD  SALESMAN  7698 22-FEB-81  1250  500  30 7902 FORD  ANALYST  7566 03-DEC-81  3000  20 7369 SMITH  CLERK  7902 17-DEC-80  800  20 7788 SCOTT  ANALYST  7566 09-DEC-82  3000  20 7876 ADAMS  CLERK  7788 12-JAN-83  1100  20 7934 MILLER  CLERK  7782 23-JAN-82  1300  10 EMP
Tablas Utilizadas DEPT DEPTNO DNAME  LOC --------- -------------- ----------    10 ACCOUNTING  NEW YORK 20 RESEARCH  DALLAS 30 SALES  CHICAGO 40 OPERATIONS  BOSTON GRADE  LOSAL  HISAL --------- --------- --------- 1  700  1200 2  1201  1400 3  1401  2000 4  2001  3000 5  3001  9999 SALGRADE
Sentencia Select Selección Projección Tabla 1 Tabla 2 Tabla 1 Tabla 1 Join
Sentencia Básica SELECT [DISTINCT] {*,  column  [ alias ],...} FROM table; ,[object Object],[object Object]
Selección de todas las columnas DEPTNO DNAME  LOC --------- -------------- ------------- 10 ACCOUNTING  NEW YORK 20 RESEARCH  DALLAS 30 SALES  CHICAGO 40 OPERATIONS  BOSTON SQL> SELECT * 2  FROM  dept;
Selección Especifica de Columnas DEPTNO LOC --------- ------------- 10 NEW YORK 20 DALLAS 30 CHICAGO 40 BOSTON SQL> SELECT deptno, loc 2  FROM  dept;
Uso de Operadores Aritméticos Operador + - * /  Descripción Suma Resta Multiplicación División
Uso de Operadores Aritméticos SQL> SELECT ename, sal, sal+300 2  FROM emp; ENAME  SAL  SAL+300 ---------- --------- --------- KING  5000  5300 BLAKE  2850  3150 CLARK  2450  2750 JONES  2975  3275 MARTIN  1250  1550 ALLEN  1600  1900 ... 14 rows selected.
Valores NULL ,[object Object],[object Object],SQL> SELECT  ename, job, comm 2  FROM emp; ENAME  JOB  COMM ---------- --------- --------- KING  PRESIDENT BLAKE  MANAGER ... TURNER  SALESMAN  0 ... 14 rows selected.
Uso de alias SQL> SELECT ename AS name, sal salary 2  FROM  emp; NAME  SALARY ------------- --------- ... SQL> SELECT ename "Name", 2  sal*12 "Annual Salary" 3  FROM  emp; Name  Annual Salary ------------- ------------- ...
Filas Duplicadas ,[object Object],SQL> SELECT deptno 2  FROM  emp; DEPTNO --------- 10 30 10 20 ... 14 rows selected.
Eliminación de Filas Duplicadas ,[object Object],SQL> SELECT DISTINCT deptno 2  FROM  emp; DEPTNO --------- 10 20 30
Limitar las Filas Seleccionadas ,[object Object],[object Object],SELECT [DISTINCT] {*,  column  [ alias ], ...} FROM  table [WHERE condition(s) ];
Cláusula WHERE SQL> SELECT ename, job, deptno 2  FROM  emp 3  WHERE  job='CLERK'; ENAME  JOB  DEPTNO ---------- --------- --------- JAMES  CLERK  30 SMITH  CLERK  20 ADAMS  CLERK  20 MILLER  CLERK  10
Campos de Tipo Carácter  SQL> SELECT ename, job, deptno 2  FROM  emp 3  WHERE ename = 'JAMES';
Operadores de Comparación SQL> SELECT ename, sal, comm 2  FROM  emp 3  WHERE  sal<=comm; ENAME  SAL  COMM ---------- --------- --------- MARTIN  1250  1400 Operador = > >= < <= <> Significado Igual a  Mayor que  Mayor que o igual a  Menor que  Menor que o igual a No igual a
Otros Operadores Operador BETWEEN ...AND... IN(list) LIKE IS NULL Significado Entre dos valores (inclusive) Lista de valores  Se ajusta a un patrón  Es un valor nulo
Operador BETWEEN ,[object Object],ENAME  SAL ---------- --------- MARTIN  1250 TURNER  1500 WARD  1250 ADAMS  1100 MILLER  1300 SQL> SELECT ename, sal 2  FROM  emp 3  WHERE sal BETWEEN 1000 AND 1500; Limite Inferior Limite Superior
Operador IN ,[object Object],SQL> SELECT empno, ename, sal, mgr 2  FROM  emp 3  WHERE mgr IN (7902, 7566, 7788); EMPNO ENAME  SAL  MGR --------- ---------- --------- --------- 7902 FORD  3000  7566 7369 SMITH  800  7902 7788 SCOTT  3000  7566 7876 ADAMS  1100  7788
Operador LIKE ,[object Object],[object Object],[object Object],[object Object],SQL> SELECT ename 2  FROM emp 3  WHERE ename LIKE '_A%'; ENAME ----------  JAMES  WARD
Operador IS NULL ,[object Object],SQL> SELECT  ename, mgr 2  FROM  emp 3  WHERE  mgr IS NULL; ENAME  MGR ---------- --------- KING
Operadores Lógicos Operador AND OR NOT Significado Devuelve TRUE si ambas condiciones son TRUE Devuelve TRUE si alguna de las condiciones es TRUE Devuelve TRUE si la siguiente condición es FALSE
Operador AND ,[object Object],SQL> SELECT empno, ename, job, sal 2  FROM  emp 3  WHERE  sal>=1100 4  AND  job='CLERK'; EMPNO ENAME  JOB  SAL --------- ---------- --------- --------- 7876 ADAMS  CLERK  1100 7934 MILLER  CLERK  1300
Operador OR ,[object Object],SQL> SELECT empno, ename, job, sal 2  FROM  emp 3  WHERE  sal>=1100 4  OR  job='CLERK'; EMPNO ENAME  JOB  SAL --------- ---------- --------- --------- 7839 KING  PRESIDENT  5000 7698 BLAKE  MANAGER  2850 7782 CLARK  MANAGER  2450 7566 JONES  MANAGER  2975 7654 MARTIN  SALESMAN  1250 ... 14 rows selected.
Operador NOT SQL> SELECT ename, job 2  FROM  emp 3  WHERE  job NOT IN ('CLERK','MANAGER','ANALYST'); ENAME  JOB ---------- --------- KING  PRESIDENT MARTIN  SALESMAN ALLEN  SALESMAN TURNER  SALESMAN WARD  SALESMAN
Cláusula ORDER BY ,[object Object],[object Object],[object Object],[object Object],SQL> SELECT   ename, job, deptno, hiredate 2  FROM   emp 3  ORDER BY hiredate; ENAME  JOB  DEPTNO HIREDATE ---------- --------- --------- --------- SMITH  CLERK  20 17-DEC-80 ALLEN  SALESMAN  30 20-FEB-81 ... 14 rows selected.
Ordenar Múltiples Campos ,[object Object],SQL> SELECT ename, deptno, sal 2  FROM  emp 3  ORDER BY  deptno, sal DESC; ENAME  DEPTNO  SAL ---------- --------- --------- KING  10  5000 CLARK  10  2450 MILLER  10  1300 FORD  20  3000 ... 14 rows selected.
Consulta a Varias tablas EMPNO  DEPTNO  LOC ----- ------- --------  7839  10 NEW YORK 7698    30 CHICAGO 7782  10 NEW YORK 7566  20 DALLAS 7654    30 CHICAGO 7499  30 CHICAGO ... 14 rows selected. EMP  DEPT  EMPNO ENAME ... DEPTNO ------ ----- ... ------   7839 KING ...   10 7698 BLAKE ...   30 ... 7934 MILLER ...   10 DEPTNO DNAME  LOC  ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
¿Qué es un JOIN? ,[object Object],[object Object],[object Object],SELECT table.column, table.column FROM table1, table2 WHERE table1.column1  =  table2.column2 ;
Producto Cartesiano ,[object Object],[object Object],[object Object],[object Object],[object Object]
Tipos de JOIN ,[object Object],[object Object],[object Object],[object Object]
¿Qué es un Equijoin? EMP  DEPT  EMPNO ENAME  DEPTNO ------ ------- ------- 7839 KING  10 7698 BLAKE  30 7782 CLARK  10 7566 JONES  20 7654 MARTIN  30 7499 ALLEN  30 7844 TURNER  30 7900 JAMES  30 7521 WARD  30 7902 FORD  20 7369 SMITH  20 ... 14 rows selected. DEPTNO DNAME  LOC  ------- ---------- -------- 10 ACCOUNTING NEW YORK 30 SALES   CHICAGO 10 ACCOUNTING NEW YORK  20 RESEARCH DALLAS 30 SALES   CHICAGO 30 SALES   CHICAGO 30 SALES   CHICAGO 30 SALES   CHICAGO 30 SALES   CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS ... 14 rows selected. Primary key Foreign key
Recuperación de Registros con Equijoins SQL> SELECT  emp.empno, emp.ename, emp.deptno,   2 dept.deptno, dept.loc 3  FROM  emp, dept 4  WHERE  emp.deptno=dept.deptno; EMPNO ENAME  DEPTNO DEPTNO LOC ----- ------ ------ ------ --------- 7839 KING   10  10 NEW YORK 7698 BLAKE    30  30 CHICAGO 7782 CLARK   10  10 NEW YORK 7566 JONES  20  20 DALLAS ... 14 rows selected.
Uso de Alias de Tabla ,[object Object],SQL> SELECT emp.empno, emp.ename, emp.deptno,  2   dept.deptno, dept.loc 3  FROM  emp, dept 4  WHERE  emp.deptno=dept.deptno; SQL> SELECT e.empno, e.ename, e.deptno,  2  d.deptno, d.loc 3  FROM  emp e, dept d 4  WHERE  e.deptno=d.deptno;
Combinando Más de Dos Tablas NAME CUSTID ----------- ------ JOCKSPORTS   100 TKB SPORT SHOP   101 VOLLYRITE   102 JUST TENNIS   103 K+T SPORTS   105 SHAPE UP   106 WOMENS SPORTS  107 ... ... 9 rows selected. CUSTOMER  CUSTID  ORDID ------- ------- 101  610 102  611 104  612 106  601 102  602 106  604 106  605 ...  21 rows selected. ORD  ORDID  ITEMID ------ ------- 610  3 611  1 612  1 601  1 602  1 ... 64 rows selected.  ITEM
Non-Equijoins EMP SALGRADE EMPNO ENAME  SAL ------ ------- ------ 7839 KING  5000 7698 BLAKE  2850 7782 CLARK  2450 7566 JONES  2975 7654 MARTIN  1250 7499 ALLEN  1600 7844 TURNER  1500 7900 JAMES  950 ... 14 rows selected. GRADE  LOSAL  HISAL ----- ----- ------ 1  700 1200 2  1201 1400 3  1401 2000 4 2001 3000 5  3001 9999 “ el salario en la tabla  EMP, está entre el salario más bajo y el salario  más alto de la tabla SALGRADE”
Recuperación de Registros con  Non-Equijoins ENAME  SAL  GRADE ---------- --------- --------- JAMES  950  1 SMITH  800  1 ADAMS  1100  1 ... 14 rows selected. SQL>  SELECT  e.ename, e.sal, s.grade 2 FROM emp e, salgrade s 3 WHERE  e.sal 4 BETWEEN  s.losal AND s.hisal;
Outer Joins EMP  DEPT  ENAME DEPTNO ----- ------ KING 10 BLAKE 30 CLARK 10 JONES 20 ... DEPTNO DNAME ------ ---------- 10  ACCOUNTING 30  SALES 10  ACCOUNTING 20 RESEARCH ... 40 OPERATIONS No hay empleados en el departamento OPERATIONS
Outer Joins ,[object Object],[object Object],SELECT table.column, table.column FROM table1, table2 WHERE table1.column (+)   =  table2.column ; SELECT table.column, table.column FROM table1, table2 WHERE table1.column  =  table2.column (+) ;
Uso de Outer Joins SQL> SELECT e.ename, d.deptno, d.dname 2  FROM emp e, dept d 3  WHERE e.deptno(+) = d.deptno 4  ORDER BY e.deptno; ENAME  DEPTNO DNAME ---------- --------- ------------- KING  10 ACCOUNTING CLARK  10 ACCOUNTING ... 40 OPERATIONS 15 rows selected.
Self Joins EMP (WORKER) EMP (MANAGER) EMPNO ENAME  MGR ----- ------ ----  7839 KING 7698 BLAKE 7839 7782 CLARK 7839 7566 JONES 7839 7654 MARTIN 7698 7499 ALLEN 7698 EMPNO ENAME ----- -------- 7839 KING 7839 KING 7839 KING 7698 BLAKE 7698 BLAKE “ MGR en la tabla WORKER es igual a  EMPNO en la tabla MANAGER”
Combinación de una Tabla  Consigo Misma WORKER.ENAME MANAGER.MANAG ------------------------------- BLAKE  KING CLARK  KING JONES  KING MARTIN  BLAKE ... 13 rows selected. SQL> SELECT worker.ename,manager.ename 2  FROM  emp worker, emp manager 3  WHERE  worker.mgr = manager.empno;
Funciones de Grupo ,[object Object],EMP “ máximo salario en la tabla EMP” DEPTNO  SAL --------- --------- 10  2450 10  5000 10  1300 20  800 20  1100 20  3000 20  3000 20  2975 30  1600 30  2850 30  1250 30  950 30  1500 30  1250 MAX(SAL) --------- 5000
Tipos de Funciones de Grupo ,[object Object],[object Object],[object Object],[object Object],[object Object]
AVG(SAL)  MAX(SAL)  MIN(SAL)  SUM(SAL) -------- --------- --------- --------- 1400  1600  1250  5600 SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE 'SALES%'; SQL> SELECT MIN(hiredate), MAX(hiredate) 2  FROM emp ; MIN(HIRED MAX(HIRED --------- --------- 17-DEC-80 12-JAN-83
COUNT(*) --------- 6 SQL> SELECT COUNT(*) 2  FROM emp 3  WHERE deptno = 30; SQL> SELECT COUNT(comm) 2  FROM emp 3  WHERE deptno = 30; COUNT(COMM) ----------- 4
Creando Grupos de Datos EMP “ media de salarios  en EMP para cada departamento” DEPTNO  SAL --------- --------- 10  2450 10  5000 10  1300 20  800 20  1100 20  3000 20  3000 20  2975 30  1600 30  2850 30  1250 30  950 30  1500 30  1250 DEPTNO  AVG(SAL) ------- --------- 10 2916.6667 20  2175 30 1566.6667 2916.6667 2175 1566.6667
Creando Grupos de Datos:  La Cláusula GROUP BY SELECT column ,  group_function FROM table [WHERE condition ] [GROUP BY group_by_expression ] [ORDER BY column ]; ,[object Object]
Cláusula GROUP BY ,[object Object],SQL> SELECT  deptno, AVG(sal) 2  FROM  emp 3  GROUP BY deptno; DEPTNO  AVG(SAL) --------- --------- 10 2916.6667 20  2175 30 1566.6667
Exclusión de Resultados de un Grupo “ máximo salario por departamento mayor de 2900$” EMP DEPTNO  SAL --------- --------- 10  2450 10  5000 10  1300 20  800 20  1100 20  3000 20  3000 20  2975 30  1600 30  2850 30  1250 30  950 30  1500 30  1250 DEPTNO  MAX(SAL) --------- --------- 10  5000 20  3000 5000 3000 2850
Exclusión de Resultados de un Grupo: Cláusula HAVING ,[object Object],[object Object],[object Object],[object Object],SELECT column ,  group_function FROM table [WHERE condition ] [GROUP BY group_by_expression ] [HAVING group_condition ] [ORDER BY column ];
Cláusula HAVING SQL> SELECT  deptno, max(sal) 2  FROM  emp 3  GROUP BY deptno 4  HAVING  max(sal)>2900; DEPTNO  MAX(SAL) --------- --------- 10  5000 20  3000
SubConsultas ,[object Object],“ ¿Qué empleados tienen un salario superior al salrio de Jones?” Consulta Principal ? “ ¿Cuál es el salario de Jones?” ? Subconsulta
Uso de subconsultas SQL> SELECT ename 2  FROM  emp 3  WHERE  sal >  4   (SELECT sal 5  FROM  emp 6  WHERE  empno=7566); ENAME ---------- KING FORD SCOTT 2975
Subconsultas Multi-registro ,[object Object],[object Object],Operador IN ANY ALL Significado Igual a los valores de cierta lista Compara los valores con cada valor devuelto por la subconsulta Compara los valores con cada uno de los valores devueltos por la subconsulta
Operador ANY EMPNO ENAME  JOB --------- ---------- --------- 7654 MARTIN  SALESMAN  7521 WARD  SALESMAN  SQL> SELECT  empno, ename, job 2  FROM  emp 3  WHERE  sal < ANY  4 (SELECT sal 5  FROM emp 6 WHERE job = 'CLERK') 7  AND   job <> 'CLERK'; 950 800 1100 1300

Más contenido relacionado

La actualidad más candente

Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
Byron Eras
 
PostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjuntoPostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjunto
Nicola Strappazzon C.
 
Elaborar una presentación que describa las siguientes temáticas:(1)
Elaborar una presentación que describa las siguientes temáticas:(1)Elaborar una presentación que describa las siguientes temáticas:(1)
Elaborar una presentación que describa las siguientes temáticas:(1)
Victor Sanchez
 
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
Nicola Strappazzon C.
 
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
Nicola Strappazzon C.
 
Introducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selecciónIntroducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selección
M.c. Omar Jasso
 
Unidad v integridad relacional
Unidad v  integridad relacionalUnidad v  integridad relacional
Unidad v integridad relacional
Orlando Verdugo
 

La actualidad más candente (20)

Fundamentos de SELECT SQL
Fundamentos de SELECT SQLFundamentos de SELECT SQL
Fundamentos de SELECT SQL
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)
 
Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11
 
Clase 07
Clase 07Clase 07
Clase 07
 
SENTENCIAS SQL
SENTENCIAS SQL SENTENCIAS SQL
SENTENCIAS SQL
 
Sql básico - compendio
Sql básico  - compendioSql básico  - compendio
Sql básico - compendio
 
PostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjuntoPostgreSQL - Lección 7 - Usando los operadores de conjunto
PostgreSQL - Lección 7 - Usando los operadores de conjunto
 
Consultas Basicas En Sql Server 2005
Consultas Basicas En Sql Server 2005Consultas Basicas En Sql Server 2005
Consultas Basicas En Sql Server 2005
 
Elaborar una presentación que describa las siguientes temáticas:(1)
Elaborar una presentación que describa las siguientes temáticas:(1)Elaborar una presentación que describa las siguientes temáticas:(1)
Elaborar una presentación que describa las siguientes temáticas:(1)
 
Diseño de pantallas
Diseño de pantallasDiseño de pantallas
Diseño de pantallas
 
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
PostgreSQL - Lección 2 - Restringiendo y Ordenando los Datos retornados por e...
 
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
PostgreSQL - Lección 3 - Usando funciones simples para manipular la salida de...
 
Introducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selecciónIntroducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selección
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12
 
SENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVERSENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVER
 
Unidad v integridad relacional
Unidad v  integridad relacionalUnidad v  integridad relacional
Unidad v integridad relacional
 
Bases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datosBases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datos
 

Destacado

Lenguaje de Consulta Estructurado
Lenguaje de Consulta EstructuradoLenguaje de Consulta Estructurado
Lenguaje de Consulta Estructurado
Marlene Goncalves
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datos
Francis Xavier
 
LENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADOLENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADO
Minerva136
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
Luis Jherry
 

Destacado (20)

Lenguaje de Consulta Estructurado
Lenguaje de Consulta EstructuradoLenguaje de Consulta Estructurado
Lenguaje de Consulta Estructurado
 
Lenguaje SQL
Lenguaje SQLLenguaje SQL
Lenguaje SQL
 
Introduccion al sql query
Introduccion al sql queryIntroduccion al sql query
Introduccion al sql query
 
Creacion de bases de datos MySQL en xamp
Creacion de bases de datos MySQL en xampCreacion de bases de datos MySQL en xamp
Creacion de bases de datos MySQL en xamp
 
Lenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sqlLenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sql
 
Lenguaje de consulta de datos
Lenguaje de consulta de datosLenguaje de consulta de datos
Lenguaje de consulta de datos
 
Lenguaje Sql
Lenguaje SqlLenguaje Sql
Lenguaje Sql
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
 
Presentación SQL Server 2012
Presentación SQL Server 2012Presentación SQL Server 2012
Presentación SQL Server 2012
 
Tutorial Sql
Tutorial SqlTutorial Sql
Tutorial Sql
 
LENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADOLENGUAJE DE CONSULTA ESTRUCTURADO
LENGUAJE DE CONSULTA ESTRUCTURADO
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Normalización
NormalizaciónNormalización
Normalización
 
Lenguaje sql
Lenguaje sqlLenguaje sql
Lenguaje sql
 
Diseño lógico
Diseño lógicoDiseño lógico
Diseño lógico
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Servidor web
Servidor webServidor web
Servidor web
 

Similar a Attachment

Práctica 1 preguntas SQL
Práctica 1 preguntas SQLPráctica 1 preguntas SQL
Práctica 1 preguntas SQL
lorena duque
 
FSI-BD-T7-EjerciciosSQLResueltos.pdf
FSI-BD-T7-EjerciciosSQLResueltos.pdfFSI-BD-T7-EjerciciosSQLResueltos.pdf
FSI-BD-T7-EjerciciosSQLResueltos.pdf
davidvargas666
 
Actividad2 capitulo I contenido
Actividad2 capitulo I  contenidoActividad2 capitulo I  contenido
Actividad2 capitulo I contenido
lorena duque
 
PostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECTPostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECT
Nicola Strappazzon C.
 

Similar a Attachment (20)

Práctica 1 preguntas SQL
Práctica 1 preguntas SQLPráctica 1 preguntas SQL
Práctica 1 preguntas SQL
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Presentacio sql ok
Presentacio sql okPresentacio sql ok
Presentacio sql ok
 
Unidad iii dql
Unidad iii dqlUnidad iii dql
Unidad iii dql
 
Sql
SqlSql
Sql
 
FSI-BD-T7-EjerciciosSQLResueltos.pdf
FSI-BD-T7-EjerciciosSQLResueltos.pdfFSI-BD-T7-EjerciciosSQLResueltos.pdf
FSI-BD-T7-EjerciciosSQLResueltos.pdf
 
Presentacións Sql mejorado
Presentacións Sql mejoradoPresentacións Sql mejorado
Presentacións Sql mejorado
 
Actividad2 capitulo I contenido
Actividad2 capitulo I  contenidoActividad2 capitulo I  contenido
Actividad2 capitulo I contenido
 
PostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECTPostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECT
 
CONSULTAS BASICAS
CONSULTAS BASICASCONSULTAS BASICAS
CONSULTAS BASICAS
 
Administración de base de datos oracle - sesion 1
Administración de base de datos oracle - sesion 1Administración de base de datos oracle - sesion 1
Administración de base de datos oracle - sesion 1
 
Oracle sep 01
Oracle sep 01Oracle sep 01
Oracle sep 01
 
Sql1
Sql1Sql1
Sql1
 
Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 
8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx
 
Command oracle
Command oracleCommand oracle
Command oracle
 
Sql2
Sql2Sql2
Sql2
 
Gbd9
Gbd9Gbd9
Gbd9
 
Tarea 8 consultas
Tarea 8 consultasTarea 8 consultas
Tarea 8 consultas
 
Tema 1 Parte 3.pdf
Tema 1 Parte 3.pdfTema 1 Parte 3.pdf
Tema 1 Parte 3.pdf
 

Attachment

  • 1. Base de Datos Docente: Manuel Reyes O.
  • 2. UNIDAD V Lenguaje de consulta Estandar SQL
  • 3.
  • 4. Tablas Utilizadas EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO --------- ---------- --------- --------- --------- --------- --------- --------- 7839 KING PRESIDENT 17-NOV-81 5000 10 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 1500 10 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7900 JAMES CLERK 7698 03-DEC-81 950 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7369 SMITH CLERK 7902 17-DEC-80 800 20 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 EMP
  • 5. Tablas Utilizadas DEPT DEPTNO DNAME LOC --------- -------------- ---------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON GRADE LOSAL HISAL --------- --------- --------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 SALGRADE
  • 6. Sentencia Select Selección Projección Tabla 1 Tabla 2 Tabla 1 Tabla 1 Join
  • 7.
  • 8. Selección de todas las columnas DEPTNO DNAME LOC --------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> SELECT * 2 FROM dept;
  • 9. Selección Especifica de Columnas DEPTNO LOC --------- ------------- 10 NEW YORK 20 DALLAS 30 CHICAGO 40 BOSTON SQL> SELECT deptno, loc 2 FROM dept;
  • 10. Uso de Operadores Aritméticos Operador + - * / Descripción Suma Resta Multiplicación División
  • 11. Uso de Operadores Aritméticos SQL> SELECT ename, sal, sal+300 2 FROM emp; ENAME SAL SAL+300 ---------- --------- --------- KING 5000 5300 BLAKE 2850 3150 CLARK 2450 2750 JONES 2975 3275 MARTIN 1250 1550 ALLEN 1600 1900 ... 14 rows selected.
  • 12.
  • 13. Uso de alias SQL> SELECT ename AS name, sal salary 2 FROM emp; NAME SALARY ------------- --------- ... SQL> SELECT ename &quot;Name&quot;, 2 sal*12 &quot;Annual Salary&quot; 3 FROM emp; Name Annual Salary ------------- ------------- ...
  • 14.
  • 15.
  • 16.
  • 17. Cláusula WHERE SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE job='CLERK'; ENAME JOB DEPTNO ---------- --------- --------- JAMES CLERK 30 SMITH CLERK 20 ADAMS CLERK 20 MILLER CLERK 10
  • 18. Campos de Tipo Carácter SQL> SELECT ename, job, deptno 2 FROM emp 3 WHERE ename = 'JAMES';
  • 19. Operadores de Comparación SQL> SELECT ename, sal, comm 2 FROM emp 3 WHERE sal<=comm; ENAME SAL COMM ---------- --------- --------- MARTIN 1250 1400 Operador = > >= < <= <> Significado Igual a Mayor que Mayor que o igual a Menor que Menor que o igual a No igual a
  • 20. Otros Operadores Operador BETWEEN ...AND... IN(list) LIKE IS NULL Significado Entre dos valores (inclusive) Lista de valores Se ajusta a un patrón Es un valor nulo
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. Operadores Lógicos Operador AND OR NOT Significado Devuelve TRUE si ambas condiciones son TRUE Devuelve TRUE si alguna de las condiciones es TRUE Devuelve TRUE si la siguiente condición es FALSE
  • 26.
  • 27.
  • 28. Operador NOT SQL> SELECT ename, job 2 FROM emp 3 WHERE job NOT IN ('CLERK','MANAGER','ANALYST'); ENAME JOB ---------- --------- KING PRESIDENT MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN
  • 29.
  • 30.
  • 31. Consulta a Varias tablas EMPNO DEPTNO LOC ----- ------- -------- 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO ... 14 rows selected. EMP DEPT EMPNO ENAME ... DEPTNO ------ ----- ... ------ 7839 KING ... 10 7698 BLAKE ... 30 ... 7934 MILLER ... 10 DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
  • 32.
  • 33.
  • 34.
  • 35. ¿Qué es un Equijoin? EMP DEPT EMPNO ENAME DEPTNO ------ ------- ------- 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20 ... 14 rows selected. DEPTNO DNAME LOC ------- ---------- -------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS ... 14 rows selected. Primary key Foreign key
  • 36. Recuperación de Registros con Equijoins SQL> SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno; EMPNO ENAME DEPTNO DEPTNO LOC ----- ------ ------ ------ --------- 7839 KING 10 10 NEW YORK 7698 BLAKE 30 30 CHICAGO 7782 CLARK 10 10 NEW YORK 7566 JONES 20 20 DALLAS ... 14 rows selected.
  • 37.
  • 38. Combinando Más de Dos Tablas NAME CUSTID ----------- ------ JOCKSPORTS 100 TKB SPORT SHOP 101 VOLLYRITE 102 JUST TENNIS 103 K+T SPORTS 105 SHAPE UP 106 WOMENS SPORTS 107 ... ... 9 rows selected. CUSTOMER CUSTID ORDID ------- ------- 101 610 102 611 104 612 106 601 102 602 106 604 106 605 ... 21 rows selected. ORD ORDID ITEMID ------ ------- 610 3 611 1 612 1 601 1 602 1 ... 64 rows selected. ITEM
  • 39. Non-Equijoins EMP SALGRADE EMPNO ENAME SAL ------ ------- ------ 7839 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7566 JONES 2975 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 ... 14 rows selected. GRADE LOSAL HISAL ----- ----- ------ 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 “ el salario en la tabla EMP, está entre el salario más bajo y el salario más alto de la tabla SALGRADE”
  • 40. Recuperación de Registros con Non-Equijoins ENAME SAL GRADE ---------- --------- --------- JAMES 950 1 SMITH 800 1 ADAMS 1100 1 ... 14 rows selected. SQL> SELECT e.ename, e.sal, s.grade 2 FROM emp e, salgrade s 3 WHERE e.sal 4 BETWEEN s.losal AND s.hisal;
  • 41. Outer Joins EMP DEPT ENAME DEPTNO ----- ------ KING 10 BLAKE 30 CLARK 10 JONES 20 ... DEPTNO DNAME ------ ---------- 10 ACCOUNTING 30 SALES 10 ACCOUNTING 20 RESEARCH ... 40 OPERATIONS No hay empleados en el departamento OPERATIONS
  • 42.
  • 43. Uso de Outer Joins SQL> SELECT e.ename, d.deptno, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno(+) = d.deptno 4 ORDER BY e.deptno; ENAME DEPTNO DNAME ---------- --------- ------------- KING 10 ACCOUNTING CLARK 10 ACCOUNTING ... 40 OPERATIONS 15 rows selected.
  • 44. Self Joins EMP (WORKER) EMP (MANAGER) EMPNO ENAME MGR ----- ------ ---- 7839 KING 7698 BLAKE 7839 7782 CLARK 7839 7566 JONES 7839 7654 MARTIN 7698 7499 ALLEN 7698 EMPNO ENAME ----- -------- 7839 KING 7839 KING 7839 KING 7698 BLAKE 7698 BLAKE “ MGR en la tabla WORKER es igual a EMPNO en la tabla MANAGER”
  • 45. Combinación de una Tabla Consigo Misma WORKER.ENAME MANAGER.MANAG ------------------------------- BLAKE KING CLARK KING JONES KING MARTIN BLAKE ... 13 rows selected. SQL> SELECT worker.ename,manager.ename 2 FROM emp worker, emp manager 3 WHERE worker.mgr = manager.empno;
  • 46.
  • 47.
  • 48. AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------- 1400 1600 1250 5600 SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE 'SALES%'; SQL> SELECT MIN(hiredate), MAX(hiredate) 2 FROM emp ; MIN(HIRED MAX(HIRED --------- --------- 17-DEC-80 12-JAN-83
  • 49. COUNT(*) --------- 6 SQL> SELECT COUNT(*) 2 FROM emp 3 WHERE deptno = 30; SQL> SELECT COUNT(comm) 2 FROM emp 3 WHERE deptno = 30; COUNT(COMM) ----------- 4
  • 50. Creando Grupos de Datos EMP “ media de salarios en EMP para cada departamento” DEPTNO SAL --------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO AVG(SAL) ------- --------- 10 2916.6667 20 2175 30 1566.6667 2916.6667 2175 1566.6667
  • 51.
  • 52.
  • 53. Exclusión de Resultados de un Grupo “ máximo salario por departamento mayor de 2900$” EMP DEPTNO SAL --------- --------- 10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 DEPTNO MAX(SAL) --------- --------- 10 5000 20 3000 5000 3000 2850
  • 54.
  • 55. Cláusula HAVING SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900; DEPTNO MAX(SAL) --------- --------- 10 5000 20 3000
  • 56.
  • 57. Uso de subconsultas SQL> SELECT ename 2 FROM emp 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE empno=7566); ENAME ---------- KING FORD SCOTT 2975
  • 58.
  • 59. Operador ANY EMPNO ENAME JOB --------- ---------- --------- 7654 MARTIN SALESMAN 7521 WARD SALESMAN SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal < ANY 4 (SELECT sal 5 FROM emp 6 WHERE job = 'CLERK') 7 AND job <> 'CLERK'; 950 800 1100 1300

Notas del editor

  1. Tablas Utilizadas en el Curso Utilizaremos tres tablas principales: EMP, que da los detalles de los empleados. DEPT, que da los detalles de los departamentos. SALGRADE, que da los detalles de los salarios para varios grados. La estructura de los datos para todas las tablas se detallan en el Apéndice B.
  2. Equijoins Para determinar el nombre del departamento del empleado, se compara el valor de la columna DEPTNO en la tabla EMP con los valores de DEPTNO en la tabla DEPT. La relación entre las tablas EMP y DEPT es un equijoin , ésto quiere decir que los valores en la columna DEPTNO en ambas tablas deben ser iguales. Frecuentemente, este tipo de joins incluyen complementos de clave primaria y externa. Nota: Los equijoins también se llaman joins simples o inner joins.
  3. Recuperación de Registros con Equijoins En el ejemplo de la parte superior: La claúsula SELECT especifica los nombre de columna a recuperar: nombre de empleado, número de empleado y número de departamento, los cuales son columnas en la tabla EMP. número de departamento, nombre de departamento y localidad, los cuales son columnas en la tabla EMP. La claúsula FROM especifica las dos tablas a las que debe acceder la base de datos: Tabla EMP. Tabla DEPT. La claúsula WHERE especifica cómo se van a unir las tablas: EMP.DEPTNO=DEPT.DEPTNO Ya que la columna DEPTNO es igual en ambas tablas, ésta debe ir prefijada por el nombre de la tabla para evitar la ambigüedad.
  4. Alias de Tablas Calificar las tablas con los nombres de tabla puede llevar mucho tiempo, especialmente si los nombres son largos. Podemos utilizar alias de tablas en lugar de nombres de tablas. Así como los alias de columnas dan a una columna otro nombre, los alias de tablas dan a una tabla otro nombre. Los alias de tablas ayudan a mantener reducido el código SQL, utilizando por lo tanto menos memoria. Observar en el ejemplo cómo los alias de tablas se identifican en la claúsula FROM. El nombre de la tabla se especifica por completo, seguido de un espacio y después el alias de la tabla. A la tabla EMP se le ha dado un alias de E, mientras que la tabla DEPT tiene un alias de D. Guía de Escritura Los alias de tablas pueden tener más de 30 caracteres de longitud, pero es mejor que sean más cortos. Si se usa un alias para un nombre de tabla en particular en la claúsula FROM, entonces debe ser sustituída a través de toda la sentencia SELECT. Los alias de tablas deberían ser significativos. El alias de tabla es válido solo en la sentencia SELECT actual.
  5. Condiciones de Búsqueda Adicionales En ocasiones necesitaremos unir más de dos tablas. Por ejemplo, para visualizar el nombre, los pedidos realizados, los números de elementos, el total para cada elemento y el total de cada pedido para el cliente TKB SPORT SHOP, tendremos que unir las tablas CUSTOMER, ORD e ITEM. SQL&gt; SELECT c.name, o.ordid, i.itemid, i.itemtot, o.total 2 FROM customer c, ord o, item i 3 WHERE c.custid = o.custid 4 AND o.ordid = i.ordid 5 AND c.name = &apos;TKB SPORT SHOP&apos;; NAME ORDID ITEMID ITEMTOT TOTAL ------------ --------- --------- --------- --------- TKB SPORT SHOP 610 3 58 101.4 TKB SPORT SHOP 610 1 35 101.4 TKB SPORT SHOP 610 2 8.4 101.4
  6. Non-Equijoins La relación entre las tablas EMP y SALGRADE en un non-equijoin, lo cual significa que ninguna columna en la tabla EMP se corresponde directamente con una columna en la tabla SALGRADE. La relación entre las dos tablas es que la columna SAL en la tabla EMP está entre las columnas LOSAL y HISAL de la tabla SALGRADE. La relación se obtiene utilizando un operador distinto del igual (=).
  7. Non-Equijoins (continuación) El ejemplo de la parte superior, crea un non-equijoin para evaluar el grado de salario de un empleado. El salario debe estar entre cualquier par de los rangos de salario alto y bajo. Es importante observar que todos los empleados aparecen exactamente una vez cuando se ejecuta una consulta. Ningún empleado se repite en la lista. Hay dos razones para ésto: Ninguna de las filas en la tabla del grado del salario contiene grados que se solapen. Esto significa que el valor del salario de un empleado solo puede estar entre el salario más bajo y el más alto de una de las filas en la tabla del grado del salario. Todos los salarios de los empleados están dentro de los límites proporcionados por la tabla del grado del salario. Esto significa que ningún empleado gana menos del valor más bajo contenido en la columna LOSAL ni más del valor más alto contenido en la columna HISAL. Nota: Se pueden utilizar otro operadores como &lt;= y &gt;=, pero BETWEEN es el más simple. Al utilizar BETWEEN recordar especificar primero el valor más bajo y por último el valor más alto. Los alias de tablas se han especificado por cuestiones de rendimiento, no por ambigüedad.
  8. Devolución de Registros sin Coincidencias Directas con Outer Joins Si una fila no satisface una condición de join, no aparecerá en el resultado de la consulta. Por ejemplo, en la condición de equijoin de las tablas EMP y DEPT, el departamento OPERATIONS no aparece porque nadie trabaja es ese departamento. SQL&gt; SELECT e.ename, e.deptno, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno; ENAME DEPTNO DNAME ---------- --------- ------------- KING 10 ACCOUNTING BLAKE 30 SALES CLARK 10 ACCOUNTING JONES 20 RESEARCH ... ALLEN 30 SALES TURNER 30 SALES JAMES 30 SALES ... 14 rows selected.
  9. Devolución de Registros sin Coincidencias Directas con Outer Joins La(s) fila(s) que faltan pueden ser recuperadas si en la condición de join se uns un operador outer join. El operador es un signo más encerrado entre paréntesis (+) y se coloca en el “lado” del join que es deficiente en información. Este operador tiene el efecto de crear una o más filas NULL para que aquellas filas de la tabla sin valores conicidentes en la otra puedan ser combinadas. En la sintaxis: tabla1.columna = es la condición que combina ambas tablas tabla2.columna (+) es el símbolo de outer join, el cual se puede ubicar en cualquier lado de una condición de cláusula WHERE, pero no en ambos. Ubicar el símbolo dentrás del nombre de la tabla sin filas coincidentes.
  10. Devolución de Resgistros sin Coincidencias Directas on Outer Joins El ejemplo de arriba muestra los números y los nombres de todos los departamentos. El departamento OPERATIONS, que no tiene ningún empleado, también se visualiza. Restricciones Outer Join El operador outer join puede aparecer solo en un lado de la expresión: el lado al que le falta la información. Este recupera aquellas filas de una tabla que no tiene correspondencia directa en otra tabla. Una condición que incluye un outer join no puede utilizar el operador IN o unirse a otra condición por el operador OR.
  11. Combinación de una Tabla Consigo Misma En alguna ocasión necesitaremos combinar una tabla consigo misma. Para encontrar el nombre de cada jefe de empleado necesitamos combinar la tabla EMP consigo misma. Por ejemplo, para encontrar el nombre del jefe de Blake, necesitamos: Encontrar a Blake en la tabla EMP mirando en la columna ENAME. Encontrar el número de jefe de Blake mirando en la columna MGR. El número de jefe de Blake es 7839. Encontrar el nombre del jefe con EMPNO 7839 mirando en la columna ENAME. En número de empleado de King es 7839. Por lo tanto, King es el jefe de Blake. En este proceso, miramos dos veces en la tabla. La primera vez miramos en la tabla para encontrar a Blake en la columna ENAME y en MGR para encontrar el valor 7839. La segunda vez miramos en la columna EMPNO para encontrar 7839 y la columna ENAME para encontrar a King.
  12. Combinación de una Tabla Consigo Misma (continuación) El ejemplo de la parte superior, combina la tabla EMP consigo misma. Para simular dos tablas en la claúsula FROM, hay dos alias, WORKER y MANAGER, para la misma tabla, EMP. En este ejemplo, la claúsula WHERE contiene la combinación que significa “dónde un jefe de un trabajador coincide con el número de empleado para el jefe”.