CURSO SQL y PL-SQL 1
CURSO SQL y PL-SQL 1
CURSO SQL y PL-SQL 1
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente: Discutir los aspectos tericos y fsicos de las bases de datos relacionales. Describir la implementacin de Oracle como RDBMS y ORDBMS. Describir el papel de SQL en Oracle.
1-2
Objetivos
Describir el propsito de PL/SQL. Describir el usuario de PL/SQL para el desarrollador, as como para el administrador de la base de datos. Explicar los beneficios de PL/SQL.
1-3
Almacenamiento de Datos
SALGRADE
GRADE LOSAL HISAL --------- --------- --------DEPT 1 700 1200 DEPTNO DNAME LOC 2 1201 1400 --------- -------------- ---------3 1401 2000 10 ACCOUNTING NEW YORK 4 2001 3000 20 RESEARCH DALLAS 5 3001 9999 30 SALES CHICAGO 40 OPERATIONS BOSTON
Archivo
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
El Dr. E. F. Codd propuso el modelo relacional para sistemas de bases de datos en 1970. Constituye la base para el sistema manejador de bases de datos relacionales (RDBMS). El modelo relacional contiene los siguientes componentes:
BLAKE CLARK
JONES
MANAGER MANAGER
30
40
OPERATIONS
BOSTON
Modelos de Datos
Servidor
Tablas en Disco
1-7
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Modelo Entidad-Relacin
Escenario
Atributo Nombre singular en minsculas Si es obligatorio se marca con * Si es opcional se marca con "o"
asignado a
Identificador Unico (UID) Primario marcado con "(*)" Secundario marcado con "(#)"
1-9
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Atributo Nombre singular en minsculas Si es obligatorio se marca con * Si es opcional se marca con "o"
Identificador Unico (UID) Primario marcado con "(*)" Secundario marcado con "(#)"
1-10
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
3
MGR HIREDATE SAL
4
COMM DEPTNO ----------10 30 10 20 1400 300 30 30 30 30 500 30 20 20
------------- ------------ --------------------- -------- ---------------- ----------- -------------7839 KING 7698 BLAKE 7782 CLARK 7566 JONES 7654 MARTIN 7499 ALLEN PRESIDENT MANAGER MANAGER MANAGER SALESMAN SALESMAN 7839 7839 7839 7698 7698 7698 7698 7698 7566 7902 17-NOV-81 01-MAY-81 09-JUN-81 02-APR-81 28-SEP-81 20-FEB-81 08-SEP-81 03-DEC-81 22-FEB-81 03-DEC-81 17-DEC-80 5000 2850 2450 2975 1250 1600 1500 950 1250 3000 800
7844 TURNER SALESMAN 7900 JAMES 7521 WARD 7902 FORD 7369 SMITH CLERK SALESMAN ANALYST CLERK
7788
7876
SCOTT
ADAMS MILLER
ANALYST
CLERK CLERK
7566
7788 7782
09-DEC-82
12-JAN-83 23-JAN-82
3000
1100 1300
20
20 10
1
1-11
7934
Se puede relacionar informacin de mltiples tablas lgicamente usando claves forneas (Foreign Key: FK).
Nombre Tabla : DEPT
DEPTNO 10 20 30 40 DNAME ACCOUNTING RESEARCH SALES OPERATIONS LOC NEW YORK DALLAS CHICAGO BOSTON EMPNO DEPTNO 7839 10 7698 ENAME KING BLAKE JOB PRESIDENT MANAGER 30
7782 10 7566
CLARK
JONES
MANAGER
MANAGER 20
Primary Key
1-12
Foreign key
Primary key
Acceso y modificacin de objetos en la base de datos ejecutando comandos del Lenguaje de Consulta Estructurado (SQL). Contiene una coleccin de tablas sin punteros lgicos.
1-13
B.D.
Resultado
LOC ------------NEW YORK DALLAS CHICAGO BOSTON
1-14
Tablas de Usuario
1-15
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Diccionario de Datos
1-16
Definicin de un Objecto
Un objeto:
1-17
Clientes
1-18
Negocio
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
SQL
PL/SQL
SQL* Plus
Oracle7/8
B.D.
1-20
Comandos SQL
SELECT INSERT UPDATE DELETE CREATE ALTER DROP RENAME TRUNCATE COMMIT ROLLBACK SAVEPOINT GRANT REVOKE
1-21
Recuperacin de Datos
Control de Transacciones
Qu es PL/SQL?
PL/SQL es una extensin de SQL con caractersticas de los lenguajes de prog. Sentencias de manipulacin y consulta de datos, se incluyen sin tener que desarrollar programas.
1-22
Entorno de PL/SQL
Motor PL/SQL Bloque PL/SQL Bloque PL/SQL PL/SQL SQL Ejecutor de Sentencias Procedurales
1-23
Beneficios de PL/SQL
Integracin
Aplicacin
Librera Compartida
1-24
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Servidor Oracle8
Beneficios de PL/SQL
Mejora del Rendimiento
SQL SQL SQL SQL
Aplicacin
Otros DBMSs
Aplicacin
1-25
Beneficios de PL/SQL
Modularizacin
Bloque Annimo
Proc./Func. Almacenada
DECLARE
Trigger de Aplicacin
BEGIN EXCEPTION
Proc./Func. de la Aplicacin
Trigger de B.D.
END;
Procedimiento Empaquetado
1-26
Beneficios de PL/SQL
Es portable. Puede declarar identificadores. Puede programar con las estructuras de control de un lenguaje procedural. Puede manejar errores.
1-27
Beneficios de PL/SQL
Es portable. Puede declarar identificadores. Puede programar con las estructuras de control de un lenguaje procedural. Puede manejar errores.
1-28
1400 300 0
DEPT
DEPTNO --------10 20 30 40
7521 DNAMEWARD 7902 FORD -------------7369 SMITH ACCOUNTING 7788 SCOTT RESEARCH 7876 SALESADAMS 7934 MILLER OPERATIONS
SALESMAN LOC ANALYST ---------CLERK NEW YORK ANALYST DALLAS CLERK CHICAGO CLERK BOSTON
1250 500 30 SALGRADE 3000 20 800 20 GRADE LOSAL HISAL 3000 --------- --------20 --------1100 1 20 700 1200 1300 2 10 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999
1-29
Resumen
Las B.D. Relacionales:
Compuestas de Relaciones.
integridad de datos. Oracle8 est basado en un ORDBMS Object Relational Database Management System. Oracle8 permite almacenar y gestionar informacin por medio de SQL y PL/SQL.
1-30
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente: Enumerar las posibilidades de una sentencia SELECT de SQL Ejecutar una sentencia bsica SELECT Diferenciar entre sentencias SQL y comandos de SQL*PLUS
1-32
Tabla 1
Join
Tabla 1
Tabla 1
1-33
Tabla 2
1-34
1-35
1-36
1-37
1-38
Expresiones Aritmticas
Crear expresiones sobre tipos de datos NUMERICOS y FECHAS usando operadores.
Operador + Descripcin Suma Resta
*
/
Multiplicacin
Divisin
1-39
1-40
Precedencia de Operadores
* / +
1-41
Precedencia de Operadores
SQL> SELECT ename, sal, 12*sal+100 2 FROM emp; ENAME SAL 12*SAL+100 ---------- --------- ---------KING 5000 60100 BLAKE 2850 34300 CLARK 2450 29500 JONES 2975 35800 MARTIN 1250 15100 ALLEN 1600 19300 ... 14 rows selected.
1-42
Uso de Parntesis
SQL> SELECT ename, sal, 12*(sal+100) 2 FROM emp; ENAME SAL 12*(SAL+100) ---------- --------- ----------KING 5000 61200 BLAKE 2850 35400 CLARK 2450 30600 JONES 2975 36900 MARTIN 1250 16200 ... 14 rows selected.
1-43
ENAME JOB COMM ---------- --------- --------KING PRESIDENT BLAKE MANAGER ... TURNER SALESMAN 0 ... 14 rows selected.
1-44
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-45
Se requiere encerrar un alias entre comillas dobles si contiene espacios en blanco, caracteres especiales o es case sensitive.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-46
...
1-47
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Operador de Concatenacin
El operador de concatenacin:
Esta representado por dos barras verticales (||). Vincula columnas o cadenas de caracteres con otras columnas. Crea una columna resultado que es una expresin de tipo caracter.
1-48
Employees ------------------KINGPRESIDENT BLAKEMANAGER CLARKMANAGER JONESMANAGER MARTINSALESMAN ALLENSALESMAN ... 14 rows selected.
1-49
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Cadenas de Caracteres
Un literal es un caracter, expresin o nmero incluido en la lista de la clusula SELECT. Los valores literales de tipo fecha y caracter deben estar encerrados dentro de comillas simples. Por cada fila devuelta se genera una cadena de caracteres.
1-50
1-51
Filas Duplicadas
Las consultas, por defecto, muestran todas las filas incluyendo las duplicadas.
SQL> SELECT deptno 2 FROM emp;
1-52
DEPTNO --------10 20 30
1-53
Servidor
SQL*Plus
Resultado de la Consulta
Bfer
Scripts SQL
1-54
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Sentencias SQL
1-55
Bfer SQL
Comandos SQL*Plus
SQL*Plus buffer
Generalidades de SQL*Plus
1-56
Conectarse al SQL*Plus. Describir la estructura de las tablas. Ejecutar SQL desde SQL*Plus. Editar la sentencia SQL. Guardar las sentencias SQL en archivos. Ejecutar los archivos guardados. Cargar los comandos desde el archivo al bfer para editarlos.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Conexin a SQL*Plus
Desde un entorno Windows:
1-58
1-59
L[IST] m n
R[UN] n
n text
0 text
1-61
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
EDIT filename
SPOOL filename EXIT
1-62
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Resumen
SELECT FROM [DISTINCT] {*,column[alias],...} table;
Use Sql*Plus como un entorno, para: Ejecutar sentencias SQL Editar sentencias SQL
1-63
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente: Limitar los registros recuperados por una consulta Clasificar los registros recuperados por una consulta
1-65
EMP
EMP
EMPNO ENAME JOB ... DEPTNO 10 10 10
1-66
1-67
1-68
Las cadenas de caracteres o las fechas se encierran entre comillas simples. maysculas/minsculas y los valores de tipo fecha son sensibles al formato.
1-69
Operadores de Comparacin
Operador
= > >= < <= <>
Significado
Igual a Mayor que Mayor que o igual a Menor que Menor que o igual a No igual a
1-70
1-71
1-72
ENAME SAL ---------- --------MARTIN 1250 TURNER 1500 WARD 1250 ADAMS 1100 MILLER 1300
Lower limit
Higher limit
1-73
ENAME SAL MGR ---------- --------- --------FORD 3000 7566 SMITH 800 7902 SCOTT 3000 7566 ADAMS 1100 7788
1-74
1-75
1-77
Operadores Lgicos
Operador AND OR Significado Devuelve TRUE si ambas condiciones son TRUE Devuelve TRUE si alguna de las condiciones es TRUE Devuelve TRUE si la siguiente condicin es FALSE
NOT
1-78
1-79
EMPNO ENAME JOB SAL --------- ---------- --------- --------7839 7698 7782 7566 7654 KING BLAKE CLARK JONES MARTIN PRESIDENT MANAGER MANAGER MANAGER SALESMAN 5000 2850 2450 2975 1250
1-81
Reglas de Precedencia
Orden Evaluado 1 2 3 4 Operador Todos los Operadores de Comparacin NOT AND OR
Reglas de Precedencia
SQL> 2 3 4 5 SELECT FROM WHERE OR AND ename, job, sal emp job='SALESMAN' job='PRESIDENT' sal>1500;
JOB SAL --------- --------PRESIDENT 5000 SALESMAN 1250 SALESMAN 1600 SALESMAN 1500 SALESMAN 1250
1-83
Reglas de Precedencia
Uso de parntesis para forzar prioridad.
SQL> 2 3 4 5 SELECT FROM WHERE OR AND ename, job, sal emp (job='SALESMAN' job='PRESIDENT') sal>1500;
1-84
La Clasula ORDER BY
Ordenar filas con la clusula ORDER BY.
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.
1-85
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
SQL> SELECT ename, job, deptno, hiredate 2 FROM emp 3 ORDER BY hiredate DESC; ENAME JOB DEPTNO HIREDATE ---------- --------- --------- --------ADAMS CLERK 20 12-JAN-83 SCOTT ANALYST 20 09-DEC-82 MILLER CLERK 10 23-JAN-82 JAMES CLERK 30 03-DEC-81 FORD ANALYST 20 03-DEC-81 KING PRESIDENT 10 17-NOV-81 MARTIN SALESMAN 30 28-SEP-81 ... 14 rows selected.
1-86
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
SQL> SELECT empno, ename, sal*12 annsal 2 FROM emp 3 ORDER BY annsal; EMPNO ENAME ANNSAL --------- ---------- --------7369 SMITH 9600 7900 JAMES 11400 7876 ADAMS 13200 7654 MARTIN 15000 7521 WARD 15000 7934 MILLER 15600 7844 TURNER 18000 ... 14 rows selected.
1-87
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Resumen
SELECT FROM [WHERE [ORDER BY [DISTINCT] {*, column [alias], ...} table condition(s)] {column, expr, alias} [ASC|DESC]];
1-89
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente:
Explicar los diversos tipos de funciones disponibles en SQL. Incluir una variedad de funciones de caracteres, numricas y de datos en sentencias SELECT. Explicar las funciones de conversin y la manera en que podran ser usadas.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-91
Funciones SQL
Entrada arg 1 Salida
arg 2
Valor Resultado
arg n
1-92
Funciones
1-93
Manipulan tems de datos. Aceptan argumentos y devuelven un valor. Actan sobre cada fila retornada. Devuelven un resultado por fila. Modifican el tipo de datos. Pueden estar anidadas.
Sintaxis:
function_name (column|expression, [arg1, arg2,...])
1-94
General
Single-row functions
Number
Conversion
Date
1-95
Funciones de Caracteres
Funciones de Caracteres
UPPER INITCAP
1-96
Funciones de Conversin
Conversin de cadenas de caracteres
Funcin LOWER('Curso SQL') UPPER ('Curso SQL') INITCAP('Curso SQL') Resultado curso sql
CURSO SQL
Curso Sql
1-97
LENGTH('String')
INSTR('String', 'r') LPAD(sal,10,'*')
1-99
1-100
Funciones Numricas
ROUND: Redondea un valor al decimal especificado
ROUND(45.926, 2) TRUNC: decimal especificado MOD:
1-101
45.93
Trunca un valor en el
TRUNC(45.926, 2)
45.92
Devuelve el resto de la
1-102
1-103
ENAME SAL COMM MOD(SAL,COMM) ---------- --------- --------- ------------MARTIN 1250 1400 1250 ALLEN 1600 300 100 TURNER 1500 0 1500 WARD 1250 500 250
1-104
El formato de fecha por defecto es DD-MON-YY. SYSDATE es una funcin que devuelve fecha y hora. DUAL es una tabla virtual de la Base de Datos, que puede ser usada para inspeccionar SYSDATE.
1-105
1-106
1-107
Funciones de Fecha
FUNCION MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY ROUND TRUNC DESCRIPCION Nmero de meses entre dos fechas Agregar meses segn calendario, a una fecha Prximo da de la fecha especificada Ultimo da del mes Redondea una fecha Trunca una fecha
1-108
ADD_MONTHS ('11-JAN-94',6)
'11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY')
'08-SEP-95'
LAST_DAY('01-SEP-95')
1-109
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
'30-SEP-95'
ROUND('25-JUL-95','MONTH')
01-AUG-95
1-110
Funciones de Conversin
Conversin de Tipos de Datos
Conversin Implcita
Conversin Explcita
1-111
VARCHAR2 o CHAR
VARCHAR2 o CHAR
NUMBER
DATE
NUMBER
DATE
1-112
VARCHAR2
VARCHAR2
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
VARCHAR2 o CHAR
VARCHAR2 o CHAR
NUMBER
DATE
1-113
NUMBER
CHARACTER
DATE
TO_CHAR
TO_CHAR
1-114
El formato:
1-115
Debe estar encerrado entre comillas simples y es sensible a maysculas/minsculas. Puede incluir cualquier elemento de formato de fecha vlido. Tiene un elemento fm (fill mode) para eliminar espacios en blanco de relleno o suprimir ceros a la izquierda. Est separado de la fecha por una coma.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Ao completo en nmero Ao en letras N del mes con dos dgitos Nombre completo del mes
HH24:MI:SS AM
DD "of" MONTH 12 of OCTOBER Sufijo que permita obtener el n del da en letra. ddspth fourteenth
1-117
Formato de Fecha RR
Ao Actual 1995 1995 2001 2001
0-49
La fecha devuelta corresponde al siglo corriente. La fecha devuelta corresponde al siglo posterior al corriente.
50-99
1-118
1-119
Use estos formatos con la funcin TO_CHAR para mostrar un carcter como un nmero.
9 0 Representa un nmero Fuerza a que se muestre el 0 (cero)
$
L . ,
1-120
SALARY -------$3,000
1-121
1-122
NVL Function
Convierte un nulo a un valor. Los tipos de datos pueden ser de fecha, cadenas de caracteres y nmeros. Los tipos de datos deben coincidir:
NVL(comm,0)
NVL(hiredate,'01-JAN-97') NVL(job,'No Job Yet')
1-123
1-124
La Funcin DECODE
Hace las veces de sentecias CASE o IF-THEN-ELSE, para facilitar consultas condicionales.
DECODE(col/expression, search1, result1 [, search2, result2,...,] [, default])
1-125
Anudamiento de Funciones
Las funciones a nivel de fila pueden ser anidadas hasta cualquier nivel. Las funciones anidadas son evaluadas desde el nivel ms profundo al nivel menos profundo.
F3(F2(F1(col,arg1),arg2),arg3)
Paso 1 = Resultado 1 Paso 2 = Resultado 2 Paso 3 = Resultado 3
1-127
Funciones Anidadas
SQL> SELECT 2 3 FROM 4 WHERE ename, NVL(TO_CHAR(mgr),'No Manager') emp mgr IS NULL;
1-128
Resumen
Use funciones para: Realizar cculos sobre los datos Modificar datos de forma individual Manipular la salida de grupos de registros Alterar formatos de fecha en su visualizacin
1-130
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente:
Escribir sentencias SELECT para acceder a los datos desde una o ms tablas usando equality y non-equality joins (combinaciones por igualdad y por desigualdad). Visualizar datos que no se cumpliran normalmente con una condicin de join usando outer joins (uniones externas). Combinar (Join) una tabla consigo misma.
1-132
DEPT
DEPTNO -----10 20 30 40 DNAME ---------ACCOUNTING RESEARCH SALES OPERATIONS LOC -------NEW YORK DALLAS CHICAGO BOSTON
MILLER ...
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.
1-133
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Qu es un JOIN?
Use un join para consultar datos de ms de una tabla.
SELECT FROM WHERE table.column, table.column table1, table2 table1.column1 = table2.column2;
Escriba la condicin de join en la clasula WHERE. Preceda el nombre de la columna con el de la tabla, cuando el mismo nombre de columna, aparezca en ms de una tabla.
1-134
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Producto Cartesiano
Se omite una condicin de join. Se define una condicin de join invlida. Se combinan todas las filas de la primer
tabla con todas las filas de la segunda.
1-135
Generacin de un Producto EMP (14 registros) DEPT (4 registros) Cartesiano EMPNO ENAME ... DEPTNO DEPTNO DNAME LOC
-----7839 7698 ... 7934 ----KING BLAKE ... -----... 10 ... 30
10 MILLER ... -----10 20 30 40 ---------ACCOUNTING RESEARCH SALES OPERATIONS -------NEW YORK DALLAS CHICAGO BOSTON
ENAME DNAME --------------KING ACCOUNTING BLAKE ACCOUNTING ... KING RESEARCH BLAKE RESEARCH ... 56 rows selected.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-136
Tipos de Join
Equijoin Non-equijoin Outer join Self join
1-137
Qu es un Equijoin?
EMP
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.
DEPT
DEPTNO ------10 30 10 20 30 30 30 30 30 20 20 ... 14 rows DNAME ---------ACCOUNTING SALES ACCOUNTING RESEARCH SALES SALES SALES SALES SALES RESEARCH RESEARCH selected. LOC -------NEW YORK CHICAGO NEW YORK DALLAS CHICAGO CHICAGO CHICAGO CHICAGO CHICAGO DALLAS DALLAS
Primary key
1-138
Foreign key
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.
1-139
Distinguir columnas que tienen nombres idnticos pero pertenecen a diferentes tablas usando alias de columnas.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-140
LOC -------NEW YORK CHICAGO NEW YORK DALLAS CHICAGO CHICAGO CHICAGO CHICAGO CHICAGO DALLAS DALLAS
1-141
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;
1-142
ORD
CUSTID ORDID ------- ------101 610 102 611 104 612 106 601 102 602 ITEM 106 604 ORDID ITEMID 106 605 ------ ------... 610 3 21 rows selected. 611 1 612 1 601 1 602 1 ... 64 rows selected.
1-143
Non-Equijoins
EMP
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.
SALGRADE
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 ms bajo y el salario ms alto de la tabla SALGRADE
1-144
ENAME SAL GRADE ---------- --------- --------JAMES 950 1 SMITH 800 1 ADAMS 1100 1 ... 14 rows selected.
1-145
Outer Joins
EMP
ENAME ----KING BLAKE CLARK JONES ... DEPTNO -----10 30 10 20
DEPT
DEPTNO -----10 30 10 20 ... 40 DNAME ---------ACCOUNTING SALES ACCOUNTING RESEARCH OPERATIONS
1-146
Outer Joins
Usar Outer Join para ver las filas que no cumplen la condicin de join. El operador de un Outer Join es el signo ms (+).
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(+);
1-147
ENAME DEPTNO DNAME ---------- --------- ------------KING 10 ACCOUNTING CLARK 10 ACCOUNTING ... 40 OPERATIONS 15 rows selected.
1-148
Self Joins
EMP (WORKER)
EMPNO ----7839 7698 7782 7566 7654 7499 ENAME -----KING BLAKE CLARK JONES MARTIN ALLEN MGR ---7839 7839 7839 7698 7698
EMP (MANAGER)
EMPNO ENAME ----- -------7839 7839 7839 7698 7698 KING KING KING BLAKE BLAKE
1-150
Resumen
SELECT FROM WHERE table.column, table.column table1, table2 table1.column1 = table2.column2;
1-151
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente:
Identificar las funciones de grupo disponibles. Explicar el uso de las funciones de grupo. Mostrar estadsticas para diferentes grupos usando la clusula GROUP BY. Incluir o excluir filas agrupadas usando la clusula HAVING.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-153
Qu son las Funciones de Las Funciones de Grupo operan sobre conjuntos de Grupo? registros para dar un resultado a nivel de grupo.
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
1-154
MAX(SAL) --------5000
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------1400 1600 1250 5600
1-157
1-158
1-159
1-160
AVG(COMM) --------550
1-161
AVG(NVL(COMM,0)) ---------------157.14286
1-162
2916.6667
media de DEPTNO AVG(SAL) salarios ------- --------en EMP 2175 10 2916.6667 para cada 20 2175 departamento 30 1566.6667
1566.6667
Divide los registros de una tabla en grupos ms pequeos, por medio de GROUP BY.
1-164
1-166
EMP
DEPTNO --------10 10 10 20 20 20 20 20 30 30 30 30 30 30
1-167
JOB SUM(SAL) --------- --------CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600
DEPTNO JOB SUM(SAL) --------- --------- --------10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900 ... 9 rows selected.
1-168
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
SELECT deptno, COUNT(ename) * ERROR at line 1: ORA-00937: not a single-group group function
1-169
WHERE AVG(sal) > 2000 * ERROR at line 3: ORA-00934: group function is not allowed here
1-170
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
2850
1-171
Exclusin de Resultados de un Grupo: Clusula HAVING Use la clusula HAVING para restringir grupos:
Los registros son agrupados. Se aplica la funcin de grupo. Los grupos que se corresponden con la
1-173
1-174
MAX(AVG(SAL)) ------------2916.6667
1-175
Resumen
SELECT FROM [WHERE [GROUP BY [HAVING [ORDER BY column, group_function table condition] group_by_expression] group_condition] column];
1-176
Subconsultas
Objetivos
Al completar esta leccin, debera ser capaz de hacer lo siguiente: Describir los tipos de problemas que las subconsultas pueden resolver. Definir subconsultas. Enumerar los tipos de subconsultas. Escribir subconsultas que afecten a un solo registro, o a ms de uno.
1-178
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-179
Subconsultas
SELECT FROM WHERE select_list table expr operator (SELECT FROM
select_list table);
La subconsulta se ejecuta una vez y antes de la consulta principal. El resultado de la subconsulta es usado por la consulta principal externa.
1-180
1-181
Tipos de Subconsultas
Subconsulta mono-registro
Cons. Principal devuelve
Subquery
CLERK
Subconsulta multi-registro
Cons. Principal devuelve Subquery
CLERK MANAGER
Subconsulta multi-columna
Cons. Principal devuelve Subquery
1-183
Subconsultas Mono-registro
Devuelven un nico registro. Se utilizan operadores de comparacin.
Operador = > >= < <= <>
1-184
Significado Igual a Mayor que Mayor que o igual a Menor que Menor que o igual a No igual a
AND
1-185
MIN(sal) emp);
1-186
El Servidor Oracle8 ejecuta primero las subconsultas. El Servidor Oracle8 devuelve el resultado a la clusula HAVING de la consulta principal.
SQL> 2 3 4 5 6 7
1-187
800
ERROR: ORA-01427: single-row subquery returns more than one row no rows selected
1-188
no rows selected
1-189
Subconsultas Multi-registro
Devuelven ms de un registro. Use comparadores multi-registro.
Operador IN Significado Igual a los valores de cierta lista
ANY
ALL
1-190
AND
1-191
empno, ename, job 2175 emp 2916.6667 sal > ALL (SELECT FROM GROUP BY
JOB --------PRESIDENT MANAGER ANALYST ANALYST
1566.6667
1-192
Resumen
Las Subconsulas resultan muy tiles cuando una consulta esta basada en valores que no conocemos.
SELECT FROM WHERE select_list table expr operator (SELECT select_list FROM table);
1-193