Académique Documents
Professionnel Documents
Culture Documents
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
SALGRADE
DEPTNO
DEPTNO
----------------YORK
YORK
20
20
30
30
40
40
GRADE
LOSAL
HISAL
GRADE
LOSAL
HISAL
----------------- ----------------- ----------------DEPT
DEPT
11
700
1200
700
1200
DNAME
LOC
DNAME
LOC
22
1201
1400
1201
1400
--------------------------- ------------------33
1401
2000
1401
2000
10
NEW
10 ACCOUNTING
ACCOUNTING
NEW
44
2001
3000
2001
3000
55
3001
9999
3001
9999
RESEARCH
DALLAS
RESEARCH
DALLAS
SALES
CHICAGO
SALES
CHICAGO
OPERATIONS
BOSTON
OPERATIONS
BOSTON
Base de
Datos
Hoja de
Clculo
1-4
Archivo
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
1-5
1-6
ENAME
ENAME
KING
KING
BLAKE
BLAKE
CLARK
CLARK
JONES
JONES
JOB
JOB
PRESIDENT
PRESIDENT
MANAGER
MANAGER
MANAGER
MANAGER
MANAGER
MANAGER
DEPTNO
DEPTNO
10
10
30
30
10
10
20
20
DNAME
DNAME
ACCOUNTING
ACCOUNTING
RESEARCH
RESEARCH
SALES
SALES
OPERATIONS
OPERATIONS
LOC
LOC
NEW
NEW YORK
YORK
DALLAS
DALLAS
CHICAGO
CHICAGO
BOSTON
BOSTON
Modelos de Datos
Modelo del
Sistema
que el cliente
tiene en mente
Modelo de
Entidades
a partir del modelo
del cliente
Servidor
Tablas en Disco
1-7
Modelo Entidad-Relacin
CUSTOMER
#* id
*
name
o phone
Escenario
asignado a
es
representante
de ventas
para
EMPLOYEE
#* id
*
last name
o first name
CUSTOMER
#* id
*
name
o phone
Atributo
Nombre singular en minsculas
Si es obligatorio se marca con *
Si es opcional se marca con "o"
EMPLOYEE
#* id
last name
es representante *
de ventas para o first name
asignado a
EMPLOYEE
EMPLOYEE
#*
number
#*
number
**
name
name
oo
job
job title
title
Atributo
Nombre singular en minsculas
Si es obligatorio se marca con *
Si es opcional se marca con "o"
DEPARTMENT
DEPARTMENT
#*
number
#*
number
**
name
name
oo
location
location
EMPNO ENAME
JOB
4
MGR
HIREDATE
SAL
COMM DEPTNO
1
1-11
7839 KING
PRESIDENT
7698 BLAKE
MANAGER
7782 CLARK
-----------
17-NOV-81
5000
10
7839
01-MAY-81
2850
30
MANAGER
7839
09-JUN-81
2450
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
7698
08-SEP-81
1500
30
7900 JAMES
CLERK
7698
03-DEC-81
950
7521 WARD
SALESMAN
7698
22-FEB-81
1250
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
30
500
30
ENAME
KING
BLAKE
CLARK
JONES
Primary Key
1-12
JOB
PRESIDENT
MANAGER
MANAGER
MANAGER
DEPTNO
10
30
10
20
Foreign key
DEPTNO
10
20
30
40
DNAME
ACCOUNTING
RESEARCH
SALES
OPERATIONS
Primary key
LOC
NEW YORK
DALLAS
CHICAGO
BOSTON
1-13
La Sentencia se
enva a la B.D.
B.D.
Resultado
LOC
LOC
------------------------NEW
NEW YORK
YORK
DALLAS
DALLAS
CHICAGO
CHICAGO
BOSTON
BOSTON
1-14
Tablas de
Usuario
1-15
Diccionario
de Datos
1-16
Definicin de un Objecto
Un objeto:
Es una persona, lugar o cosa.
Sabe cosas sobre si mismo y realiza
acciones.
Tiene una identidad.
1-17
Clientes
1-18
Negocio
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
SQL
SQL
Oracle7/8
Oracle
Oracle Developer
Developer
O.
O. Discoverer
Discoverer
Oracle
Oracle Designer
Designer
PL/SQL
PL/SQL
B.D.
SQL*
SQL* Plus
Plus
Diccionario
de Datos
Tablas de Datos
1-20
Comandos SQL
SELECT
Recuperacin de Datos
INSERT
UPDATE
DELETE
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMIT
ROLLBACK
SAVEPOINT
GRANT
REVOKE
1-21
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
Servidor
Oracle8
Beneficios de PL/SQL
Mejora del Rendimiento
SQL
Aplicacin
Aplicacin
SQL
SQL
Otros
Otros DBMSs
DBMSs
SQL
Aplicacin
Aplicacin
1-25
SQL
IF...THEN
SQL
ELSE
SQL
END IF;
SQL
Oracle
Oracle con
con
PL/SQL
PL/SQL
Beneficios de PL/SQL
Modularizacin
Bloque
Bloque
Annimo
Annimo
Trigger
Trigger de
de
Aplicacin
Aplicacin
DECLARE
BEGIN
EXCEPTION
Trigger
Trigger de
de
B.D.
B.D.
1-26
END;
Proc./Func.
Proc./Func.
Almacenada
Almacenada
Proc./Func.
Proc./Func.
de
de la
la
Aplicacin
Aplicacin
Procedimiento
Procedimiento
Empaquetado
Empaquetado
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
1-29
HIREDATE
SAL
COMM
DEPTNO
HIREDATE
SAL
COMM
DEPTNO
----------------- ----------------- ----------------- ----------------17-NOV-81
5000
10
17-NOV-81
5000
10
01-MAY-81
2850
30
01-MAY-81
2850
30
09-JUN-81
1500
10
09-JUN-81
1500
10
02-APR-81
2975
20
02-APR-81
2975
20
28-SEP-81
1250
1400
30
28-SEP-81
1250
1400
30
20-FEB-81
1600
300
30
20-FEB-81
1600
300
30
08-SEP-81
1500
00
30
08-SEP-81
1500
30
03-DEC-81
950
30
03-DEC-81
950
30
22-FEB-81
1250
500
30
22-FEB-81
1250
500
30
03-DEC-81
3000
20
03-DEC-81 SALGRADE
3000
20
17-DEC-80
800
20
17-DEC-80
800
20
GRADE
LOSAL
HISAL
GRADE
LOSAL
HISAL
09-DEC-82
3000
20
09-DEC-82 --------3000 --------20
----------------- ----------------12-JAN-83
1100
20
12-JAN-83
1100 11
20
700
1200
700
1200
23-JAN-82
1300
10
23-JAN-82
1300 22
10
1201
1400
1201
1400
33
1401
2000
1401
2000
44
2001
3000
2001
3000
55
3001
9999
3001
9999
Resumen
Las B.D. Relacionales:
Compuestas de Relaciones.
Gestionadas por operadores relacionales.
Gobernadas por restricciones de 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
Escritura Bsica de
Sentencias SQL
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
Projeccin
Tabla 1
Tabla 1
Tabla 1
1-33
Join
Tabla 2
1-34
[DISTINCT]
[DISTINCT] {*,
{*, column
column [alias],...}
[alias],...}
table;
table;
1-35
1-36
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
1-37
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
1-38
Expresiones Aritmticas
Crear expresiones sobre tipos de datos
NUMERICOS y FECHAS usando operadores.
Operador
1-39
Descripcin
Suma
Resta
Multiplicacin
Divisin
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
SQL> SELECT
2 FROM
ENAME
JOB
COMM
---------- --------- --------KING
PRESIDENT
BLAKE
MANAGER
...
TURNER
SALESMAN
0
...
14 rows selected.
1-44
Valores NULL en
Expresiones Aritmticas
Las expresiones aritmticas que
contengan un Null se evaluan a Null.
SQL> select ename NAME, 12*sal+comm
2 from
emp
3 WHERE ename='KING';
NAME
12*SAL+COMM
---------- ----------KING
1-45
1-46
Operador de Concatenacin
El operador de concatenacin:
1-48
Uso del
Operador de Concatenacin
SQL> SELECT
2 FROM
ename||job AS "Employees"
emp;
Employees
------------------KINGPRESIDENT
BLAKEMANAGER
CLARKMANAGER
JONESMANAGER
MARTINSALESMAN
ALLENSALESMAN
...
14 rows selected.
1-49
Cadenas de Caracteres
Un literal es un caracter, expresin o
nmero incluido en la lista de la
clusula SELECT.
1-50
1-51
Filas Duplicadas
Las consultas, por defecto, muestran
todas las filas incluyendo las duplicadas.
SQL>
SQL>
22
SELECT
SELECT
FROM
FROM
deptno
deptno
emp;
emp;
DEPTNO
--------10
30
10
20
...
14 rows selected.
1-52
DEPTNO
--------10
20
30
1-53
Servidor
SQL*Plus
Resultado de la Consulta
Bfer
Scripts
SQL
1-54
Bfer
SQL
SQL*Plus
Un entorno
Propio de ORACLE
Las palabras clave s
pueden abreviarse
Los comandos no
pueden manipular
valores en la B.D.
Comandos
SQL*Plus
SQL*Plus
buffer
Generalidades de SQL*Plus
Conectarse al SQL*Plus.
1-56
Conexin a SQL*Plus
Desde un entorno Windows:
Visualizacin de la Estructura
de una Tabla
Use el comando DESCRIBE de SQL*Plus
para visualizar la estructura de una tabla.
DESC[RIBE]
DESC[RIBE] tablename
tablename
1-58
Visualizacin de la Estructura
de una Tabla
SQL>
SQL> DESCRIBE
DESCRIBE dept
dept
Name
Name
--------------------------------DEPTNO
DEPTNO
DNAME
DNAME
LOC
LOC
1-59
Null?
Null?
--------------NOT
NOT NULL
NULL
Type
Type
------NUMBER(2)
NUMBER(2)
VARCHAR2(14)
VARCHAR2(14)
VARCHAR2(13)
VARCHAR2(13)
Comandos de Ficheros
SQL*Plus
SAVE filename
GET filename
START filename
@ filename
EDIT filename
SPOOL filename
EXIT
1-62
Resumen
SELECT
SELECT
FROM
FROM
[DISTINCT]
[DISTINCT] {*,column[alias],...}
{*,column[alias],...}
table;
table;
1-63
Restriccin y Clasificacin
de los Datos
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
EMPNO ENAME
7839
7698
7782
7566
...
KING
BLAKE
CLARK
JONES
JOB
...
DEPTNO
PRESIDENT
MANAGER
MANAGER
MANAGER
10
30
10
20
recupera todos
los empleados del
departamento 10
EMP
EMPNO ENAME
JOB
7839 KING
PRESIDENT
7782 CLARK MANAGER
7934 MILLER CLERK
1-66
...
DEPTNO
10
10
10
1-67
ENAME
---------JAMES
SMITH
ADAMS
MILLER
1-68
JOB
DEPTNO
--------- --------CLERK
30
CLERK
20
CLERK
20
CLERK
10
Cadenas de Caracteres y
Fechas
Las cadenas de caracteres o las fechas se
encierran entre comillas simples.
1-69
SELECT
SELECT
FROM
FROM
WHERE
WHERE
ename,
ename, job,
job, deptno
deptno
emp
emp
ename
ename == 'JAMES';
'JAMES';
Operadores de Comparacin
Operador
1-70
Significado
Igual a
>
Mayor que
>=
<
Menor que
<=
<>
No igual a
Uso de Operadores de
Comparacin
SQL> SELECT ename, sal, comm
2 FROM
emp
3 WHERE sal<=comm;
ENAME
SAL
COMM
---------- --------- --------MARTIN
1250
1400
1-71
Otros Operadores de
Comparacin
1-72
Operador
Significado
BETWEEN
...AND...
IN(list)
Lista de valores
LIKE
Se ajusta a un patrn
IS NULL
Es un valor nulo
ename, sal
emp
sal BETWEEN 1000 AND 1500;
ENAME
SAL
---------- --------MARTIN
1250
TURNER
1500
WARD
1250
ADAMS
1100
MILLER
1300
1-73
Lower
limit
Higher
limit
EMPNO
--------7902
7369
7788
7876
1-74
ENAME
SAL
MGR
---------- --------- --------FORD
3000
7566
SMITH
800
7902
SCOTT
3000
7566
ADAMS
1100
7788
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
ename
emp
ename LIKE 'S%';
ename
emp
ename LIKE '_A%';
ENAME
---------JAMES
WARD
ename, mgr
emp
mgr IS NULL;
ENAME
MGR
---------- --------KING
1-77
Operadores Lgicos
1-78
Operador
Significado
AND
OR
NOT
SELECT
FROM
WHERE
AND
EMPNO
--------7876
7934
1-79
ENAME
---------ADAMS
MILLER
JOB
SAL
--------- --------CLERK
1100
CLERK
1300
SELECT
FROM
WHERE
OR
EMPNO ENAME
JOB
SAL
--------- ---------- --------- --------7839
7698
7782
7566
7654
KING
BLAKE
CLARK
JONES
MARTIN
PRESIDENT
MANAGER
MANAGER
MANAGER
SALESMAN
5000
2850
2450
2975
1250
...
14 rows selected.
1-80
ENAME
---------KING
MARTIN
ALLEN
TURNER
WARD
1-81
JOB
--------PRESIDENT
SALESMAN
SALESMAN
SALESMAN
SALESMAN
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
ENAME
------------------KING
KING
MARTIN
MARTIN
ALLEN
ALLEN
TURNER
TURNER
WARD
WARD
1-83
JOB
SAL
JOB
SAL
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1250
SALESMAN
1250
SALESMAN
1600
SALESMAN
1600
SALESMAN
1500
SALESMAN
1500
SALESMAN
1250
SALESMAN
1250
Reglas de Precedencia
Uso de parntesis para forzar prioridad.
SQL>
2
3
4
5
SELECT
FROM
WHERE
OR
AND
ENAME
ENAME
------------------KING
KING
ALLEN
ALLEN
1-84
JOB
SAL
JOB
SAL
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1600
SALESMAN
1600
La Clasula ORDER BY
Ordenar filas con la clusula ORDER BY.
Clasificacin en Orden
Descendente
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
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
Resumen
SELECT
FROM
[WHERE
[ORDER BY
1-89
Objetivos
Al completar esta leccin, debera ser
capaz de hacer lo siguiente:
1-91
Funciones SQL
Entrada
Salida
Funcin
arg 1
arg 2
Las Funciones
Realizan
Acciones
Valor
Resultado
arg n
1-92
Funciones
Funciones a
Nivel de Fila
1-93
Funciones a
Nivel de
Mltiples Filas
Sintaxis:
function_name
function_name (column|expression,
(column|expression, [arg1,
[arg1, arg2,...])
arg2,...])
1-94
General
Conversion
1-95
Number
Single-row
functions
Date
Funciones de Caracteres
Funciones de
Caracteres
Funciones de Conversin
Funciones de
Manipulacin de Caracteres
LOWER
UPPER
CONCAT
SUBSTR
INITCAP
LENGTH
INSTR
LPAD
1-96
Funciones de Conversin
Conversin de cadenas de caracteres
Funcin
Resultado
LOWER('Curso SQL')
curso sql
CURSO SQL
INITCAP('Curso SQL')
Curso Sql
1-97
ENAME
DEPTNO
ENAME
DEPTNO
------------------- ----------------BLAKE
30
BLAKE
30
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Funciones de Manipulacin de
Caracteres
Manipulacin de cadenas de caracteres
Funcin
Resultado
CONCAT('Good', 'String')
GoodString
SUBSTR('String',1,3)
Str
LENGTH('String')
INSTR('String', 'r')
LPAD(sal,10,'*')
******5000
1-99
Uso de Funciones de
Manipulacin de Caracteres
SQL> SELECT ename, CONCAT (ename, job), LENGTH(ename),
2
INSTR(ename, 'A')
3 FROM
emp
4 WHERE SUBSTR(job,1,5) = 'SALES';
ENAME
---------MARTIN
ALLEN
TURNER
WARD
1-100
CONCAT(ENAME,JOB)
LENGTH(ENAME) INSTR(ENAME,'A')
------------------- ------------- ---------------MARTINSALESMAN
6
2
ALLENSALESMAN
5
1
TURNERSALESMAN
6
0
WARDSALESMAN
4
2
Funciones Numricas
ROUND: Redondea un valor al decimal
especificado
ROUND(45.926, 2) 45.93
TRUNC:Trunca un valor en el decimal
especificado
TRUNC(45.926, 2) 45.92
MOD: Devuelve el resto de la divisin
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
1-105
Operadores Aritmticos de
Fechas
Sumar o restar un nmero a de una
fecha da por resultado una fecha.
1-106
ENAME
---------KING
CLARK
MILLER
1-107
WEEKS
--------830.93709
853.93709
821.36566
Funciones de Fecha
1-108
FUNCION
DESCRIPCION
MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
Prximo da de la fecha
especificada
LAST_DAY
ROUND
TRUNC
'11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY')
'08-SEP-95'
LAST_DAY('01-SEP-95')
'30-SEP-95'
1-109
ROUND('25-JUL-95','MONTH')
01-AUG-95
ROUND('25-JUL-95','YEAR')
01-JAN-96
TRUNC('25-JUL-95','MONTH')
01-JUL-95
TRUNC('25-JUL-95','YEAR')
01-JAN-95
1-110
Funciones de Conversin
Conversin de
Tipos de Datos
Conversin
Implcita
1-111
Conversin
Explcita
VARCHAR2 o CHAR
NUMBER
VARCHAR2 o CHAR
DATE
NUMBER
VARCHAR2
DATE
VARCHAR2
1-112
VARCHAR2 o CHAR
NUMBER
VARCHAR2 o CHAR
DATE
1-113
NUMBER
TO_CHAR
1-114
TO_DATE
CHARACTER
TO_CHAR
DATE
El formato:
Ao completo en nmero
YEAR
Ao en letras
MM
MONTH
DY
DAY
1-116
Obtencin de la hora:
HH24:MI:SS AM
15:45:32 PM
DD "of" MONTH
12 of OCTOBER
Sufijo que permita obtener el n del da en letra.
ddspth
1-117
fourteenth
Formato de Fecha RR
Ao Actual
1995
1995
2001
2001
Fecha Especficada
27-OCT-95
27-OCT-17
27-OCT-17
27-OCT-95
Formato RR
1995
2017
2017
1995
FormatoYY
1995
1917
2017
2095
1-118
0-49
50-99
0-49
La fecha devuelta
corresponde al
siglo corriente.
La fecha devuelta
corresponde al siglo
anterior al corriente.
50-99
La fecha devuelta
corresponde al
siglo posterior al
corriente.
La fecha devuelta
corresponde al siglo
corriente.
1-120
9
0
Representa un nmero
Fuerza a que se muestre el 0 (cero)
L
.
,
Uso de la
Funcin TO_CHAR con Nmeros
SQL> SELECT
2 FROM
3 WHERE
TO_CHAR(sal,'$99,999') SALARY
emp
ename = 'SCOTT';
SALARY
-------$3,000
1-121
Funciones
TO_NUMBER y TO_DATE
Convierte una cadena de caracteres a
un formato numrico usando la funcin
TO_NUMBER
TO_NUMBER(char)
TO_NUMBER(char)
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,
DECODE(col/expression, search1,
search1, result1
result1
[,
[, search2,
search2, result2,...,]
result2,...,]
[,
[, default])
default])
1-125
SAL*1.1,
SAL*1.15,
SAL*1.20,
SAL)
JOB
SAL REVISED_SALARY
--------- --------- -------------PRESIDENT
5000
5000
MANAGER
2850
3420
MANAGER
2450
2940
...
14 rows selected.
1-126
Anudamiento de Funciones
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;
ENAME
NVL(TO_CHAR(MGR),'NOMANAGER')
---------- ----------------------------KING
No Manager
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
Convertir tipos de datos de columnas
1-129
1-130
Visualizacin de Datos
a partir de Varias Tablas
Objetivos
Al completar esta leccin, debera ser
capaz de hacer lo siguiente:
1-132
DEPT
ENAME
----KING
BLAKE
... DEPTNO
... -----...
10
...
30
MILLER ...
10
DEPTNO
-----10
20
30
40
DNAME
---------ACCOUNTING
RESEARCH
SALES
OPERATIONS
EMPNO
EMPNO DEPTNO
DEPTNO LOC
LOC
--------- ------------- --------------7839
10
NEW
7839
10 NEW YORK
YORK
7698
30
CHICAGO
7698
30 CHICAGO
7782
10
7782
10 NEW
NEW YORK
YORK
7566
20
DALLAS
7566
20 DALLAS
7654
30
7654
30 CHICAGO
CHICAGO
7499
30
CHICAGO
7499
30 CHICAGO
...
...
14
14 rows
rows selected.
selected.
1-133
LOC
-------NEW YORK
DALLAS
CHICAGO
BOSTON
Qu es un JOIN?
Use un join para consultar datos de ms
de una tabla.
SELECT
SELECT
FROM
FROM
WHERE
WHERE
table.column,
table.column, table.column
table.column
table1,
table1, table2
table2
table1.column1
table1.column1 == table2.column2;
table2.column2;
Producto Cartesiano
Se establece un producto cartesiano cuando:
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
EMPNO ENAME
----------- --------7839
7839 KING
KING
7698
7698 BLAKE
BLAKE
...
...
7934
7934 MILLER
MILLER
Producto
Cartesiano:
14*4=56 rows
1-136
... DEPTNO
...
... ----------...
10
...
10
...
30
...
30
...
...
10
10
DEPTNO DNAME
LOC
----------- ------------------- --------------10
10 ACCOUNTING
ACCOUNTING NEW
NEW YORK
YORK
20
RESEARCH
DALLAS
20 RESEARCH
DALLAS
30
SALES
CHICAGO
30 SALES
CHICAGO
40
OPERATIONS
BOSTON
40 OPERATIONS BOSTON
ENAME
DNAME
ENAME
DNAME
----------------------------KING
ACCOUNTING
KING
ACCOUNTING
BLAKE
ACCOUNTING
BLAKE
ACCOUNTING
...
...
KING
RESEARCH
KING
RESEARCH
BLAKE
RESEARCH
BLAKE
RESEARCH
...
...
56
56 rows
rows selected.
selected.
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
Tipos de Join
Equijoin Non-equijoin Outer join Self join
1-137
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.
Primary key
1-138
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.
Foreign key
LOC
-------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS
1-139
Calificacin de
Nombres de Columna Ambiguos
Usar como prefijos los nombres de
tablas para calificar los nombres de
columnas que estn en varias tablas.
1-140
Condiciones de Bsqueda
Adicionales Usando el Operador
EMP
DEPT
AND: Ejemplo
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.
1-141
DEPTNO DNAME
------ --------10 ACCOUNTING
30 SALES
10 ACCOUNTING
20 RESEARCH
30 SALES
30 SALES
30 SALES
30 SALES
30 SALES
20 RESEARCH
20 RESEARCH
...
14 rows selected.
LOC
-------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS
1-142
ORD
NAME
CUSTID
NAME
CUSTID
------------------------------JOCKSPORTS
100
JOCKSPORTS
100
TKB
SPORT
SHOP
101
TKB SPORT SHOP
101
VOLLYRITE
102
VOLLYRITE
102
JUST
103
JUST TENNIS
TENNIS
103
K+T
105
K+T SPORTS
SPORTS
105
SHAPE
106
SHAPE UP
UP
106
WOMENS
107
WOMENS SPORTS
SPORTS
107
...
...
...
...
99 rows
selected.
rows selected.
1-143
CUSTID
CUSTID ORDID
ORDID
------------------- ------101
610
101
610
102
611
102
611
104
612
104
612
106
601
106
601
102
602
ITEM
102
602
106
604
106 ORDID
604 ITEMID
ORDID
ITEMID
106
605
106 -----605 ------------ ------...
...
610
33
610
21
rows
selected.
21 rows selected.
611
11
611
612
11
612
601
11
601
602
11
602
...
...
64
64 rows
rows selected.
selected.
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.
1-144
el salario en la tabla
EMP, est entre el salario
ms bajo y el salario
ms alto de la tabla
SALGRADE
SELECT
FROM
WHERE
BETWEEN
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
...
DEPT
DEPTNO
-----10
30
10
20
DEPTNO
-----10
30
10
20
...
40
DNAME
---------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
OPERATIONS
No hay empleados en el
departamento 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
SELECT
FROM
FROM
WHERE
WHERE
table.column,
table.column, table.column
table.column
table1,
table1, table2
table2
table1.column(+)
table1.column(+) == table2.column;
table2.column;
SELECT
SELECT
FROM
FROM
WHERE
WHERE
table.column,
table.column, table.column
table.column
table1,
table1, table2
table2
table1.column
table1.column == table2.column(+);
table2.column(+);
1-147
SELECT
FROM
WHERE
ORDER BY
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
SELECT
FROM
FROM
WHERE
WHERE
table.column,
table.column, table.column
table.column
table1,
table1, table2
table2
table1.column1
table1.column1 == table2.column2;
table2.column2;
1-151
Objetivos
Al completar esta leccin, debera ser
capaz de hacer lo siguiente:
1-153
mximo salario
en la tabla EMP
MAX(SAL)
--------5000
AVG(sal), MAX(sal),
MIN(sal), SUM(sal)
emp
job LIKE 'SALES%';
1-157
MIN(hiredate), MAX(hiredate)
emp;
MIN(HIRED MAX(HIRED
--------- --------17-DEC-80 12-JAN-83
1-158
COUNT(*)
emp
deptno = 30;
COUNT(*)
--------6
1-159
COUNT(comm)
emp
deptno = 30;
COUNT(COMM)
----------4
1-160
AVG(COMM)
--------550
1-161
AVG(NVL(COMM,0))
---------------157.14286
1-162
2916.6667
DEPTNO AVG(SAL)
media de
salarios
------- --------en EMP
2175
10 2916.6667
para cada
20
2175
departamento
30 1566.6667
1566.6667
column, group_function
table
condition]
group_by_expression]
column];
1-164
DEPTNO AVG(SAL)
--------- --------10 2916.6667
20
2175
30 1566.6667
1-165
AVG(SAL)
--------2916.6667
2175
1566.6667
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
Consultas No vlidas
Usando Funciones de Grupo
Cualquier columna o expresin en la
Y
SELECT que no sea una funcin agregada,P B
U
O
tiene que ser especificada en la clusula
R
G
a
GROUP BY.
ul
SQL>
SQL>
22
SELECT
SELECT
FROM
FROM
deptno,
deptno, COUNT(ename)
COUNT(ename)
la
emp;
emp;
n
s
u
cl
e
a
d
a
SELECT
deptno,
COUNT(ename)
SELECT deptno, COUNT(ename) ic
if
**
c
e
p
ERROR
at
line
1:
ERROR at line 1:
s
e
ORA-00937:
group
ORA-00937: not
not aa single-group
single-group
group function
function
O
N
a
n
m
u
1-169
Javierl Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
o
C
Consultas No vlidas
Usando Funciones de Grupo
No puede usar una clusula WHERE para restringir
grupos.
Utilice la clusula HAVING para restringir grupos.
E
R
SQL>
deptno,
SQL> SELECT
SELECT
deptno, AVG(sal)
AVG(sal)
HE
22 FROM
emp
W
FROM
emp
a
l
33 WHERE
AVG(sal)
u
WHERE
AVG(sal) >> 2000
2000
s
u
44 GROUP
GROUP BY
BY deptno;
deptno;
l
c os
a
l up
r
WHERE
a gr
WHERE AVG(sal)
AVG(sal) >> 2000
2000
s
u ir
**
e
g
d
n
ERROR
e tr i
ERROR at
at line
line 3:
3:
u
p es is
ORA-00934:
ORA-00934: group
groupofunction
function
is not
not allowed
allowed here
here
r
N ra
1-170
Javier Balbuena
pa/ Jos Manuel Ferrer. Curso 2.001 / 2.002
Exclusin de Resultados de un
EMP
Grupo
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-171
5000
mximo salario
3000 por departamento
mayor de 2900$
DEPTNO MAX(SAL)
--------- --------10
5000
20
3000
2850
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
column, group_function
table
condition]
group_by_expression]
group_condition]
column];
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
SELECT
FROM
GROUP BY
HAVING
deptno, max(sal)
emp
deptno
max(sal)>2900;
DEPTNO MAX(SAL)
--------- --------10
5000
20
3000
1-173
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
JOB
PAYROLL
--------- --------ANALYST
6000
MANAGER
8275
1-174
Anidamiento de Funciones de
Grupo
Visualizar la mxima media de salarios por
departamento:
SQL> SELECT
max(avg(sal))
2 FROM
emp
3 GROUP BY deptno;
MAX(AVG(SAL))
------------2916.6667
1-175
Resumen
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY
1-176
column, group_function
table
condition]
group_by_expression]
group_condition]
column];
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
1-179
Subconsultas
SELECT
FROM
WHERE
select_list
table
expr operator
(SELECT
FROM
select_list
table);
1-180
1-181
Tipos de Subconsultas
Subconsulta mono-registro
Cons. Principal
Subquery
devuelve
CLERK
Subconsulta multi-registro
Cons. Principal
Subquery
devuelve
CLERK
MANAGER
Subconsulta multi-columna
Cons. Principal
Subquery
1-183
devuelve
CLERK
7900
MANAGER 7698
Subconsultas Mono-registro
Devuelven un nico registro.
Se utilizan operadores de comparacin.
Operador
1-184
Significado
Igual a
>
Mayor que
>=
<
Menor que
<=
<>
No igual a
SELECT
FROM
WHERE
AND
ENAME
ENAME
------------------MILLER
MILLER
1-185
ename, job
emp
job =
(SELECT
FROM
WHERE
sal >
(SELECT
FROM
WHERE
CLERK
job
emp
empno = 7369)
1100
sal
emp
empno = 7876);
JOB
JOB
----------------CLERK
CLERK
ENAME
ENAME
------------------SMITH
SMITH
JOB
SAL
JOB
SAL
----------------- ----------------CLERK
800
CLERK
800
1-186
800
MIN(sal)
emp);
La Clusula HAVING en
Subconsultas
SELECT
FROM
GROUP BY
HAVING
deptno, MIN(sal)
emp
deptno
MIN(sal) >
(SELECT
FROM
WHERE
800
MIN(sal)
emp
deptno = 20);
o
r
t
is
g
e
r
ti
l
u
m
ta
l
MIN(sal)
u
s
n
emp
o
deptno);bc
su
en
ro
ERROR:
t
ERROR:
s
i
ORA-01427:
single-row
subquery
returns
ORA-01427: single-row subquery greturns more
more than
than
e
one
r
one row
row
o
n
o
no
no rows
rows selected
selected
m
r
o
d
a
r
e
p
1-188
Javier Balbuena / Jos Manuel Ferrer. Curso 2.001 / 2.002
O
1-189
job
s
o
tr
s
i
g
re
e
v
l
(SELECT job
e
u
FROM
emp
v
e
d
WHERE
ename='SMYTHE');
O
N
ta
l
u
s
n
o
c
b
Su
La
Subconsultas Multi-registro
Devuelven ms de un registro.
Use comparadores multi-registro.
Operador
IN
ANY
ALL
1-190
Significado
SELECT
FROM
WHERE
AND
EMPNO
EMPNO
----------------7654
7654
7521
7521
1-191
ENAME
ENAME
------------------MARTIN
MARTIN
WARD
WARD
JOB
JOB
----------------SALESMAN
SALESMAN
SALESMAN
SALESMAN
ENAME
ENAME
------------------KING
KING
JONES
JONES
FORD
FORD
SCOTT
SCOTT
JOB
JOB
----------------PRESIDENT
PRESIDENT
MANAGER
MANAGER
ANALYST
ANALYST
ANALYST
ANALYST
Resumen
Las Subconsulas resultan muy tiles
cuando una consulta esta basada en
valores que no conocemos.
SELECT
FROM
WHERE
1-193
select_list
table
expr operator
(SELECT select_list
FROM
table);