Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FUNDACION PROYDESAD64258CS10 sg1 PDF
FUNDACION PROYDESAD64258CS10 sg1 PDF
Fundacin Proydesa
s
a
h
rg)
o
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Autores
Copyright 2010, Oracle y/o sus filiales. Todos los derechos reservados.
Salome Clement
Brian Pottle
Puja Singh
Renuncia
Colaboradores y
Revisores Tcnicos
Anjulaponni Azhagulekshmi
Clair Bennett
Zarko Cesljas
Yanti Chang
Gerlinde Frenzen
Steve Friedberg
Joel Goodman
Nancy Greenberg
Pedro Neves
Manish Pawar
Surya Rekha
Helen Robertson
Lauran Serhal
Hilda Simon
Tulika Srivastava
s
a
h
rg)
o
sa ide
e
d
Redactor
roy nt Gu
p
Amitha Narayan
n@ tude
o
i
c is S
a
d
Diseador Grfico
n e th
u
f
(
Rajiv Chandrabhanu
A to us
S
DE nse
Publicador
Y
RO e lice
Jobi Varghese
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
U.S. GOVERNMENT RIGHTS
The U.S. Governments rights to use, modify, reproduce, release, perform, display, or
disclose these training materials are restricted by the terms of the applicable Oracle
license agreement and/or the applicable U.S. Government contract.
Aviso de Marca Registrada
Oracle es una marca comercial registrada de Oracle Corporation y/o sus filiales.
Todos los dems nombres pueden ser marcas comerciales de sus respectivos
propietarios.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Contenido
Introduccin
Objetivos I-2
Agenda I-3
Objetivos del Curso I-4
Agenda I-5
Apndices Utilizados en el Curso I-7
Agenda I-8
Oracle Database 11g: reas de Atencin I-9
Oracle Database 11g I-10
Oracle Fusion Middleware I-12
Oracle Enterprise Manager Grid Control I-13
Oracle BI Publisher I-14
Agenda I-15
Sistema de Gestin de Bases de Datos Relacionales y Relacionales de Objetos I-16
Almacenamiento de Datos en Diferentes Medios Fsicos I-17
Concepto de Base de Datos Relacional I-18
Definicin de una Base de Datos Relacional I-19
Modelos de Datos I-20
Modelo de Relacin de Entidades I-21
Convenciones de Modelado de Relacin de Entidades I-23
Relacin de Varias Tablas I-25
Terminologa de Bases de Datos Relacionales I-27
Agenda I-29
Uso de SQL para Consultar Base de Datos I-30
Sentencias SQL I-31
Entornos de Desarrollo para SQL I-32
Agenda I-33
Esquema Human Resources(HR) I-34
Tablas Utilizadas en el Curso I-35
Agenda I-36
Documentacin de Oracle Database I-37
Recursos Adicionales I-38
Resumen I-39
Prctica I: Visin General I-40
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
iii
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos 1-2
Agenda 1-3
Capacidades de las Sentencias SQL SELECT 1-4
Sentencia SELECT Bsica 1-5
Seleccin de Todas las Columnas 1-6
Seleccin de Columnas Concretas 1-7
Escritura de Sentencias SQL 1-8
Valores por Defecto de Cabeceras de Columna 1-9
Agenda 1-10
Expresiones Aritmticas 1-11
Uso de Operadores Aritmticos 1-12
Prioridad de Operadores 1-13
Definicin de Valor Nulo 1-14
Valores Nulos en Expresiones Aritmticas 1-15
Agenda 1-16
Definicin de Alias de Columna 1-17
Uso de Alias de Columna 1-18
Agenda 1-19
Operador de Concatenacin 1-20
Cadenas de Caracteres Literales 1-21
Uso de Cadenas de Caracteres Literales 1-22
Operador de Comillas (q) Alternativo 1-23
Filas Duplicadas 1-24
Agenda 1-25
Visualizacin de la Estructura de la Tabla 1-26
Uso del Comando DESCRIBE 1-27
Prueba 1-28
Resumen 1-29
Prctica 1: Visin General 1-30
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
2
iv
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
se
YD e2-36
Uso del ComandoO
VERIFY
n
R e lic
Prueba 2-37
P
N 2-38rabl
O
Resumen
I
C n2:sVisin
fe General 2-39
APrctica
D
N n-tra
U
F no
3 Uso de Funciones de Una Sola Fila para Personalizar la Salida
Objetivos 3-2
Agenda 3-3
Funciones SQL 3-4
Dos Tipos de Funciones SQL 3-5
Funciones de Una Sola Fila 3-6
Agenda 3-8
Funciones de Carcter 3-9
Funciones de Conversin de Caracteres 3-11
Using Case-Conversion Functions 3-12
Uso de Funciones de Conversin de Caracteres 3-12
Funciones de Manipulacin de Caracteres 3-13
Uso de las Funciones de Manipulacin de Caracteres 3-14
Fundacin Proydesa
Agenda 3-15
Funciones Numricas 3-16
Uso de la Funcin ROUND 3-17
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
S
cCondicionales
a
4 Uso de Funciones de Conversin y Expresiones
s
i
d
h
fun se t
Objetivos 4-2
(
Agenda 4-3
SA to u
E
e
s
Funciones de Conversin Y
4-4D
n
e
ic 4-5
RO
Conversin ImplcitaPdel
Tipo delDato
e
l
b de Dato 4-7
Conversin Explcita
ION fedelraTipo
C
Agenda
A 4-10ans
D
N de lanFuncin
-tr TO_CHAR con Fechas 4-11
FUUso
o
n del Modelo de Formato de Fecha 4-12
Elementos
Uso de la Funcin TO_CHAR con Fechas 4-16
Uso de la Funcin TO_CHAR con Nmeros 4-17
Uso de Funciones TO_NUMBER y TO_DATE 4-20
Uso de las Funciones TO_CHAR y TO_DATE con el Formato de Fecha RR 4-22
Agenda 4-23
Funciones de Anidacin 4-24
Funciones de Anidacin: Ejemplo 1 4-25
Funciones de Anidacin: Ejemplo 2 4-26
Agenda 4-27
Funciones Generales 4-28
Funcin NVL 4-29
Uso de la Funcin NVL 4-30
vi
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
n e th
Uso de Funciones MIN y MAX 5-8(fu
s
SA to u
Uso de la Funcin COUNTE5-9
se 5-10
YDDISTINCT
n
Uso de la PalabraO
Clave
e
R
lic Nulos 5-11
P
Funciones de
Grupo lyeValores
Agenda
ION5-12ferab
C
ndes Grupos de Datos 5-13
DACreacin
a
r
N
t
n- de Grupos de Datos: Sintaxis de la Clusula GROUP BY 5-14
FU noCreacin
Uso de la Clusula GROUP BY 5-15
5
vii
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
Creacin de Uniones con la Clusula ON 6-15
rg)
o
Recuperacin de Registros con la Clusula ON 6-16
sa ide
e
Creacin de Uniones en 3 Direcciones con la Clusula ON 6-17
d
roy nt Gu
Aplicacin de Condiciones Adicionales a una Unin 6-18
p
n@ tude
Agenda 6-19
o
i
c is S
a
Unin de una Tabla consigo Misma 6-20
d
fun se th
Autouniones que Utilizan la Clusula ON (6-21
SA to u
Agenda 6-22
E
D nse
Uniones no igualitarias 6-23
Y
ce no Igualitarias 6-24
i
RO con
l
Recuperacin de Registros
Uniones
P
le
N
b
Agenda 6-25
a
O
er sin Coincidencia Directa con las uniones OUTER 6-26
CIde Registros
f
s
Devolucin
A
ranfrente a Uniones OUTER 6-27
ND nINNER
t
Uniones
U
F LEFTnoOUTER JOIN 6-28
RIGHT OUTER JOIN 6-29
FULL OUTER JOIN 6-30
Agenda 6-31
Productos Cartesianos 6-32
Generacin de un Producto Cartesiano 6-33
Creacin de Uniones Cruzadas 6-34
Prueba 6-35
Resumen 6-36
Prctica 6: Visin General 6-37
viii
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
@ 7-19
Uso del Operador ALL en Subconsultas de VariasnFilas
de
u
o
t
i
c is S
Uso del Operador EXISTS 7-20
a
d
Agenda 7-21
fun se th
(
u
Valores Nulos en una Subconsulta
SA 7-22
o
t
E
D nse
Prueba 7-24
Y
Resumen 7-25
RO e lice
P
N
bl
Prctica
7: VisinaGeneral
7-26
O
r
I
e
C
A ansf
D
r los Operadores de Definicin
N8 Uso
n-tde
FU noObjetivos
8-2
Agenda 8-3
Operadores de Definicin 8-4
Instrucciones de los Operadores de Definicin 8-5
Servidor de Oracle y Operadores de Definicin 8-6
Agenda 8-7
Tablas Utilizadas en esta Leccin 8-8
Agenda 8-12
Operador UNION 8-13
ix
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
9 Manipulacin de Datos
g)
r
o
Objetivos 9-2
sa ide
e
Agenda 9-3
d
roy nt Gu
Lenguaje de Manipulacin de Datos 9-4
p
n@ tude
Adicin de una Nueva Fila a una Tabla 9-5
o
i
c is S
a
Sintaxis de las Sentencias INSERT 9-6
d
fun se th
Insercin de Filas 9-7
(
SA9-8 to u
Insercin de Filas con Valores Nulos
E
D 9-9 nse
Y
Insercin de Valores Especiales
O yliHora
ce Especficos 9-10
RFecha
Insercin de Valores
de
P
ble
Creacin deIO
un N
Script r9-11
a
fe Tabla 9-12
s
AC
Copia de
Filas de
Otra
n
D
ra
N n9-13
t
Agenda
U
F Cambio
no de Datos en la Tabla 9-14
Sintaxis de Sentencias UPDATE 9-15
Actualizacin de Filas en una Tabla 9-16
Actualizacin de Dos Columnas con una Subconsulta 9-17
Actualizacin de Filas Basada en Otra Tabla 9-18
Agenda 9-19
Eliminacin de Filas de Tablas 9-20
Sentencia DELETE 9-21
Supresin de Filas de Tablas 9-22
Supresin de Filas Basada en Otra Tabla 9-23
Sentencia TRUNCATE 9-24
Agenda 9-25
Transacciones de Base de Datos 9-26
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
Clusula FOR UPDATE: Ejemplos 9-44
d
roy nt Gu
Prueba 9-46
p
n@ tude
Resumen 9-47
o
i
c is S
a
Prctica 9: Visin General 9-48
d
fun se th
(
u
SACreartyoGestionar
10 Uso de Sentencias DDLE
para
Tablas
e
D
s
Objetivos 10-2
Y en
O
R
lic
Agenda 10-3
P
e
l
Objetos
de Base
debDatos 10-4
a
r
ION
e
C
f
10-5
AReglasadensNomenclatura
D
r
N
t
- 10-7
n
FU noAgenda
Sentencia CREATE TABLE 10-8
Referencia a Tablas de Otro Usuario 10-9
Opcin DEFAULT 10-10
Creacin de Tablas 10-11
Agenda 10-12
Tipos de Dato 10-13
Tipos de Dato de Fecha y Hora 10-15
Agenda 10-16
Inclusin de Restricciones 10-17
Instrucciones de Restriccin 10-18
Definicin de Restricciones 10-19
Restriccin NOT NULL 10-21
Restriccin UNIQUE 10-22
xi
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
11 Creacin de Otros Objetos de Esquema
d
roy nt Gu
Objetivos 11-2
p
Agenda 11-3
n@ tude
o
i
c is S
a
Objetos de Base de Datos 11-4
d
Qu es una Vista? 11-5
fun se th
(
Ventajas de las Vistas 11-6
SA to u
E
D nse
Vistas Simples y ComplejasY11-7
RO e lice
Creacin de Vistas P11-8
l Vista 11-11
NDatosradebuna
Recuperacin
de
O
I
Modificacin
sfe 11-12
AC deanVistas
D
N nde-trVistas Complejas 11-13
Creacin
FUReglas
nopara Realizar Operaciones DML en una Vista 11-14
Uso de la Clusula WITH CHECK OPTION 11-17
Denegacin de Operaciones DML 11-18
Eliminacin de Vistas 11-20
Prctica 11: Visin General de la Parte 1 11-21
Agenda 11-22
Secuencias 11-23
Sentencia CREATE SEQUENCE: Sintaxis 11-25
Creacin de Secuencias 11-26
Pseudocolumnas NEXTVAL y CURRVAL 11-27
Uso de una Secuencia 11-29
Almacenamiento en Cach de los Valores de Secuencia 11-30
Modificacin de una Secuencia 11-31
xii
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
Apndice A: Prcticas y Soluciones
o
sa ide
e
d
Apndice AP: Prcticas y Soluciones adicionales
roy nt Gu
p
n@ tude
o
i
S
Apndice B: Descripciones de las Tablas ac
s
i
d
h
fun se t
(
Apndice C: Uso de SQL Developer
A to u
S
E
Objetivos C-2
D nse
Y
O Developer?
Qu es Oracle
ce C-3
i
RSQL
l
P
le Developer C-4
Especificaciones
de
SQL
N
b
a
O
Interfaz
SQL
erDeveloper 1.5 C-5
CI de
f
s
A
ande una Conexin a la Base Datos C-7
r
ND Creacin
t
U
n de Objetos de Bases de Datos C-10
F noExamen
Visualizacin de la Estructura de la Tabla C-11
Examen de Archivos C-12
Creacin de un Objeto de Esquema C-13
Creacin de una Nueva Tabla: Ejemplo C-14
Uso de la Hoja de Trabajo de SQL C-15
Ejecucin de Sentencias SQL C-18
Guardado de Scripts SQL C-19
Ejecucin de Archivos de Script Guardados: Mtodo 1 C-20
Ejecucin de Archivos de Script Guardados: Mtodo 2 C-22
Formato del Cdigo SQL C-23
Uso de Fragmentos C-24
Uso de Fragmentos: Ejemplo C-25
Depuracin de Procedimientos y Funciones C-26
xiii
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
Uso del Comando CHANGE D-12
e
d
Comandos de Archivos SQL*Plus D-13
roy nt Gu
p
Using the SAVE, START Commands D-14
n@ tude
o
i
c is S
Comando SERVEROUTPUT D-15
a
d
Uso del Comando SQL*Plus SPOOL D-16
fun se th
(
Uso del Comando AUTOTRACE D-17
SA to u
E
D nse
Resumen D-18
Y
RO e lice
P
NJDeveloper
bl
Apndice E: Uso
de
a
O
r
I
Objetivos
ACE-2ansfe
D
N JDeveloper
E-3
-tr
n
FUOracle
o
Database
n Navigator E-4
Creacin de Conexin E-5
Examen de Objetos de Bases de Datos E-6
Ejecucin de Sentencias SQL E-7
Creacin de Unidades de Programa E-8
Compilacin E-9
Ejecucin de una Unidad de Programa E-10
Borrado de una Unidad de Programa E-11
Ventana Structure E-12
Ventana del Editor E-13
Navegador de Aplicaciones E-14
Despliegue de Procedimientos Java Almacenados E-15
Publicacin de Java en PL/SQL E-16
xiv
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
N n-tr
FU ndice
no
xv
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Introduccin
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u los derechos reservados.
A toTodos
Copyright 2010, OracleS
y/o sus filiales.
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Definir los objetivos del curso
Enumerar las funciones de Oracle Database 11g
Describir el aspecto terico y fsico de una base de datos
relacional
Describir la implantacin del servidor de Oracle de
RDBMS y el sistema de gestin de bases de datos
s
relacionales de objetos (ORDBMS)
a
h
)
Identificar los entornos de desarrollo que se puedenorg
sa ide
e
utilizar para este curso
d
y t Gu
o
r
p
Describir la base de datos y el esquema
utilizados
en en este
@
d
n
u
curso
St
cio
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
I
En esta leccinCcomprender
erel sistema de gestin de bases de datos relacionales (RDBMS) y el
f
s
A
sistema de
de datos relacionales de objetos (ORDBMS). Se presentan tambin
Dgestintrde
anbases
NSQL
Oracle
Developer
y
SQL*Plus
como entornos de desarrollo utilizados para ejecutar sentencias
U
F non
SQL y para objetivos de formateo y creacin de informes.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Documentacin y recursos adicionales de Oracle
rg)
o
Database 11g
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
sa ide
(DML) para actualizar datos en Oracle Database
e
d
Gu
roy dendatos
Ejecutar sentencias de lenguaje de definicin
t
p
@ tude
(DDL) para crear y gestionar objetos
ionde esquema
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos del Curso
le
N
b
a
O
Iuna introduccin
Este curso ofrece
er a la tecnologa de Oracle Database. En esta clase, aprender los
C
f
s
A
conceptosDbsicos relativos
a las bases de datos relacionales y al potente lenguaje de programacin
ran los
Ncursonproporciona
t
SQL.
El
conocimientos esenciales de SQL que permiten escribir consultas en
U
F no
una o varias tablas, manipular datos en tablas, crear objetos de bases de datos y realizar consultas en
los metadatos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Primer da:
Introduccin
Recuperacin de Datos mediante la Sentencia SQL SELECT
Restriccin y Ordenacin de Datos
Uso de Funciones de Una Sola Fila para Personalizar la
Salida
Uso de Funciones de Conversin y Expresiones
Condicionales
s
a
h
rg)
Informes de Datos Agregados con Funciones de Grupo
o
saUniones
e
e
d
i
Visualizacin de Datos de Varias Tablas Utilizando
d
y t Gu
o
r
p
Uso de Subconsultas para Solucionar@
Consultas
en
d
n
u
t
io
Uso de los Operadores de Definicin
S
c
a
s
i
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Segundo da:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Tercer da:
Manipulacin de Datos
Uso de Sentencias DDL para Crear y Gestionar Tablas
Creacin de Otros Objetos de Esquema
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Documentacin y recursos adicionales de Oracle
rg)
o
Database 11g
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Grids de
Infraestructura
Gestin de
Informacin
Desarrollo de
Aplicaciones
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Oracle Database 11g: reas deleAtencin
b funciones en las siguientes reas de atencin:
a
ON
r
I11g
Oracle Database
ofrece
amplias
e
C
sf
A Infraestructura:
Grids
de
la tecnologa de Grid de la infraestructura Oracle permite que se
n
D
a
r
N pools
t
generen
de
almacenamiento
y servidores de bajo costo que ofrecen la calidad de servicio
U
F ms naltaonen lo referente a gestionabilidad,
alta disponibilidad y rendimiento. Oracle Database
11g consolida y ampla las ventajas de Grid Computing. Aparte de aprovechar al mximo Grid
Computing, Oracle Database 11g tiene funciones de garanta de cambios para gestionar cambios
de una manera rentable y controlada.
Gestin de Informacin: Oracle Database 11g ampla las capacidades de gestin de
informacin existente en la gestin de contenido, integracin de informacin y reas de gestin
del ciclo de vida de la informacin. Oracle proporciona gestin de contenido de tipos de dato
avanzados, como Extensible Markup Language (XML), texto, espacial, multimedia, imgines
mdicas y tecnologas semnticas.
Desarrollo de Aplicaciones: Oracle Database 11g tiene capacidades para utilizar y gestionar
todos los entornos de desarrollo para aplicaciones principales, como PL/SQL, Java/JDBC, .NET
y Windows, PHP, SQL Developer y Application Express.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Gestin
Alta disponibilidad
Rendimiento
s
a
h
rg)
o
Integracin de informacin
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Oracle Database 11g
le
N
b
a
O
I tienenfequer soportar varios terabytes de informacin para usuarios que demanda
Las organizaciones
C
A
un accesoD
rpido y a
seguro
ns a aplicaciones de negocio durante todo el da. Los sistemas de base de
r
N
t
datos
Udebenoser
n-fiables y se deben poder recuperar rpidamente en caso de cualquier tipo de fallo.
F
n
Oracle Database 11g est diseada junto con las siguientes reas de funciones para ayudar a las
Seguridad
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Oracle Database 11g (continuacin)
Rendimiento: el uso de funciones como archivos seguros, compresin para procesamiento de
transacciones en lnea (OLTP), optimizaciones de Real Application Clusters (RAC), cachs de
consultas de resultados, etc., puede mejorar en gran medida el rendimiento de la base de datos.
Oracle Database 11g permite a las organizaciones gestionar sistemas grandes, escalables,
transaccionales y de almacenes de datos que proporciona un acceso rpido a los datos mediante
el almacenamiento modular de bajo coste.
Seguridad: Oracle Database 11g ayuda a las organizaciones a proteger la informacin con
configuraciones de seguridad nicas, enmascaramiento y cifrado de datos, as como capacidades
de auditora sofisticadas. Proporciona una plataforma escalable y segura para un acceso rpido y
fiable a todos los tipos de informacin mediante las interfaces estndar de la industria.
Integracin de Informacin: Oracle Database 11g tiene funciones para mejorar la integracin
de datos en toda la empresa. Tambin soporta capacidades de gestin del ciclo de vida de la
informacin avanzadas. Esto le ayudar a gestionar el cambio de datos en la base de datos.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Gestin de Sistemas
Servicio de aplicaciones
de sistema
a
s
a
)h
g
Servidor de Aplicaciones
r
deoIdentidad
Gestin
a
Marco y herramientas
s
ede
Java EE, WS-*, eventos, reglas
e
d
i
d
Provisionamiento
de SOA
uSingle SignG
roy directorios,
t
p
Infraestructura de Grid
enAdministracin de
On,
@
d
n
u
Clusters, metadatos, registro,
t identidad
io
S
c
seguridad
a
s
i
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Oracle Fusion Middleware
le
N
b
a
O
I
Oracle Fusion C
Middleware
eesr una familia de productos completa y bien integrada que ofrece un
f
s
A
soporte completo
desarrollo, el despliegue y la gestin de Service-Oriented Architecture
D trpara
aneleldesarrollo
NSOA
(SOA).
facilita
de servicios de negocio modulares que se pueden integrar de forma
U
n
F
o
n
sencilla y volver a utilizar, lo que reduce los costos de mantenimiento y desarrollo y proporciona una
Herramientas de
Desarrollo
gran calidad de los servicios. La arquitectura de conexin de Oracle Fusion Middleware permite
aprovechar la inversin en cualquier aplicacin, sistema o tecnologa existente. Su inquebrantable
tecnologa principal minimiza la interrupcin provocada por interrupciones planificadas y no
planificadas.
Algunos de los productos de la familia de Oracle Fusion Middleware son:
Enterprise Application Server: Application Server
Gestin de Procesos e Integracin: BPEL Process Manager, Oracle Business Process Analysis
Suite
Herramientas de Desarrollo: Oracle Application Development Framework, JDeveloper, SOA
Suite
Business Intelligence: Oracle Business Activity Monitoring, Oracle Data Integrator
Gestin de sistemas: Enterprise Manager
Oracle Identity Management: Oracle Identity Management
Content Management: Oracle Content Database Suite
User Interaction: Portal, WebCenter
Oracle Database: Conceptos Fundamentales de SQL I I-12
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Oracle Enterprise Manager Gridle
Control
N
b
a
O
I software
Al abarcar aplicaciones,
er intermedio y gestin de bases de datos, Oracle Enterprise Manager Grid
C
f
s
A
Control proporciona
n empresarial integrada para sistemas ya sean de Oracle o no.
D tragestin
N
U
Oracle
n Manager Grid Control proporciona capacidades de gestin de Oracle Fusion Middleware
F Enterprise
o
n
avanzadas para los servicios en los que confan las aplicaciones de negocio, incluidos SOA, Business
Activity Monitoring e Identity Management.
Funcionalidad de gestin de amplio rango: se encuentra disponible para aplicaciones que incluyen
gestin de nivel de servicios, gestin del rendimiento de la aplicacin, gestin de configuracin y
automatizacin de cambios.
Funciones de automatizacin de grid incorporadas: significa que la tecnologa de la informacin
responde proactivamente a la demanda fluctuante e implanta nuevos servicios ms rpidamente, de
modo que los negocios puedan prosperar.
Diagnstico detallado y soluciones disponibles de inmediato: se puede aplicar en una amplia gama
de aplicaciones, incluidas aplicaciones personalizadas, Oracle E-Business Suite, PeopleSoft, Siebel,
Oracle Fusion Middleware, Oracle Database y la infraestructura subyacente.
Amplias capacidades de gestin de ciclo de vida: ampla grid computing al proporcionar soluciones
para el ciclo de vida de toda la aplicacin e infraestructura, incluyendo prueba, etapa y produccin
mediante las operaciones. Ha simplificado la gestin de parches con la aplicacin de parches
sincronizada, el soporte del sistema operativo adicional y funciones de deteccin de conflictos.
Oracle Database: Conceptos Fundamentales de SQL I I-13
Fundacin Proydesa
Oracle BI Publisher
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
o e
a
s
de Guid
y
o
HTML
pr ent
BI PUBLISHER
@
Microsoft Word
ud
on StExcel
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Oracle BI Publisher
le
N
b
a
O
I11g tambin
Oracle Database
er incluye Oracle BI Publisher, solucin de creacin de informes
C
f
s
A
empresariales
de Oracle.
Oracle BI Publisher (antes denominado XML Publisher) proporciona la
ande informes
r
ND
t
solucin
de
creacin
escalable y ms eficaz disponible para entornos complejos y
U
n
F
o
n
distribuidos.
PDF
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Documentacin y recursos adicionales de Oracle
rg)
o
Database 11g
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Sistema de Gestin de Bases de
le Datos Relacionales y Relacionales de Objetos
N
b
a
O
I soporta
El servidor de C
Oracle
er el modelo relacional y de base de datos relacional de objeto.
f
s
A
Dde Oracle
El servidor
anampla las capacidades de modelado de datos para soportar un modelo de base
r
N
t
U
deFdatos relacional
n de objeto que proporciona programacin orientada a objetos, tipos de dato
o
n
complejos, objetos de negocio complejos y compatibilidad completa con el mundo relacional.
Incluye distintas funciones para una funcionalidad y rendimiento mejorado de las aplicaciones
OLTP, como un uso compartido mejorado de las estructuras de datos de tiempo de ejecucin, cachs
de buffers grandes y restricciones diferibles. Las aplicaciones de almacn de datos aprovechan las
mejoras, como la ejecucin en paralelo de operaciones de insercin, la actualizacin y la supresin,
adems de la particin y optimizacin de consultas de deteccin en paralelo. El modelo de Oracle
soporta aplicaciones basadas en web y de cliente/servidor distribuidas y de varias capas.
Para obtener ms informacin sobre el modelo relacional de objeto o relacional, consulte Oracle
Database Concepts for 10g or 11g database (Conceptos de Oracle Database para Base de Datos 10g u
11g).
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
Hoja de clculo
Archivador de ion
udBase de Datos
t
S
c
electrnica
archivadoda
is
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
P enbDiferentes
Almacenamiento de Datos
Medios Fsicos
le
N
a
O
I tiene sus
Cada organizacin
ernecesidades de informacin. Una biblioteca conserva una lista de los
C
f
s
A
miembros,
libros, fechas
de vencimiento y sanciones. Una compaa necesita guardar la informacin
andepartamentos
r
ND
t
sobre
los
empleados,
y salarios. Esta informacin se denomina datos.
U
F non
Las organizaciones pueden almacenar datos en diferentes medios fsicos y en diferentes formatos,
como un documento impreso en un archivador de archivado o datos almacenados en hojas de clculo
electrnicas o en bases de datos.
Una base de datos es una recopilacin organizada de informacin.
Para gestionar bases de datos, necesita un sistema de gestin de bases de datos (DBMS). Un DBMS
es un programa que almacena, recupera y modifica los datos en las bases de datos a peticin. Hay
cuatro tipos principales de bases de datos: jerrquica, de red, relacional y (la ms reciente)
relacional de objeto.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Concepto de Base de Datos Relacional
le
N
b
a
O
I fue pionero
El Dr. E. F. Codd
er al describir los principios del modelo relacional en junio de 1970, en
C
f
s
A
una documentacin
n titulada A Relational Model of Data for Large Shared Data Banks. En
ND n-tratcnica
esta
documentacin
tcnica,
el Dr. Codd propuso el modelo relacional para los sistemas de bases de
U
F
o
n
datos.
Los modelos comunes utilizados hasta ese momento eran jerrquicos y de red o incluso simples
estructuras de datos de archivo plano. Los sistemas de gestin de bases de datos relacionales
(RDBMS) pronto se volvieron muy conocidos, en especial por su facilidad de uso y su flexible
estructura. Adems, un nmero de proveedores innovadores, como Oracle, complementaron los
RDBMS con una serie de productos de usuario y desarrollo de aplicaciones potentes, proporcionando
una solucin total.
Componentes del Modelo Relacional
Recopilaciones de objetos o relaciones que almacenan los datos.
Un juego de operadores que pueden actuar en las relaciones para producir otras relaciones.
Integridad de datos para su precisin y consistencia.
Para obtener ms informacin, consulte An Introduction to Database Systems, Eighth Edition
(Addison-Wesley: 2004), escrito por Chris Date.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
Nombre de la tabla: EMPLOYEES Nombre de la tabla: DEPARTMENTS
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Definicin de una Base de Datos
le Relacional
N
b
a
O
Una base de datos
erutiliza relaciones o tablas bidimensionales para almacenar informacin.
CI relacional
f
s
A
n desee almacenar informacin sobre todos los empleados de la compaa. En
D puede
Por ejemplo,
aque
r
N
t
U
una
n relacional, puede crear diferentes tablas para almacenar informacin diferente
F base ndeodatos
sobre los empleados, como una tabla de empleados, una de departamentos y una de salarios.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Modelos de Datos
Modelo del
sistema
en la mente
del cliente
Modelo de
entidades del
modelo del cliente
Modelo de tabla
del modelo de entidades
a
s
a
Servidor ) h
de Oracle
rg
o
sa ide
e
d
roy nt Gu
p
de en el disco
n@ tTablas
u
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Modelos de Datos
le
N
b
a
O
Ila base del
Los modelos son
erdiseo. Los ingenieros crean un modelo de coche para solucionar
C
f
s
A
cualquierD
problemaaantes
n de iniciar la produccin. De la misma manera, los diseadores desarrollan
r
Npara
t
modelos
explorar
ideas y mejorar el conocimiento del diseo de la base de datos.
U
F non
Objetivo de los Modelos
Los modelos ayudan a comunicar los conceptos que las personas tienen en mente. Se puede utilizar
para realizar las siguientes acciones:
Comunicar
Clasificar
Describir
Especificar
Investigar
Evolucionar
Analizar
Imitar
El objetivo es producir un modelo que se ajuste a varios de estos usos, que el usuario lo pueda
entender y que contenga los suficientes detalles para que un desarrollador cree un sistema de bases de
datos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
asignado a
compuesto por
DEPARTMENT
#*
nmero
*
nombre
o
ubicacin
Supuesto:
. . . Asignar uno o ms empleados a un
s
a
h
departamento . . .
rg)
o
p ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Modelo de Relacin de Entidades
le
N
b
a
O
I los fdatos
En un sistema C
eficaz,
er se dividen en entidades o categoras discretas. Un modelo de relacin
s
A
de entidades
es
de varias entidades de un negocio y las relaciones entre ellas. Un
anunadeilustracin
r
NdeDER(ER)
t
modelo
se
deriva
las
especificaciones
o descripciones de negocio y se crea durante la fase
U
F non
de anlisis del ciclo de vida de desarrollo del sistema. Los modelos de ER separan la informacin que
necesita un negocio a partir de las actividades realizadas en el mismo. Aunque los negocios pueden
cambiar sus actividades, el tipo de informacin suele permanecer constante. Por lo tanto, las
estructuras de datos tambin tienden a ser constantes.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Modelo de Relacin de Entidades (continuacin)
Ventajas del Modelado de ER:
Recopila informacin para la organizacin en un formato claro y preciso.
Proporciona una imagen clara del mbito de los requisitos de la informacin.
Proporciona una asignacin grfica de fcil compresin para el diseo de la base de datos.
Ofrece un marco efectivo para integrar varias aplicaciones.
Componentes Clave
Entidad: aspecto significativo sobre qu informacin se debe conocer. Algunos ejemplos
pueden ser los departamentos, empleados y pedidos.
Atributo: algo que describe o cualifica una entidad. Por ejemplo, para la entidad de empleados,
los atributos seran el nmero de empleado, el nombre, cargo, fecha de contratacin, nmero de
departamento, etc. Cada uno de los atributos puede ser necesario u opcional. Este estado se
denomina opciones.
Relacin: asociacin con nombre entre las entidades que muestran opciones y grados. Algunos
ejemplos pueden ser los empleados y departamentos, pedidos y elementos.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
EMPLOYEE
#*
nmero
*
nombre
o
puesto
Atributo:
Nombre en singular
Minsculas
Atributo obligatorio
marcado con *
Atributo opcional
marcado con o
DEPARTMENT
#*
nmero
*
nombre
compuesto por o
ubicacin
asignado a
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
Identificador nico (UID)
p
e
Primario marcado con # ion@ tud
c(#) is S
Secundario marcado con
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Convenciones de Modelado deleER
N rab
Entidades CIO
sfe utilice las siguientes convenciones:
A unaaentidad,
n
D
Para representar
N nde-entidad
tr nico en singular
F UNombre
o
n de entidad en mayscula
Nombre
Recuadro editable
Nombres de sinnimos opcionales en maysculas entre parntesis: ( )
Atributos
Para representar un atributo en un modelo utilice las siguientes convenciones:
Nombre en singular y en minscula
Etiqueta de asterisco (*) para los atributos obligatorios (es decir, valores que se deben conocer)
Etiqueta de letra o para los atributos opcionales (es decir, los valores que se pueden conocer)
Relaciones
Smbolo
Descripcin
Lnea discontinua
Lnea continua
Pata de gallo
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Convenciones de Modelado de ER (continuacin)
Relaciones
Cada direccin de la relacin contiene:
Una etiqueta: por ejemplo, enseado por o asignado a
Una opcin: debe ser o quizs
Un grado: nico o uno o ms
Nota: el trmino cardinalidad es un sinnimo del trmino grado.
Cada entidad de origen {puede ser | debe ser} nombre de relacin {nico | uno o ms} entidad de
destino.
Nota: la convencin se lee hacia la izquierda.
Identificadores nicos
Un identificador nico (UID) es cualquier combinacin de atributos o relaciones, o de ambos, que
sirve para distinguir las incidencias de una entidad. Cada incidencia de entidad se debe identificar de
forma nica.
Etiquetar cada atributo que forma parte del UID con un signo de almohadilla #.
Etiquetar los UID secundarios con un signo de almohadilla entre parntesis (#).
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
Clave primaria
on Stud
i
c
a his
d
Clave primaria
Clave ajena
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Relacin de Varias Tablas
le
N
b
a
O
Cada tabla contiene
I datosfequer describen exactamente una entidad. Por ejemplo, la tabla EMPLOYEES
C
s los empleados. Las categoras de datos se muestran en la parte superior
A
contiene D
informacin
nsobre
a
r
N
t
deFcada
U tablaony -los casos individuales se muestran a continuacin. Si utiliza un formato de tabla,
n
puede visualizar,
comprender y utilizar la informacin de inmediato.
Debido a que los datos sobre las diferentes entidades se almacenan en diferentes tablas, puede que
tenga que combinar dos o ms tablas para responder a una pregunta determinada. Por ejemplo, puede
que desee conocer la ubicacin del departamento en el que trabaja un empleado. En este supuesto,
necesita informacin de la tabla EMPLOYEES (que contiene datos sobre los empleados) y la tabla
DEPARTMENTS (que contiene informacin sobre los departamentos). Con RDBMS, puede
relacionar los datos de una tabla con los datos de otra utilizando las claves ajenas. Una clave ajena es
una columna (o juego de columnas) que hace referencia a una clave primaria en la misma tabla o en
otra tabla.
Tiene la posibilidad de relacionar datos de una tabla con datos de otra tabla para organizar la
informacin en unidades separadas y gestionables. Los datos de empleado se pueden mantener, de
forma lgica, separados de los datos de departamento almacenndolos en una tabla independiente.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Relacin de Varias Tablas (continuacin)
Instrucciones para Claves Primarias y Ajenas
No puede utilizar valores duplicados en una clave primaria.
Generalmente, las claves primarias no se pueden cambiar.
Las claves ajenas se basan en valores de datos y son punteros puramente lgicos (no fsicos).
Un valor de clave ajena debe coincidir con un valor de clave primaria o de clave nica existente
o, de lo contrario, debe ser nulo.
Una clave ajena debe hacer referencia a una columna de clave primaria o nica.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
2
6
s
a
h
rg)
o
1
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Terminologa de Bases de Datos
le Relacionales
N
b
a
O
I relacional
Una base de datos
erpuede contener una o ms tablas. Una tabla es la estructura bsica de
C
f
s
A
almacenamiento
deaRDBMS.
Una tabla contiene todos los datos necesarios sobre algo del mundo
n
r
NDempleados,
t
real,
como
facturas
o clientes.
U
F non
La diapositiva muestra el contenido de la tabla o relacin EMPLOYEES. Los nmeros indican lo
siguiente
1. Una nica fila (o tupla), que representa todos los datos necesarios para un empleado concreto.
Cada fila de una tabla se debe identificar por una clave primaria, que no permite duplicar filas.
El orden de las filas no es importante; especifique el orden de la fila cuando se recuperen los
datos.
2. Una columna o atributo, que contiene el nmero de empleado. El nmero de empleado identifica
un nico empleado en la tabla EMPLOYEES. En este ejemplo, la columna del nmero de
empleado est designada como clave primaria. Una clave primaria debe contener un valor y el
valor debe ser nico.
3. Una columna que no es un valor clave. Una columna representa un tipo de dato en una tabla; en
este ejemplo, los datos son los salarios de todos los empleados. El orden de las columnas no es
importante al almacenar datos; especifique el orden de la columna al recuperar los datos.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Terminologa de Bases de Datos Relacionales (continuacin)
4. Una columna que contiene el nmero de departamento, que tambin es una clave ajena. Una
clave ajena es una columna que define cmo se relacionan las tablas s. Una clave ajena hace
referencia a una clave primaria o nica en la misma tabla o en otra tabla. En el ejemplo,
DEPARTMENT_ID identifica de forma nica un departamento en la tabla DEPARTMENTS.
5. Un campo est en la interseccin de una fila y una columna. Slo puede contener un valor.
6. Un campo puede no contener ningn valor. Esto se denomina valor nulo. En la tabla
EMPLOYEES solo aquellos empleados que tienen el rol de vendedor tienen un valor en el campo
COMMISSION_PCT (comisiones).
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Documentacin y recursos adicionales de Oracle
rg)
o
Database 11g
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de SQL para Consultar Base
le de Datos
N
b
a
O
I relacional,
En una base deC
datos
er no es necesario especificar la ruta de acceso a las tablas y tampoco
f
s
A
es necesario
D sabertrcmo
an se organizan los datos de forma fsica.
N
U
Para
na la base de datos, ejecute una sentencia de lenguaje de consulta estructurado (SQL),
F acceder
o
n
que es el lenguaje estndar de ANSI (American National Standards Institute) para el funcionamiento
Servidor de
Oracle
de bases de datos relacionales. SQL es un juego de sentencias con el que todos los programas y
usuarios acceden a los datos de Oracle Database. Los programas y las herramientas de Oracle a
menudo permiten el acceso de usuarios a la base de datos sin utilizar directamente SQL, pero estas
aplicaciones a su vez deben utilizar SQL al ejecutar la solicitud del usuario.
SQL proporciona sentencias para distintas tareas, que incluyen las siguientes:
Consulta de datos
Insercin, actualizacin y supresin de filas en una tabla
Creacin, sustitucin, modificacin y borrado de objetos
Control de acceso a la base de datos y los objetos
Garanta de integridad y consistencia de la base de datos
SQL unifica todas las tareas anteriores en un lenguaje consistente y permite trabajar con datos en el
nivel lgico.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Sentencias SQL
SELECT
INSERT
UPDATE
DELETE
MERGE
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMENT
a
s
a
)h
GRANT
g
r
Lenguaje de Control de Datos (DCL)
o e
REVOKE
a
s
de Guid
y
COMMIT
o
pr ent
ROLLBACK
Control de Transacciones @
SAVEPOINT
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Sentencias SQL
le
N
b
a
O
Sentencias SQL soportadas
por
el
de Oracle de los estndares de la industria Oracle
CI elnscumplimiento
fer cumplimento
CorporationA
asegura
futuro con la evolucin de los estndares mediante la
implicacin
ra activa del personal clave en los comits de estndares SQL. Los comits
ND den-forma
t
U
aceptados
por
la
industria
son ANSI e ISO (International Standards Organization). Tanto ANSI como
F no
ISO han aceptado SQL como el lenguaje estndar de las bases de datos relacionales.
Sentencia
Descripcin
SELECT
INSERT
UPDATE
DELETE
MERGE
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMENT
GRANT
REVOKE
COMMIT
ROLLBACK
SAVEPOINT
Recupera datos de la base de datos, introduce nuevas filas, cambia las existentes y
elimina las filas no deseadas de las tablas en la base de datos, respectivamente.
Conocidos colectivamente lenguaje de manipulacin de datos (DML).
Configura, cambia y elimina las estructuras de datos de las tablas. Conocidos
colectivamente como lenguaje de definicin de datos (DDL).
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
)
SQL Developer
SQL*Plus org
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Entornos de Desarrollo para SQL
le
N
b
a
O
SQL Developer
CI nsfer
A
Dse desarrolla
Este curso
a mediante Oracle SQL Developer como la herramienta para la ejecucin de
r
N
t
U
sentencias
n en los ejemplos de las lecciones y prcticas. SQL Developer versin 1.5.4 se
F ntratadas
o
incluye con Oracle Database 11g y es la herramienta por defecto para esta clase.
SQL*Plus
Tambin se puede utilizar el entorno de SQL*Plus para ejecutar todos los comandos SQL tratados en
este curso.
Nota
Consulte el apndice C para obtener informacin sobre el uso de SQL Developer, que incluye
instrucciones simples sobre la instalacin de la versin 1.5.4.
Consulte el apndice D para obtener ms informacin sobre el uso de SQL*Plus.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Documentacin y recursos adicionales de Oracle
rg)
o
Database 11g
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DEPARTMENTS
department_id
department_name
manager_id
location_id
LOCATIONS
location_id
street_address
postal_code
city
state_province
country_id
JOB_HISTORY
employee_id
start_date
end_date
job_id
department_id
EMPLOYEES
employee_id
first_name
last_name
email
phone_number
hire_date
job_id
salary
commission_pct
manager_id
department_id
COUNTRIES
country_id
country_name
region_id
s
a
h
JOBS
rg)
o
REGIONS
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RHuman
Descripcin del esquema
P
e Resources (HR)
l
N
b
El esquema Human
ra (HR) forma parte de los esquemas de ejemplo de Oracle que se
IOResources
e
C
f
pueden instalar
ns Database. Las sesiones prcticas de este curso utilizan datos del esquema
DA entrOracle
a
N
HR.U
F nonDescripciones de las Tablas
job_id
job_title
min_salary
max_salary
region_id
region_name
REGIONS contiene filas que representan una regin, como Amrica, Asia, etc.
COUNTRIES contiene filas para pases, que estn asociados a una regin.
LOCATIONS contiene la direccin concreta de una oficina, almacn o fbrica de una compaa
en un pas determinado.
DEPARTMENTS muestra detalles de los departamentos en los que trabajan los empleados. Cada
departamento puede tener una relacin que represente al gestor del departamento en la tabla
EMPLOYEES.
EMPLOYEES contiene detalles sobre cada empleado que trabaja en un departamento. Puede que
algunos empleados no estn asignados a ningn departamento.
JOBS contiene los tipos de cargos que puede tener cada empleado.
JOB_HISTORY contiene el historial del trabajo de los empleados. Si un empleado cambia de
departamento dentro de un mismo cargo o cambia de cargo dentro de un mismo departamento,
se insertar una nueva fila en esta tabla con la informacin del antiguo cargo del empleado.
Fundacin Proydesa
EMPLOYEES
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
DEPARTMENTS
JOB_GRADES
a
d
h
n
t
(fu use
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
Tablas Utilizadas en elP
Curso le
N
btablas principales utilizadas en este curso:
a
O
r
A continuacinCseI muestran
las
e
A ansfproporciona detalles de todos los empleados
Tabla
EMPLOYEES:
D
N DEPARTMENTS:
-tr
proporciona detalles de todos los departamentos
n
F UTabla
o
n
Tabla JOB_GRADES: proporciona detalles de los salarios de diferentes grados
Adems de estas tablas, tambin utilizar otras tablas mostradas en la diapositiva anterior, como
LOCATIONS y JOB_HISTORY.
Nota: la estructura y datos de todas las tablas se proporcionan en el Apndice B.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Documentacin y recursos adicionales de Oracle
rg)
o
Database 11g
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Documentacin de Oracle Database
le
N
b
a
O
I
Navegue a http://www.oracle.com/pls/db102/homepage
para acceder a la biblioteca de
er
C
f
s
A
documentacin
D detrOracle
an Database 10g.
N
U
Navegue
acceder a la biblioteca de
n
F na ohttp://www.oracle.com/pls/db112/homepagepara
documentacin de Oracle Database 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Recursos Adicionales
Para obtener ms informacin sobre Oracle Database 11g,
consulte:
Oracle Database 11g: New Features eStudies
Serie Oracle by Example (OBE): Oracle Database 11g
http://www.oracle.com/technology/obe/11gr1_db/index.htm
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Oracle Database 11g ampla:
Las ventajas de grids de infraestructura
Las capacidades de gestin de informacin existente
Las funciones para utilizar y gestionar todos los entornos de
desarrollo para aplicaciones principales como PL/SQL,
Java/JDBC, .NET, XML y etc.
sa ide
e
y regidas por restricciones de integridad de datos
d
oy nt Gu
r
p
Con el servidor de Oracle, puede almacenar
y egestionar
@
d
n
u
o
informacin mediante SQL
St
aci
is
d
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
P ble
Resumen
N
ra de datos relacionales se componen de objetos o relaciones. Se
IO defebases
Los sistemas de
gestin
C
A aoperaciones
gestionanD
mediante
y se rigen por restricciones de integridad de datos.
ns
r
N
t
U
Oracle
n genera productos y servicios para cumplir las necesidades de RDBMS. Los
F Corporation
o
n
productos principales son los siguientes:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica I: Visin General
le
N
b
a
O
r
En esta prctica,
lasesiguientes
tareas:
CIrealiza
f
s
A
Iniciar
Oracle
SQL
Developer
y
crear
una nueva conexin a la cuenta ora1.
D tran
N
- SQL Developer para examinar objetos de datos en la cuenta ora1. La cuenta
Oracle
n
F UUtilizar
o
n
ora1 contiene las tablas de esquema HR.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Enumerar las capacidades de las sentencias SQL SELECT
Ejecutar una sentencia SELECT bsica
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
Para extraer datosI de la base
erde datos, debe utilizar la sentencia SQL SELECT. Sin embargo, puede
C
f
s
A
que necesite
restringir
nlas columnas que se muestran. Esta leccin describe todas las sentencias
apara
r
ND
t
SELECT
necesarias
realizar estas acciones. Puede que desee crear sentencias SELECT que se
U
n
F
o
n
pueden utilizar ms de una vez.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Alias de columnas
Uso del operador de concatenacin, cadenas de
caracteres de literales, operador de comillas alternativo y
palabra clave DISTINCT
Comando DESCRIBE
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Proyeccin
Seleccin
Tabla 1
Tabla 1
a
s
a
)h
g
Unin
r
o e
a
s
de Guid
y
o
pr ent
@
n
oTabla
tud
i
S
c
2
Tabla 1
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
iceSELECT
RO eSQL
l
Capacidades de las Sentencias
P
l
N recupera
binformacin
a
O
Una sentencia SELECT
de la base de datos. Con una sentencia SELECT, se
r
I
e
C
f
s
A
puede hacer
an las columnas de una tabla devueltas por una consulta. Seleccione tantas
rseleccione
ND lonsiguiente:
t
Proyeccin:
U
F columnas
no como sea necesario.
Seleccin: seleccione las filas de una tabla devueltas por una consulta. Se pueden utilizar
diferentes criterios para restringir las filas recuperadas.
Uniones: rena los datos almacenados en diferentes tablas especificando el enlace entre ellas.
Las uniones SQL se tratan de forma ms detallada en la leccin titulada Visualizacin de
Datos de Varias Tablas mediante Uniones.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Sentencia SELECT Bsica
P
l
N rabsentencia
O
En su formato ms
simple,euna
SELECT debe incluir lo siguiente:
I
f
s
AC SELECT,
Una D
clusula
que
especifica
las columnas que se van a mostrar.
n
a
r
N
t
clusula
- FROM, que identifica la tabla que contiene las columnas que se muestran en la
F UUna
clusula
nonSELECT.
En la sintaxis:
SELECT
*
DISTINCT
column|expression
alias
FROM table
Nota: a lo largo de este curso, las palabras palabra clave, clusula y sentencia se utilizan como se
describe a continuacin:
Una palabra clave hace referencia a un elemento SQL individual (por ejemplo, SELECT y
FROM son palabras clave).
Una clusula es parte de una sentencia SQL (por ejemplo, SELECT employee_id,
last_name, etc.).
Una sentencia es una combinacin de dos o ms clusulas (por ejemplo, SELECT * FROM
employees).
Oracle Database: Conceptos Fundamentales de SQL I 1-5
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT *
FROM
departments;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Seleccin de Todas las Columnas
le
N
b
a
O
I las columnas
Puede mostrarC
todas
datos en una tabla insertando la siguiente palabra clave
e(*).r En eldeejemplo
f
s
Aun asterisco
SELECTD
con
de la diapositiva, la tabla DEPARTMENTS contiene
n
a
r
N
t
cuatro
U columnas:
n- DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID y LOCATION_ID. La
F
o
n
tabla contiene ocho filas, una por cada departamento.
Tambin puede mostrar todas las columnas en la tabla mostrando todas las columnas despus de la
palabra clave SELECT. Por ejemplo, la siguiente sentencia SQL (como el ejemplo de la diapositiva)
muestra todas las columnas y filas de la tabla DEPARTMENTS:
SELECT
FROM
Nota: en SQL Developer, puede introducir la sentencia SQL en una hoja de trabajo de SQL y hacer
clic en el icono Execute Statement o pulsar [F9] para ejecutar la sentencia. La salida mostrada en
la pgina con separadores Results aparece como se muestra en la diapositiva.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Seleccin de Columnas Concretas
le
N
b
a
O
Tambin puede utilizar
SELECT para mostrar las columnas concretas de la tabla
r
I lafesentencia
C
s
A
especificando
los nombres
de columna, separados por comas. El ejemplo de la diapositiva muestra
andepartamento
r
ND
t
todos
los
nmeros
de
y ubicacin de la tabla DEPARTMENTS.
U
F non
En la clusula SELECT, especifique las columnas que desee, en el orden en el que desee que
aparezcan en la salida. Por ejemplo, para mostrar la ubicacin antes del nmero de departamento (de
izquierda a derecha), utilice la siguiente sentencia:
SELECT location_id, department_id
FROM
departments;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Escritura de Sentencias SQL le
N y directrices,
b puede construir sentencias vlidas que son fciles de leer y
a
Con estas sencillas
r
IOreglas
e
C
sf
editar: DA
n
a
Nsentencias
Las
-tr SQL no son sensibles a maysculas/minsculas (a menos que se indique).
n
F ULas
o
sentencias
SQL se pueden introducir en una o ms lneas.
n
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SQL Developer:
Alineacin de cabeceras por defecto: alineacin a la
izquierda
Visualizacin de cabeceras por defecto: maysculas
SQL*Plus:
Las cabeceras de columna de carcter y de fecha se alinean
a la izquierda
Las cabeceras de columna de nmero se alinean a la
s
derecha
a
h
)
Visualizacin de cabeceras por defecto: maysculas org
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Valores por Defecto de Cabeceras
le de Columna
N
b
a
O
I las cabeceras
En SQL Developer,
de columna se muestran en maysculas y alineadas a la izquierda.
er hire_date,
Clast_name,
f
s
A
SELECT
salary
n
D
a
r
N
t
nFUFROMnoemployees;
Puede sustituir la visualizacin de cabecera de columna por un alias. Los alias de columna se tratarn
ms adelante en esta leccin.
Oracle Database: Conceptos Fundamentales de SQL I 1-9
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Alias de columnas
Uso del operador de concatenacin, cadenas de
caracteres de literales, operador de comillas alternativo y
palabra clave DISTINCT
Comando DESCRIBE
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Expresiones Aritmticas
Crear expresiones con datos de fecha y nmeros mediante
operadores aritmticos.
Operador
Descripcin
Sumar
Restar
Multiplicar
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Expresiones Aritmticas
le
N
b
a
O
I modificar
Puede que necesite
er la forma en la que se muestran los datos, realizar clculos o consultar
C
f
s
A
casos de D
esto es posible mediante las expresiones aritmticas. Una expresin
an Todo
r
Nposibilidades.
t
aritmtica
puede
contener
nombres
de columna, valores numricos constantes y operadores
U
n
F
o
n
aritmticos.
/
Dividir
Operadores Aritmticos
La diapositiva muestra los operadores aritmticos disponibles en SQL. Puede utilizar operadores
aritmticos en cualquier clusula de una sentencia SQL (excepto en la clusula FROM).
Nota: con los tipos de dato DATE y TIMESTAMP, slo puede utilizar los operadores de suma y resta.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Operadores Aritmticos
le
N
b
a
O
El ejemplo de C
la Idiapositiva
operador de suma para calcular un aumento de salario de 300
erutilizaLael diapositiva
f
s
A
dlares para
todos
los
empleados.
tambin muestra una columna SALARY+300 en la
D tran
N
salida.
FU nonTenga en cuenta que la columna calculada resultante, SALARY+300, no es una nueva columna en la
tabla EMPLOYEES; es slo para visualizacin. Por defecto, el nombre de la nueva columna procede
del clculo que lo genera, en este caso, salary+300.
Nota: el servidor de Oracle ignora los espacios en blanco antes y despus del operador aritmtico.
Prioridad de Operadores
Si una expresin aritmtica contiene ms de un operador, la multiplicacin y divisin se evalan
primero. Si los operadores en una expresin tienen la misma prioridad, la evaluacin se realiza de
izquierda a derecha.
Puede utilizar los parntesis para forzar la expresin que se incluye entre parntesis para que se
evale primero.
Reglas de Prioridad
La multiplicacin y divisin se producen antes de la suma y la resta.
Los operadores de la misma prioridad se evalan de izquierda a derecha.
Los parntesis se utilizan para sustituir la prioridad por defecto o para aclarar la sentencia.
Oracle Database: Conceptos Fundamentales de SQL I 1-12
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prioridad de Operadores
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
r
t
p
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prioridad de Operadores (continuacin)
le
N
b
a
O
I de la diapositiva
El primer ejemplo
muestra el apellido, el salario y la compensacin anual de los
er
C
f
s
A
empleados.
anual multiplicando el salario mensual por 12, ms un incentivo
D Calcula
alancompensacin
r
t
deF100
Tenga
en
cuenta
que
la
multiplicacin se realiza antes de la suma.
UNdlares.
n
o
n
Nota: utilice los parntesis para reforzar el orden estndar de prioridad y mejorar la claridad. Por
2
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Definicin de Valor Nulo
le
N
b
a
O
Ide un valor
Si una fila carece
er de datos para una columna concreta, se dice que dicho valor es nulo o
C
f
s
A
que contiene
D un valor
annulo.
r
N
t
U
Un
nes un valor que no est disponible, sin asignar, desconocido o que no es aplicable. Un
Fvalor nnulo
o
valor nulo no es lo mismo que un cero o un espacio en blanco. El cero es un nmero y el espacio en
blanco es un carcter.
Las columnas de cualquier tipo de dato pueden contener valores nulos. Sin embargo, algunas
restricciones (NOT NULL y PRIMARY KEY) evitan que se utilicen valores nulos en la columna.
En la columna COMMISSION_PCT de la tabla EMPLOYEES, observe que slo pueden percibir una
comisin un director de ventas o un vendedor. El resto de los empleados no tienen derecho a percibir
comisiones. Un valor nulo representa este hecho.
Nota: por defecto, SQL Developer utiliza el literal, (null), para identificar los valores nulos. Sin
embargo, se puede definir en un valor ms relevante para el usuario. Para ello, seleccione Preferences
en el men Tools. En el cuadro de dilogo Preferences, ample el nodo Database. Haga clic en
Advanced Parameters y en el panel derecho, para Display Null value As, introduzca un valor
adecuado.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Valores Nulos en Expresionesle
Aritmticas
N
b
a
O
I de columna
Si cualquier valor
er en una expresin aritmtica es nulo, el resultado es nulo. Por ejemplo,
C
f
s
A
si intentaD
realizar una
entre cero, recibir un error. Sin embargo, si divide un nmero entre
andivisin
r
t
unFvalor
el
resultado
ser
nulo o desconocido.
UNnulo,
n
o
n
En el ejemplo de la diapositiva, el empleado Whalen no percibe ninguna comisin. Porque la
columna COMMISSION_PCT en la expresin aritmtica es nula, por lo tanto, el resultado es nulo.
Para obtener ms informacin, consulte la seccin sobre elementos bsicos de Oracle SQL en Oracle
Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la
base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Alias de columnas
Uso del operador de concatenacin, cadenas de
caracteres de literales, operador de comillas alternativo y
palabra clave DISTINCT
Comando DESCRIBE
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Definicin de Alias de Columna
le
N
b
a
O
I defeunar consulta, SQL Developer normalmente utiliza el nombre de la
Al mostrar el resultado
C
s la cabecera de columna. Esta cabecera puede que no sea descriptiva y,
A
columna D
seleccionada
ncomo
a
r
N
t
por
lo tanto, puede
U
n- resultar difcil de entender. Puede cambiar una cabecera de columna mediante un
F
o
n
alias de columna.
Especifique el alias despus de la columna en la lista SELECT con un espacio como separador. Por
defecto, las cabeceras de alias aparecen en mayscula. Si el alias contiene espacios o caracteres
especiales (como # o $) o si es sensible a maysculas/minsculas, incluya el alias entre comillas
dobles ("").
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Alias de Columna
le
N
b
a
O
r nombres y los porcentajes de comisin de todos los empleados.
I muestrafelos
El primer ejemplo
Cpalabra
s
A
Observe que
la
clave
opcional AS se ha utilizado antes que el nombre de alias de columna. El
D tran
N
resultado
es el mismo si se utiliza o no la palabra clave AS. Observe tambin que la
U deolanconsulta
F
n
sentencia SQL tiene los alias de columna name y comm en minscula, mientras que el resultado de
SELECT last_name "Name" , salary*12 "Annual Salary"
FROM
employees;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Alias de columnas
Uso del operador de concatenacin, cadenas de
caracteres de literales, operador de comillas alternativo y
palabra clave DISTINCT
Comando DESCRIBE
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Operador de Concatenacin
Un operador de concatenacin:
Enlaza columnas o cadenas de caracteres a otras columnas
Se representa con dos barras verticales (||)
Crea una columna resultante que es una expresin de
carcter
SELECT
FROM
last_name||job_id AS "Employees"
employees;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Operador de Concatenacin le
rabcolumnas, expresiones aritmticas o valores constantes para crear
ION afeotras
Puede enlazar C
columnas
una expresin
ns con el operador de concatenacin (||). Las columnas a ambos lados del
DA detcarcter
a
r
N
operador
n- para crear una sola columna de salida.
FU nseocombinan
En el ejemplo, LAST_NAME y JOB_ID estn concatenados y se les ha otorgado el alias
Employees. Observe que el apellido del empleado y cdigo de trabajo se combinan para crear una
nica columna de salida.
La palabra clave AS antes del nombre de alias facilita la lectura de la clusula SELECT.
Valores Nulos con el Operador de Concatenacin
Si concatena un valor nulo con una cadena de caracteres, el resultado es una cadena de caracteres.
LAST_NAME || NULL tiene como resultado LAST_NAME.
Nota: tambin puede concatenar expresiones de fecha con otras expresiones o columnas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Cadenas de Caracteres Literales
le
N
b
a
O
Un literal es un carcter,
un
I
ernmero o una fecha que se incluye en la lista SELECT. No es un nombre
C
f
s
A
de columna
o un alias
nde columna. Se imprime para cada fila devuelta. Las cadenas literales de texto
apueden
r
NDlibre
t
de formato
se
incluir en el resultado de consultas y se tratan igual que la lista SELECT.
U
F non
Los literales de caracteres y fecha se deben delimitar con comillas simples (' '); no es necesario
delimitar los literales de nmero de forma similar.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Cadenas de CaracteresleLiterales
ab los apellidos y cdigos de trabajo de todos los empleados. La
ON fermuestra
El ejemplo de C
la Idiapositiva
A la cabecera
columna D
tiene
ns Employee Details. Observe los espacios incluidos entre comillas simples
a
r
N
t
en laUsentencia
Los espacios mejoran la legibilidad de la salida.
F nonSELECT.
En el siguiente ejemplo, el apellido y el salario de cada empleado se concatenan con un literal para
proporcionar a las filas devueltas ms significado:
SELECT last_name ||': 1 Month salary = '||salary Monthly
FROM
employees;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
Operador de Comillas P
(q)R
Alternativo
le
N
b
a
O
r utilizan literales de caracteres en expresiones o condiciones. Si el
I
Muchas de lasC
sentencias
SQL
ecomilla
f
s
A
propio literal
contiene
una
simple, puede utilizar el operador de comillas (q) y seleccionar su
D tran
N
propio
n- de entrecomillado.
FU delimitador
o
n
Puede seleccionar cualquier delimitador adecuado, ya sea de un solo byte o multibyte, o bien
cualquiera de los siguientes pares de caracteres: [ ], { }, ( ) o < >.
En el ejemplo, la cadena contiene una comilla simple, que normalmente se interpreta como un
delimitador de una cadena de caracteres. Sin embargo, al utilizar el operador q, los corchetes [] se
utilizan como delimitador de entrecomillado. La cadena entre los delimitadores de corchetes se
interpreta como una cadena de caracteres literales.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Filas Duplicadas
La visualizacin por defecto de las consultas incluye todas las
filas, tambin las filas duplicadas.
SELECT department_id
FROM
employees;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Filas Duplicadas
le
N
b
a
O
I lo contrario,
A menos que indique
er SQL muestra los resultados de una consulta sin eliminar las filas
C
f
s
A
duplicadas.
nejemplo de la diapositiva muestra todos los nmeros de departamento de la
raObserve
ND Elnprimer
t
tabla
EMPLOYEES.
que los nmeros de departamento se repiten.
U
F no
Para eliminar filas duplicadas en el resultado, incluya la palabra clave DISTINCT en la clusula
Nota: tambin puede especificar la palabra clave UNIQUE, que es un sinnimo de la palabra clave
DISTINCT.
Oracle Database: Conceptos Fundamentales de SQL I 1-24
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Alias de columnas
Uso del operador de concatenacin, cadenas de
caracteres de literales, operador de comillas alternativo y
palabra clave DISTINCT
Comando DESCRIBE
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Visualizacin de la Estructura lde
e la Tabla
N
b
a
O
Puede mostrar la Iestructuraede
r una tabla mediante el comando DESCRIBE. El comando muestra los
C
f
s
A
nombres D
columna
de dato e indica si una columna debe contener datos (es decir, si la
any los tiposNOT
rrestriccin
N de
t
columna
tienenuna
NULL).
U
F no
En la sintaxis, table name es el nombre de cualquier tabla existente, vista o sinnimo accesible al
usuario.
Mediante la interfaz grfica de usuario de SQL Developer, puede seleccionar el rbol Connections y
utilizar el separador Columns para ver la estructura de la tabla.
Nota: el comando DESCRIBE est soportado tanto en SQL*Plus como en SQL Developer.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DESCRIBE employees
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Comando DESCRIBE
P
N rabselmuestra la informacin sobre la estructura de la tabla EMPLOYEES
O
En el ejemplo de Ila
diapositiva
C sfe
medianteD
el A
comandonDESCRIBE.
N n-traresultante, Null indica que los valores de esta columna pueden ser desconocidos.
U
En
la
visualizacin
F no
NOT NULL
indica que una columna debe contener datos. Type muestra el tipo de dato de una
columna.
Los tipos de dato se describen en la siguiente tabla:
Tipo de Dato
NUMBER(p,s)
VARCHAR2(s)
DATE
Descripcin
Valor numrico que tiene un nmero mximo de dgitos p, con
dgitos s a la derecha del punto decimal.
Valor del carcter de longitud de variable del tamao mximo s.
Valor de fecha y hora entre el 1 de enero de 4712 a.C. y el
31 de diciembre de 9999 d.C.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Identificar las sentencias SELECT que se ejecutan correctamente.
1. SELECT first_name, last_name, job_id, salary*12
AS Yearly Sal
FROM
employees;
2. SELECT first_name, last_name, job_id, salary*12
"yearly sal"
FROM
employees;
3. SELECT first_name, last_name, job_id, salary AS
"yearly sal"
FROM
employees;
s
a
h
rg)
o
sa ide
e
d
4. SELECT first_name+last_name AS name, job_Id,
roy nt Gu
p
salary*12 yearly sal
@ tude
n
o
i
FROM
employees;
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 2, 3
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Escribir una sentencia SELECT que:
Devuelva todas las filas y columnas de una tabla
Devuelva las columnas especificadas de una tabla
Utilice alias de columna para mostrar cabeceras de columna
ms descriptivas
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r
I haber aprendido
En esta leccin,
debe
cmo recuperar datos de una tabla de base de datos con la
AC ansfe
sentenciaD
SELECT.
N SELECT
column [alias],...}
n-tr *|{[DISTINCT]
FU noFROM
table;
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
En la sintaxis:
SELECT
*
DISTINCT
column|expression
alias
FROM table
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 1: Visin General
le
N
b
a
O
En esta prctica, Iescribir e
consultas
simples SELECT. Las consultas tratan la mayora de las
r
C
f
s
A
operaciones
y
clusulas
SELECT
que
ha aprendido en esta leccin.
D tran
N
FU non-
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Limitar las filas recuperadas por una consulta
Ordenar las filas recuperadas por una consulta
Usar la sustitucin con ampersand para restringir y
ordenar la salida en tiempo de ejecucin
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
r de datos, puede que necesite realizar las siguientes acciones:
I deflaebase
Al recuperar los
datos
C
s
A
Restringir
n de datos que se muestran
aorden
rfilas
ND nlas
t
Especificar
el
en el que aparecen las filas
U
F no
Esta leccin explica las sentencias SQL que se utilizan para realizar las acciones anteriores.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Variables de sustitucin
Comandos DEFINE y VERIFY
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
EMPLOYEES
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Limitacin de Filas con una Seleccin
le
N
b
a
O
En el ejemplo C
deIla diapositiva,
que desea mostrar todos los empleados del departamento 90.
f90erde lasuponga
s
Las filas D
conAun valornde
columna DEPARTMENT_ID son las nicas que se devuelve. Este
ra es la base de la clusula WHERE en SQL.
Nde restriccin
t
mtodo
U
n
F no
recuperar todos
los empleados del
departamento 90
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Limitacin de las Filas Seleccionadas
le
N
b
a
O
Puede restringir las
que
la consulta al utilizar la clusula WHERE. Una clusula WHERE
eserdevuelve
CI filas
f
s
contiene D
unaAcondicin
que
debe
cumplir
e, inmediatamente despus, le sigue la clusula FROM. Si
n
a
r
N
t
laFcondicin
U oesn-verdadera, se devolver la fila que cumpla con la condicin.
n
En la sintaxis:
restringe la consulta a filas que cumplan con una condicin.
WHERE
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Clusula WHERE
P
N SELECT
bl recupera el ID de empleado, apellido, ID de cargo y nmero de
a
O
En el ejemplo, laIsentencia
r
feempleados del departamento 90.
s
AC
departamento
de todos
los
n
D
rael alias de columna en la clusula WHERE.
N
t
U
Nota:
puede
utilizar
n
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
SELECT last_name
de Guid
y
o
FROM
employees
pr ent
@
WHERE hire_date = '17-FEB-96' ; n
o
tud
i
S
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Fechas y Cadenas de Caracteres
le
N
b
a
O
Las fechas y cadenas
de la clusula WHERE se deben incluir entre comillas simples
I de caracteres
fer numricas
AC alasnsconstantes
(''). SinD
embargo,
no se deben incluir entre comillas simples.
r
N
t
Todas
n- de caracteres son sensibles a maysculas/minsculas. En el siguiente ejemplo,
FU lasnbsquedas
o
no se devuelve ninguna fila porque la tabla EMPLOYEES almacena todos los apellidos en minscula
y en mayscula:
SELECT last_name, job_id, department_id
FROM
employees
WHERE last_name = 'WHALEN';
Las bases de datos Oracle almacenan fechas en un formato numrico interno que representa el siglo,
el ao, el mes, las horas, los minutos y los segundos. La visualizacin de la fecha por defecto es
DD-MON-RR.
Nota: para obtener ms informacin sobre el formato RR y sobre cmo cambiar el formato de fecha
por defecto, consulte la leccin titulada Uso de Funciones de Una Sola Fila para Personalizar la
Salida. Adems, aprender acerca del uso de funciones de una sola fila como UPPER y LOWER para
sustituir la sensibilidad a maysculas/minsculas en la misma leccin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Operadores de Comparacin
Operador
Significado
Igual que
>
Mayor que
>=
<
Menor que
<=
<>
Distinto de
s
a
h
rg)
o
IN(set)
Coincide con cualquiera de los
sa ide
e
d
valores de una lista
y t Gu
LIKE
Coincide con un patrn de ro
p
@ tuden
caracteres
IS NULL
Es un valor nulo ion
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Operadores de Comparacin le
N rabse utilizan en condiciones que comparan una expresin con otra
IOcomparacin
Los operadoresCde
fe en la clusula WHERE en el siguiente formato:
s
expresinD
oA
valor. Sen
utilizan
N n-tra
U
Sintaxis
F no
... WHERE expr operator value
BETWEEN
...AND...
Ejemplo
... WHERE hire_date = '01-JAN-95'
... WHERE salary >= 6000
... WHERE last_name = 'Smith'
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Operadores de Comparacin
le
N
b
a
O
En el ejemplo, laIclusula e
SELECT
recupera el apellido y el salario de la tabla EMPLOYEES para
r
C
f
s
A
cualquierD
n salario sea menor o igual que 3.000 dlares. Tenga en cuenta que existe un
acuyo
r
N empleado
t
valor
explcito
proporcionado
a la clusula WHERE. El valor explcito de 3000 se compara con el
U
n
F
o
n
valor de salario de la columna SALARY de la tabla EMPLOYEES.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice el Operador BETWEEN
RO emediante
l
Uso de Condiciones dePRango
Nbasadas
blun rango de valores utilizando la condicin de rango BETWEEN. El
a
O
Puede utilizar lasIfilas
en
r
sfe un lmite inferior y un lmite superior.
AC ancontiene
rango queDespecifique
-tr de la diapositiva devuelve filas de la tabla EMPLOYEES para cualquier
UN oSELECT
La
n
Fsentencia
empleadoncuyo salario est entre 2.500 y 3.500 dlares.
Tambin se incluyen los valores que se especifiquen con el operador BETWEEN. Debe especificar
primero el lmite inferior.
Tambin puede utilizar la condicin BETWEEN en los valores de caracteres:
SELECT last_name
FROM
employees
WHERE last_name BETWEEN 'King' AND 'Smith';
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
e
RO e ellicOperador
Condicin de MiembroP
mediante
IN
l
N
b
Para probar valores
ra especificado de valores, utilice el operador IN. La condicin
IOde unfejuego
C
s IN tambin se denomina condicin de miembro.
definida mediante
operador
DA trelan
N
U odenla- diapositiva muestra los nmeros de empleado, apellidos, salarios y nmeros de
ElFejemplo
empleadonde los gestores de todos los empleados cuyo nmero de empleado del gestor sea 100, 101 o
201.
Nota: el juego de valores se puede especificar en cualquier orden aleatorio (por ejemplo,
201,100,101).
La condicin IN se puede utilizar con cualquier tipo de dato. El siguiente ejemplo devuelve una fila
de la tabla EMPLOYEES para cualquier empleado cuyo apellido est incluido en la lista de nombres
de la clusula WHERE:
SELECT employee_id, manager_id, department_id
FROM
employees
WHERE last_name IN ('Hartstein', 'Vargas');
Si los caracteres o fechas se utilizan en la lista, se deben incluir entre comillas simples ('').
Nota: el servidor de Oracle evala el operador IN internamente como un juego de condiciones OR,
como a=value1 o a=value2 o a=value3. Por lo tanto, el uso del operador IN no tiene ninguna
ventaja de rendimiento y slo se utiliza para la simplicidad lgica.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
first_name
employees
first_name LIKE 'S%' ;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
Rmediante
Coincidencia de Patrones
P
e el Operador LIKE
l
N
b
rael valor exacto que debe buscar. Puede seleccionar filas que coincidan
IO conozca
Puede que no siempre
e
C
f
con un patrn
ns utilizando la condicin LIKE. Se hace referencia a la operacin de
DA detcaracteres
a
r
N
coincidencia
U ode
n-patrn de caracteres como bsqueda con comodines. Para crear la cadena de
F
n
bsqueda se pueden utilizar dos smbolos.
Smbolo
Descripcin
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
Puede utilizar el identificador ESCAPE para buscar los
o e
a
s
smbolos % y _ reales.
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Combinacin de Caracteres Comodn
le
N
b
a
O
Los smbolos % yI_ se pueden
er utilizar en cualquier combinacin con los caracteres literales. El
C
f
s
A
ejemplo de
la diapositiva
n muestra los nombres de todos los empleados cuyos apellidos tengan la letra
acarcter.
r
NDsegundo
t
o
como
U
F non
Identificador
ESCAPE
Cuando necesite tener una coincidencia exacta para los caracteres % y _ reales, utilice el
identificador ESCAPE. Esta opcin especifica lo que representa el carcter de escape. Si desea buscar
cadenas que contengan SA_, puede utilizar la siguiente sentencia SQL:
SELECT employee_id, last_name, job_id
FROM
employees WHERE job_id LIKE '%SA\_%' ESCAPE '\';
El identificador ESCAPE identifica la barra invertida (\) como carcter de escape. En la sentencia
SQL, el carcter de escape precede al guin bajo (_). Esto hace que el servidor de Oracle interprete el
carcter de subrayado literalmente.
Oracle Database: Conceptos Fundamentales de SQL I 2-13
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de las Condiciones
NULL
P
Nincluyen
blasl condiciones IS NULL e IS NOT NULL.
a
O
Las condiciones NULL
r
I
C nsfe
AIS
La condicin
NULL
D
a prueba las condiciones nulas. Un valor nulo significa que el valor no est
r
N
t
U
disponible,
F
ononest asignado, se desconoce o no es aplicable. Por lo tanto, no puede probar con =
porque unnvalor nulo no puede ser igual o desigual a cualquier valor. El ejemplo de la diapositiva
recupera los apellidos y gestores de todos los empleados que no tienen un gestor.
Aqu se muestra otro ejemplo: Para mostrar un apellido, ID de cargo y comisin de todos los
empleados que no tienen derecho a recibir una comisin, utilice la siguiente sentencia SQL:
SELECT last_name, job_id, commission_pct
FROM
employees
WHERE commission_pct IS NULL;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Significado
AND
OR
NOT
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Definicin de Condiciones mediante
le los Operadores Lgicos
N
b
a
O
I combina
Una condicinC
lgica
er el resultado de dos condiciones de componentes para producir un
f
s
A
resultadoD
nico basado
condiciones o invierte el resultado de una condicin nica. Se
ansieneldichas
r
N una
t
devuelve
fila
slo
resultado
global de la condicin es verdadera.
U
F non
En SQL, estn disponibles tres operadores lgicos:
AND
OR
NOT
Todos los ejemplos indicados hasta ahora han especificado slo una condicin en la clusula WHERE.
Puede utilizar varias condiciones en una nica clusula WHERE mediante los operadores AND y OR.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Uso del Operador AND PR le li
b deben ser verdaderas para poder seleccionar cualquier registro. Por
a
r
IONcondiciones
En el ejemplo,C
ambas
e
sf los empleados que tengan un puesto que contenga la cadena MAN y
Ase seleccionan
lo tanto, slo
n
D
a
N n-trdlares o ms.
que
FUganenn10.000
o
Todas las bsquedas de caracteres son sensibles a maysculas/minsculas, es decir, no se devuelve
ninguna fila si MAN no est en maysculas. Las cadenas de caracteres se deben incluir entre
comillas simples.
Tabla de Verdad AND
La siguiente tabla muestra los resultados de combinar dos expresiones con AND:
AND
TRUE
FALSE
NULL
TRUE
TRUE
FALSE
NULL
FALSE
FALSE
FALSE
FALSE
NULL
NULL
FALSE
NULL
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Uso del Operador OR PR le li
rab de componente debe ser verdadera para poder seleccionar
ION fcondicin
En el ejemplo,C
cualquier
e
A Por
cualquierD
registro.
nlos tanto, slo se seleccionan los empleados que tengan un ID de trabajo que
a
r
N
t
contenga
n- MAN o que ganen 10.000 dlares o ms.
FU nlaocadena
Tabla de Verdad OR
La siguiente tabla muestra los resultados de combinar dos expresiones con OR:
OR
TRUE
FALSE
NULL
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
NULL
NULL
TRUE
NULL
NULL
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Uso del Operador NOT PR le li
N rabse muestra el apellido y el ID de trabajo de todos los empleados cuyo
Odiapositiva
En el ejemplo C
deIla
sfe ST_CLERK o SA_REP.
Ano seaaIT_PROG,
ID de trabajo
n
D
N n-trNOT
Tabla
FU denVerdad
o
La siguiente tabla muestra el resultado de aplicar el operador NOT a una condicin:
NOT
TRUE
FALSE
FALSE
TRUE
NULL
NULL
Nota: el operador NOT tambin se puede utilizar con otros operadores SQL, como BETWEEN, LIKE
y NULL.
...
...
...
...
WHERE
WHERE
WHERE
WHERE
job_id
NOT IN ('AC_ACCOUNT', 'AD_VP')
salary
NOT BETWEEN 10000 AND 15000
last_name NOT LIKE '%A%'
commission_pct IS
NOT NULL
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Variables de sustitucin
Comandos DEFINE y VERIFY
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Reglas de Prioridad
Operador
Significado
Operadores aritmticos
Operador de concatenacin
Condiciones de comparacin
[NOT] BETWEEN
a
s
a
7
)h
g
r
o e
Condicin lgica AND
8
a
s
de Guid
y
Condicin lgica OR
9
o
pr ent
@
onlas reglas
tudde prioridad.
Puede utilizar los parntesis para sustituir
i
S
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Reglas de Prioridad
le
N
b
a
O
I determinan
Las reglas de prioridad
er el orden en el que se evalan y calculan las expresiones. La tabla
C
f
s
A
de la diapositiva
de prioridad por defecto. Sin embargo, puede sustituir el orden por
D tmuestra
an el orden
r
Nutilizando
defecto
parntesis
en
las
expresiones que desee calcular primero.
U
F non
6
Distinto de
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Reglas de Prioridad
SELECT
FROM
WHERE
OR
AND
s
a
h
2 g)
or
a
es uide
d
y
ro nt G
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Reglas de Prioridad (continuacin)
le
N
b
a
O
1. Prioridad del
I Operador
er AND: Ejemplo
C
f
s
A
En este
nhay dos condiciones:
D ejemplo,
acondicin
r
N
t
- La primera
es que el ID de cargo sea AD_PRES y que el salario sea superior a
U
F n15.000
on dlares.
SELECT
FROM
WHERE
OR
AND
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Variables de sustitucin
Comandos DEFINE y VERIFY
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RBY
Uso de la Clusula ORDER
P
le
N
b
a
O
El orden de las filas
r en un resultado de consulta no est definido. La clusula ORDER BY se
I devueltas
elas
C
f
s
A
puede utilizar
para
ordenar
filas. Sin embargo, si utiliza la clusula ORDER BY, debe ser la ltima
D tran
N
clusula
SQL. Adems, puede especificar una expresin, un alias o una posicin de
U deolansentencia
F
n
columna como la condicin de ordenacin.
Sintaxis
SELECT
FROM
[WHERE
[ORDER BY
expr
Tabla
condition(s)]
{column, expr, numeric_position} [ASC|DESC]];
En la sintaxis:
ORDER BY
especifica el orden en el que aparecen las filas recuperadas.
ASC
ordena las filas en orden ascendente (orden por defecto).
DESC
ordena las filas en orden descendente.
Si la clusula ORDER BY no se utiliza, el orden no est definido y puede que el servidor de Oracle no
recupere dos veces las filas en el mismo orden para la misma consulta. Utilice la clusula ORDER BY
para mostrar las filas en un orden especfico.
Nota: utilice las palabras clave NULLS FIRST o NULLS LAST para especificar si las filas devueltas
que contengan valores nulos deben aparecer en primer o en ltimo lugar en la secuencia de
ordenacin.
Oracle Database: Conceptos Fundamentales de SQL I 2-23
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Ordenacin
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Ordenacin
le
N
b
a
O
r ascendente:
I es elfeorden
El orden por defecto
C
s
A
Los D
numricos
n se muestran con los valores ms bajos primero (por ejemplo, de 1 a 999).
afecha
r
Nvalores
t
Los
valores
de
U
F antesndeon01-ENE-95).se muestran con el primer valor en primer lugar (por ejemplo, 01-ENE-92
Los valores de caracteres se muestran en orden alfabtico (por ejemplo, primero la A y por
ltimo la Z).
Los valores nulos se muestran al final para las secuencias ascendentes y al principio para las
secuencias descendentes.
Puede ordenar por una columna que no est en la lista SELECT.
Ejemplos
1. Para invertir el orden en el que se muestran las filas, especifique la palabra clave DESC despus
del nombre de columna en la clusula ORDER BY. El ejemplo de la diapositiva ordena el
resultado por el empleado contratado ms recientemente.
2. Tambin puede utilizar un alias de columna en la clusula ORDER BY. El ejemplo de la
diapositiva ordena los datos por salario anual.
Nota: la palabra clave DESC que se utiliza aqu para la ordenacin en orden descendente no se debe
confundir con la palabra clave DESC utilizada para describir las estructuras de tabla.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Ordenacin
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Ordenacin (continuacin) le
ION ferab
Ejemplos
C
A alosnsresultados de la consulta especificando la posicin numrica de la columna en
Dordenar
3. Puede
N
tr
-SELECT.
El ejemplo de la diapositiva ordena el resultado por department_id, ya
n
FUla clusula
o
n columna est en la tercera posicin en la clusula SELECT.
que esta
4. Puede ordenar los resultados de la consulta por ms de una columna. El lmite de ordenacin es
el nmero de columnas de la tabla determinada. En la clusula ORDER BY, especifique las
columnas y separe los nombres de columna con comas. Si desea invertir el orden de una
columna, especifique DESC despus del nombre. El resultado del ejemplo de consulta que se
muestra en la diapositiva est ordenado por department_id en orden ascendente y por salary en
orden descendente.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Variables de sustitucin
Comandos DEFINE y VERIFY
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Variables de Sustitucin
... salary = ?
department_id = ?
... last_name = ? ...
Deseo
consultar
diferentes
valores.
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Variables de Sustitucin
le
N
b
a
O
r se han ejecutado con columnas y condiciones predeterminadas y sus
I
Hasta ahora lasCsentencias
eSQL
f
s
A
valores. Supongamos
D tranque desea realizar una consulta que muestre los empleados con diferentes
Nexcepto
cargos,
U
n-aqullos cuyo job_ID no sea SA_REP. Puede editar la clusula WHERE para
F
o
n
proporcionar un valor diferente cada vez que ejecute el comando, pero existe tambin una forma ms
sencilla.
Si se utiliza una variable de sustitucin en lugar de los valores exactos en la clusula WHERE, puede
ejecutar la misma consulta para diferentes valores.
Puede crear informes que soliciten a los usuarios que proporcionen sus propios valores para restringir
el rango de datos devuelto utilizando las variables de sustitucin. Puede embeber las variables de
sustitucin en un archivo de comandos o en una nica sentencia SQL. Una variable se puede
considerar como un contenedor en el que se almacenan los valores temporalmente. Cuando se ejecuta
la sentencia, el valor se sustituye.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Variables de Sustitucin
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Variables de Sustitucin (continuacin)
le
N
b
a
O
Puede utilizar variables
de un solo ampersand (&) para almacenar valores
r
I defesustitucin
C
s
A
temporalmente.
D tran
N
U
Tambin
n-predefinir variables mediante el comando DEFINE. DEFINE crea y asigna un valor
F npuede
o
a una variable.
Rangos de Datos Restringidos: Ejemplos
Informes de cifras slo del trimestre actual o de un rango de fechas especfico
Informes sobre datos relevantes slo del usuario que solicita el informe
Visualizacin del personal de slo un departamento determinado
Otros Efectos Interactivos
Los efectos interactivos no estn restringidos para dirigir la interaccin del usuario a la clusula
WHERE. Los mismos principios se pueden utilizar tambin para conseguir otros objetivos, como:
Obtener los valores de entrada de un archivo en lugar de obtenerlos de una persona
Transferir valores de una sentencia SQL a otra
Nota: tanto SQL Developer como SQL* Plus soportan las variables de sustitucin y los comandos
DEFINE/UNDEFINE. Ni SQL Developer ni iSQL*Plus soportan las comprobaciones de validacin
(excepto para tipos de dato) en la entrada de usuario. Si se utilizan en scripts que se despliegan a
usuarios, las variables de sustitucin se pueden manipular para ataques de inyeccin de SQL.
Oracle Database: Conceptos Fundamentales de SQL I 2-28
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de la Variable de Sustitucin
le de Un Solo Ampersand
N
b
a
O
r
I losfeusuarios
Al ejecutar unC
informe,
a menudo desean restringir los datos que se devuelve de forma
s
A
dinmica.D
proporciona esta flexibilidad con las variables de usuario.
ano(&)SQLparaDeveloper
r
Nun SQL*Plus
t
Utilice
ampersand
identificar
cada variable en la sentencia SQL. Sin embargo, no es
U
n
F
o
n
necesario que defina el valor de cada variable.
Notacin
Descripcin
&user_variable
El ejemplo de la diapositiva crea una variable de sustitucin de SQL Developer para un nmero de
empleado. Al ejecutar la sentencia, SQL Developer solicita al usuario un nmero de empleado y, a
continuacin, muestra el nmero de empleado, apellido, salario y nmero de departamento de ese
empleado.
Con un solo ampersand, si la variable no existe, se pregunta al usuario cada vez que se ejecuta el
comando.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de la Variable de Sustitucin
le de Un Solo Ampersand (continuacin)
N
b
a
O
I
Cuando SQL Developer
detecte
er que la sentencia SQL contiene un ampersand, se le solicitar que
C
f
s
A
introduzca
n la variable de sustitucin que se menciona en la sentencia SQL.
Dun valor
apara
r
N
t
U
Despus
introducir
un valor y hacer clic en el botn OK, los resultados aparecen en el separador
n
F de
o
n
Results de la sesin de SQL Developer.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Valores de Fecha y Carcter con
le Variables de Sustitucin
N
b
a
O
En la clusula WHERE,
r de fecha y carcter se deben incluir entre comillas simples. La
I losfevalores
C
s
A
misma regla
D se aplica
ana las variables de sustitucin.
r
N
t
U
Incluya
F lanvariable
on entre comillas simples en la sentencia SQL en s.
La diapositiva muestra una consulta para recuperar los nombres de los empleados, nmeros de
departamento y salarios anuales de todos los empleados segn el valor del puesto de la variable de
sustitucin SQL Developer.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Especificacin de Nombres dele
Columna, Expresiones y Texto
N
b
a
O
No slo puede utilizar
de sustitucin en la clusula WHERE de una sentencia SQL, sino
r
I lasfevariables
C
s
A
tambin como
D sustitucin
an de nombres de columna, expresiones o texto.
r
N
t
U
Ejemplo
F non
El ejemplo de la diapositiva muestra el nmero de empleado, apellido, puesto y cualquier otra
columna especificada por el usuario en tiempo de ejecucin de la tabla EMPLOYEES. Para cada
variable de sustitucin de la sentencia SELECT, se le solicitar que introduzca un valor y, a
continuacin, tendr que hacer clic en el botn OK para continuar.
Si no introduce un valor para la variable de sustitucin, obtendr un error cuando ejecute la sentencia
anterior.
Nota: una variable de sustitucin se puede utilizar en cualquier lugar de la sentencia SELECT,
excepto como la primera palabra introducida en el smbolo del sistema.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Variables de Sustitucin
le de Dos Ampersands
N
b
a
O
Puede utilizar la variable
de
I
ersustitucin de dos ampersands (&&) si desea reutilizar el valor de la
C
f
s
A
variable sin
El usuario visualiza la solicitud del valor slo una vez. En
D preguntar
ansiempresealleusuario.
r
t
elFejemplo
la
diapositiva,
solicita
al
usuario que proporcione el valor para la variable
UN de
n
o
n
column_name una vez. El valor proporcionado por el usuario (department_id) se utiliza para
la visualizacin y el orden de los datos. Si vuelve a ejecutar la consulta, no se le pedir el valor de la
variable.
SQL Developer almacena el valor proporcionado con el comando DEFINE; lo vuelve a utilizar cada
vez que haga referencia al nombre de la variable. Despus de que una variable de usuario est
colocada, necesitar utilizar el comando UNDEFINE para suprimirla de la siguiente forma:
UNDEFINE column_name
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Variables de sustitucin
Comandos DEFINE y VERIFY
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
UNDEFINE employee_num
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Comando DEFINE
P
N
bl de sustitucin para un nmero de empleado utilizando el
a
O
r
I
El ejemplo mostrado
crea
una
variable
fe de ejecucin, muestra el nmero de empleado, nombre, salario y
AC aEnnstiempo
comandoD
DEFINE.
N n-tr
nmero
de ese empleado.
FU dendepartamento
o
Debido a que la variable se crea utilizando el comando DEFINE de SQL Developer, no se le solicita
al usuario introducir un valor para el nmero de empleado. En su lugar, el valor de la variable
definida se sustituye automticamente en la sentencia SELECT.
La variable de sustitucin EMPLOYEE_NUM est en la sesin hasta que el usuario anula su definicin
o si sale de la sesin de SQL Developer.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Comando VERIFY
P
l
N en
bsentencia
a
O
Para confirmar los
cambios
la
SQL, utilice el comando VERIFY. La definicin de SET
r
I
C sfeDeveloper a mostrar
VERIFYD
ONAfuerza anSQL
el texto de un comando despus de que sustituya las
a
r
N
t
variables
por valores. Para ver la salida de VERIFY, debe utilizar el icono Run Script
U deosustitucin
nF
n
(F5) en la hoja de trabajo de SQL. SQL Developer muestra el texto de un comando despus de que
sustituya las variables de sustitucin por valores, en el separador Script Output como se muestra en la
diapositiva.
El ejemplo de la diapositiva muestra el nuevo valor de la columna EMPLOYEE_ID en la sentencia
SQL seguida de la salida.
Variables del Sistema SQL*Plus
SQL*Plus utiliza varias variables del sistema que controlan el entorno de trabajo. Una de esas
variables es VERIFY. Para obtener una lista completa de todas las variables del sistema, puede emitir
el comando SHOW ALL en el smbolo del sistema de SQL*Plus.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Cules de los siguientes operadores son vlidos para la
clusula WHERE?
1. >=
2. IS NULL
3. !=
4. IS LIKE
5. IN BETWEEN
6. <>
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1, 2, 3, 6
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Usar la clusula WHERE para restringir las filas de la salida:
Usar las condiciones de comparacin
Usar los operadores BETWEEN, IN, LIKE y NULL
Aplicar los operadores lgicos AND, OR y NOT
a
s
a
)h
g
r
o e
a
s
Usar la sustitucin con ampersand para restringir
id la
dey ordenar
u
y
G
o
salida en tiempo de ejecucin
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
En esta leccin debe
a restringir y ordenar filas devueltas por la sentencia SELECT.
r
I haberfeaprendido
C
s
A
Tambin D
debe haber
cmo implantar varios operadores y condiciones.
n
aaprendido
r
N
t
U
AlFutilizar las
nvariables de sustitucin, puede agregar flexibilidad a las sentencias SQL. Esto permite
o
n
que las consultas soliciten condiciones de filtro para las filas durante el tiempo de ejecucin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 2: Visin General
le
N
b
a
O
En esta prctica se
crean ms
informes, incluidas sentencias que utilizan las clusulas WHERE y
erlas
CI hacer
f
s
A
ORDER BY.
Puede
que
sentencias SQL sean ms reutilizables y genricas incluyendo la
D tran
N
sustitucin
FU noconn-ampersand.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Describir los diferentes tipos de funciones disponibles en
SQL
Utilizar caracteres, nmeros y funciones de fecha en
sentencias SELECT
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
I msfpotente
Las funciones C
hacen
er el bloque de consultas bsico y se utilizan para manipular los
s
A
valores deDdatos. Las
dos lecciones de este curso analizan las funciones. Se centra en
radenprimeras
N de n
t
funciones
fecha,
carcter
de una fila y de nmero.
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones SQL
Entrada
Salida
Funcin
arg 1
arg 2
La funcin realiza la
accin
Resultado
valor
s
a
h
rg)
o
sa ide
arg n
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones SQL
le
N
b
a
O
Las funciones C
sonI una caracterstica
muy potente de SQL. Se puede utilizar para realizar las
er
f
s
A
siguientesDacciones:an
N nclculos
-tr en los datos
F URealizar
o
n elementos de datos individuales
Modificar
Manipular la salida para grupos de filas
Formatear fechas y nmeros para su visualizacin
Convertir tipos de dato de columna
Algunas veces, las funciones SQL toman argumentos y siempre devuelven un valor.
Nota: si desea saber si una funcin es compatible con SQL:2003, consulte la seccin sobre
compatibilidad con SQL:2003 de la gua Oracle Database SQL Language Reference (Referencia
sobre Lenguaje SQL de Oracle Database) para la base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones
s
a
h
rg)
o
sa ide
e
Devuelve un resultado
Devuelve un
resultado
d
Gu
roy denfilas
t
por fila
por p
juego
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Dos Tipos de Funciones SQL le
ON defefunciones:
rab
Hay dos tipos C
de Igrupos
s fila
Funciones
nsola
DA detruna
a
N
n-de varias filas
F UFunciones
o
n
Funciones de Una Sola Fila
Una sola fila
funciones
Varias filas
funciones
Estas funciones funcionan slo en filas nicas y devuelven un resultado por fila. Existen distintos
tipos de funciones de una sola fila. En esta leccin se abordan los siguientes temas:
Carcter
Nmero
Fecha
Conversin
General
Funciones de Varias Filas
Las funciones pueden manipular grupos de filas para proporcionar un resultado por grupo de filas.
Estas funciones tambin se conocen como funciones de grupo (se tratan en la leccin titulada
Informes de Datos Agregados con Funciones de Grupo).
Nota: para obtener ms informacin y una lista completa de las funciones disponibles y su sintaxis,
consulte la seccin sobre funciones en Oracle Database SQL Language Reference (Referencia sobre
Lenguaje SQL de Oracle Database) para la base de datos 10g u 11g.
Oracle Database: Conceptos Fundamentales de SQL I 3-5
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
has
de
sa i
e
d
function_name [(arg1, arg2,...)]
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Una Sola Fila le
ONsolafefilarasebutilizan para manipular elementos de datos. Aceptan uno o varios
Las funciones C
deIuna
argumentos
nsun valor para cada fila devuelta por la consulta. Un argumento puede ser
DAy devuelven
a
r
N
t
uno
FUde losnsiguientes
on- elementos:
Constante proporcionada por el usuario
Valor de variable
Nombre de columna
Expresiones
Las caractersticas de las funciones de una sola fila son:
Actuar en cada fila devuelta en la consulta
Devolver un resultado por fila
Posibilidad de devolver un valor de datos de un tipo diferente al que se hace referencia
Posibilidad de esperar uno o ms argumentos
Se pueden utilizar en clusulas SELECT, WHERE y ORDER BY; posibilidad de anidamiento
En la sintaxis:
function_name
arg1, arg2
Es el nombre de la funcin.
Es cualquier argumento que utilizar la funcin. Pueden estar
representados por un nombre de columna o expresin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Carcter
General
Nmero
a
s
a
)h
g
r
o e
a
s
de Guid
Conversin
Date
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Una Sola Fila (continuacin)
le
N
b
a
O
Ilas siguientes
Esta leccin trata
er funciones de una sola fila:
C
f
s
A
Funciones
ceptan la entrada de caracteres y pueden devolver valores de nmero
n
D detracarcter:
N
y
de
carcter.
U
F Funciones
non numricas: aceptan valores de entrada y devuelven valores numricos.
Funciones de fecha: operan en valores del tipo de dato DATE. (Todas las funciones de fecha
devuelven un valor de tipo de dato DATE excepto la funcin MONTHS_BETWEEN, que devuelve
un nmero.)
Las siguientes funciones de una sola fila se tratan en las lecciones tituladas Uso de Funciones de
Conversin y Expresiones Condicionales:
Funciones de conversin: Convierten un valor de un tipo de dato a otro
Funciones generales:
- NVL
- NVL2
- NULLIF
- COALESCE
- CASE
- DECODE
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones de Carcter
Carcter
funciones
Conversin de caracteres
funciones
Manipulacin de caracteres
funciones
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Carcter
le
N
b
a
O
Las funciones C
deIcarcter e
deruna sola fila aceptan los datos de caracteres como entrada y pueden
f
s
A
devolver D
numricos
carcter. Las funciones de carcter se pueden dividir en:
an y de
r
N valores
t
Funciones
de
conversin
de
caracteres
U
F Funciones
non de manipulacin de caracteres
LOWER
UPPER
INITCAP
CONCAT
SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE
Funcin
Objetivo
LOWER(column|expression)
UPPER(column|expression)
INITCAP(column|expression)
Nota: las funciones tratadas en esta leccin son slo algunas de las funciones disponibles.
Oracle Database: Conceptos Fundamentales de SQL I 3-9
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivo
LENGTH(column|expression)
INSTR(column|expression,
string, [,m], [n] )
LPAD(column|expression, n,
'string')
RPAD(column|expression, n,
'string')
s
a
h
rg)
o
trim_character o trim_source es un literal de
carcter,
a de
debe incluirlo entre comillas simples.des
i
u
y
G
o
sta es una funcin disponible en
Oracle8i
y
versiones
pr ent
posteriores.
@
n
ud
o
t
i
S
c
REPLACE(text,
Busca una expresin
a de htexto
s para una cadena de
i
d
search_string,
n
t
caracteresfu
y, si la encuentra,
sustituirla por una cadena
replacement_string)
use
deSsustitucin
A ( toespecificada.
DE nse
Y
Nota: algunas de las funcionesO
total o parcialmente
compatibles con SQL:2003 son:
ce
i
R
l
P
UPPER
le
N
b
a
O
LOWER
CI nsfer
A
TRIM ND
ra
t
U
n
F no
LENGTH
SUBSTR
TRIM(leading|trailing|both, Permite recortar los caracteres finales o de encabezado
trim_character FROM
(o ambos) de una cadena de caracteres. Si
trim_source)
INSTR
Para obtener ms informacin, consulte la seccin sobre compatibilidad de Oracle con Core
SQL:2003 en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de
Oracle Database) para la base de datos 10g u 11g .
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resultado
LOWER('SQL Course')
sql course
UPPER('SQL Course')
SQL COURSE
INITCAP('SQL Course')
Sql Course
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Conversin de Caracteres
le
N
b
a
O
LOWER, UPPER yI INITCAP
r son las tres funciones de conversin de caracteres.
C nslasfecadenas
A
LOWER:
convierte
de caracteres en maysculas o en maysculas/minsculas a
D
a
r
N
t
minsculas.F UUPPER:
nonconvierte las cadenas de caracteres en minscula o en maysculas/minsculas a
maysculas.
INITCAP: convierte la primera letra de cada palabra a maysculas y el resto de las letras a
minsculas.
SELECT 'The job id for '||UPPER(last_name)||' is '
||LOWER(job_id) AS "EMPLOYEE DETAILS"
FROM
employees;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Funciones de Conversin
le de Caracteres
N
b
a
O
El ejemplo de C
la Idiapositiva
ermuestra el nmero de empleado, nombre y nmero de departamento del
f
s
A
empleadoD
Higgins:an
N
-tr de la primera sentencia SQL especifica el nombre del empleado como
U
La
WHERE
n
Fclusula
o
n Debido a que todos los datos de la tabla EMPLOYEES estn almacenados correctamente,
higgins.
el nombre higgins no encuentra ninguna coincidencia en la tabla y no se selecciona ninguna fila.
La clusula WHERE de la segunda sentencia SQL especifica que el nombre del empleado de la tabla
EMPLOYEES se compara con higgins, convirtiendo la columna LAST_NAME a minsculas para
poder compararla. Ya que ambos nombres no estn en minsculas, se ha encontrado una coincidencia
y se ha seleccionado una fila. La clusula WHERE se puede volver a escribir de la siguiente forma
para que produzca el mismo resultado:
...WHERE last_name = 'Higgins'
El nombre de la salida aparece tal y como se almacen en la base de datos. Para mostrar el nombre
en maysculas, utilice la funcin UPPER de la sentencia SELECT.
SELECT employee_id, UPPER(last_name), department_id
FROM
employees
WHERE INITCAP(last_name) = 'Higgins';
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resultado
CONCAT('Hello', 'World')
HelloWorld
SUBSTR('HelloWorld',1,5)
Hello
LENGTH('HelloWorld')
10
INSTR('HelloWorld', 'W')
LPAD(salary,10,'*')
*****24000
24000*****
s
a
h
rg)
REPLACE
BLACK and BLUE
o
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
2
3
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
1
3tud
2 ion
S
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de las Funciones de Manipulacin
de Caracteres
le
N
b
a
O
I
El ejemplo de C
la diapositiva
ermuestra los nombres y apellidos de los empleados que se han unido, la
f
s
A
longitud del
apellido
empleado y la posicin numrica de la letra a en el apellido del empleado
andelque
r
ND
t
de todos
los empleados
tienen la cadena REP incluida en el ID de trabajo que empieza en la
U
n
F
o
n
cuarta posicin de dicho ID.
Ejemplo:
Modifique la sentencia SQL de la diapositiva para mostrar los datos de los empleados cuyos
apellidos acaben con la letra n.
SELECT
LENGTH
FROM
WHERE
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones Numricas
Resultado
ROUND(45.926, 2)
45.93
TRUNC(45.926, 2)
45.92
MOD(1600, 300)
100
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones Numricas
le
N
b
a
O
I
Las funciones C
numricas
aceptan
er entradas numricas y devuelven valores numricos. Esta seccin
f
s
A
describe algunas
ND n-tderalasn funciones numricas.
U
Objetivo
FFuncinno
ROUND(column|expression, n)
Nota: esta lista contiene slo algunas de las funciones numricas disponibles.
Para obtener ms informacin, consulte la seccin sobre funciones numricas en la gua Oracle
Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la
base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
3
1
2
)h
g
r
o e
a
s
e los uid
DUAL es una tabla pblica que puede utilizar parayd
ver
G
o
r
t
resultados de funciones y clculos.
p
n
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin ROUND
P
l
N ra
bcolumna,
O
La funcin ROUND
redondea
la
expresin o valor a n decimales. Si falta el segundo
I
e
C
f
s
A
argumento
de 0, el valor se redondea a cero decimales. Si el segundo argumento
Do tienetrun
aelnvalor
Nvalor
tiene
un
de
2,
valor
se redondea a dos decimales. Por el contrario, si el segundo argumento es
U
n
F
o
n
2, el valor se redondea a dos decimales a la izquierda (redondeados a la unidad ms cercana a 100).
La funcin ROUND tambin se puede utilizar con las funciones de fecha. Ver varios ejemplos ms
adelante en esta leccin.
Tabla DUAL
El usuario SYS es el propietario de la tabla DUAL, a la que pueden acceder todos los usuarios.
Contiene una columna, DUMMY, y una fila con el valor X. La tabla DUAL es til cuando slo desea
devolver un valor una vez (por ejemplo, el valor de una constante, pseudocolumna o expresin que
no se deriva de una tabla con datos de usuario). La tabla DUAL se utiliza generalmente para obtener
una visin ms completa de la sintaxis de la clusula SELECT, porque las clusulas SELECT y
FROM son obligatorias y muchos clculos no tienen que realizar selecciones en las tablas reales.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
3
2
1
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin TRUNC
P
N larcolumna,
bl expresin o valor a n decimales.
a
O
La funcin TRUNC
trunca e
I
sf con argumentos similares a los de la funcin ROUND. Si falta el segundo
AC afunciona
n
La funcin
TRUNC
D
N n-trun valor de 0, el valor se trunca a cero decimales. Si el segundo argumento tiene
argumento
FU noo tiene
un valor de 2, el valor se trunca a dos decimales. Por el contrario, si el segundo argumento tiene un
valor de 2, el valor se trunca a dos decimales a la izquierda. Si el segundo argumento tiene un valor
de 1, el valor se trunca a un decimal a la izquierda.
Al igual que la funcin ROUND, la funcin TRUNC se puede utilizar con funciones de fecha.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Uso de la Funcin MODPR le li
La funcin MOD obtiene
rabdel primer argumento dividido entre el segundo argumento. El
ION elferesto
C
ejemplo de
ns calcula el resto del salario despus de dividirlo entre 5.000 de todos los
DlaAdiapositiva
a
r
N
t
empleados
n- ID de trabajo sea SA_REP.
FU nocuyo
Nota: la funcin MOD se suele utilizar para determinar si un valor es par o impar. La funcin MOD es
tambin la funcin hash de Oracle.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
SELECT last_name, hire_date
)h
g
r
FROM
employees
o e
a
s
WHERE hire_date < '01-FEB-88';
';
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Trabajo con Fechas
le
N
b
a
O
r en un formato numrico interno que representa el siglo, el ao, el
Ialmacenafefechas
Oracle Database
C
s
A
mes, las horas,
D lostrminutos
an y los segundos.
N
U
La
n por defecto y el formato de entrada de cualquier fecha es DD-MON-RR. Las fechas
Fvisualizacin
o
n
de Oracle vlidas son del 1 de enero de 4712 A.C. y el 31 de diciembre de 9999 D.C.
En el ejemplo de la diapositiva, la salida de la columna HIRE_DATE aparece en el formato por
defecto DD-MON-RR. Sin embargo, las fechas no se almacenan en la base de datos en este formato.
Se almacenan todos los componentes de la fecha y la hora. Por lo tanto, aunque un valor
HIRE_DATE de 17-JUN-87 aparezca como el da, mes y ao, tambin existe informacin de hora y
siglo asociada a la fecha. Los datos completos podran ser 17 de junio de 1987, 5:10:43 PM.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Formato de Fecha RR
AoActual
Actual
Ao
1995
1995
2001
2001
Fecha Especificada
27-OCT-95
27-OCT-17
27-OCT-17
27-OCT-95
Formato RR
1995
2017
2017
1995
Formato YY
1995
1917
2017
2095
s
a
h
Si dos de
La fecha de
g)
r
o
5099
La fecha de
devolucin est en el
siglo anterior al actual
Ao Actual
Fecha Proporcionada
Interpretada (RR)
Interpretada (YY)
1994
27-OCT-95
1995
1995
1994
27-OCT-17
2017
1917
2001
27-OCT-17
2017
2017
2048
27-OCT-52
1952
2052
2051
27-OCT-47
2147
2047
Observe que los valores mostrados en las dos ltimas filas de la tabla anterior. Conforme nos
acercamos a la mitad del siglo, el comportamiento de RR puede que no sea lo que desea.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fecha
Hora
SELECT sysdate
FROM
dual;
;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin SYSDATE
P
N derfecha
bl que devuelve la fecha y hora actuales del servidor de base de
a
SYSDATE es unaIO
funcin e
C SYSDATE
sf como si utilizara cualquier otro nombre de columna. Por ejemplo,
Autilizar
datos. Puede
n
D
a
r actual seleccionando SYSDATE de una tabla. Es muy comn seleccionar
puede
mostrarnla-tfecha
UN
F
o
nde una tabla ficticia denominada DUAL.
SYSDATE
Nota: SYSDATE devuelve la fecha y hora actuales definidas para el sistema operativo en el que
reside la base de datos. Por lo tanto, si est en algn lugar de Australia y se conecta a una base de
datos remota en una ubicacin de Estados Unidos (EE. UU.), la funcin sysdate devolver la
fecha y hora de EE. UU. En ese caso, puede utilizar la funcin CURRENT_DATE que devuelve la
fecha actual en la zona horaria de la sesin.
La funcin CURRENT_DATE y otras funciones de zona horaria relacionadas se abordan con mayor
detalles en Oracle Database: Conceptos Fundamentales de SQL II.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Operadores Aritmticos con Fechas
le
N
b
a
O
I de datos
Debido a que la
base
er almacena fechas como nmeros, puede realizar clculos utilizando
C
f
s
A
operadores
an como la suma y la resta. Puede agregar y restar constantes numricas y
r
NDaritmticos
t
fechas.
U
F non
Puede realizar las siguientes operaciones:
Operacin
Resultado
Descripcin
fecha + nmero
Fecha
fecha nmero
Fecha
fecha fecha
Nmero de das
fecha + nmero/24
Fecha
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Operadores Aritmticos
lecon Fechas
N
b
a
O
El ejemplo de C
la Idiapositiva
ermuestra el apellido y el nmero de semanas durante las que han
f
s
A
trabajadoD
todos los a
empleados
del departamento 90. Resta la fecha de contratacin del empleado de
n
r
Nactual
t
la fecha
(SYSDATE)
y
divide
el resultado entre 7 para calcular el nmero de semanas durante
U
n
F
o
n
las que ha trabajado el empleado.
Nota: SYSDATE es una funcin SQL que devuelve la fecha y hora actuales. Los resultados pueden
ser diferentes segn la fecha y hora definidas para el sistema operativo de la base de datos local al
ejecutar la consulta SQL.
Si se resta una fecha ms actual de una fecha ms antigua, la diferencia es un nmero negativo.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funcin
Resultado
MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
LAST_DAY
ROUND
Redondear fecha
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
ROdeeFecha
l
Funciones de Manipulacin
P
Nfuncionan
blen fechas de Oracle. Todas las funciones de fecha devuelven un
a
Las funciones deIfecha
O
r
CdatonDATE
fe excepto MONTHS_BETWEEN, que devuelve un valor numrico.
valor del tipo
de
s
A
D
MONTHS_BETWEEN(date1,
date2): obtiene el nmero de meses entre date1 y date2.
ra
Nresultado
t
U
n
El
puede
ser
positivo
o
negativo. Si date1 es posterior a date2, el resultado es
F no
positivo; si date1 es anterior a date2, el resultado es negativo. La parte del resultado que no
TRUNC
Truncar fecha
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funcin
Resultado
MONTHS_BETWEEN
('01-SEP-95','11-JAN-94')
19.6774194
ADD_MONTHS (31-JAN-96',1)
'29-FEB-96'
NEXT_DAY
('01-SEP-95','FRIDAY')
'08-SEP-95'
LAST_DAY
('01-FEB-95')
'28-FEB-95'
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de las Funciones de Fecha
le
N
b
a
O
En el ejemplo deIla diapositiva,
er la funcin ADD_MONTHS agrega un mes al valor de fecha
C
f
s
A
proporcionado
y devuelve 29-FEB-96. La funcin reorganiza el ao 1996 como ao
ran devuelve
Ny,Dpornlo31-JAN-96
t
bisiesto
tanto,
la ltima fecha del mes de febrero. Si cambia el valor de fecha de
U
F
o
n
entrada a 31-JAN-95, la funcin devuelve 28-FEB-95.
Por ejemplo, muestre el nmero de empleado, fecha de contratacin, nmero de meses durante los
que ha trabajado, fecha de revisin de seis meses, primer viernes despus de la fecha de contratacin
y ltimo da del mes de contratacin de todos los empleados que han trabajado menos de 150 meses.
SELECT employee_id, hire_date, MONTHS_BETWEEN (SYSDATE, hire_date)
TENURE, ADD_MONTHS (hire_date, 6) REVIEW, NEXT_DAY (hire_date,
'FRIDAY'), LAST_DAY(hire_date)
FROM
employees WHERE MONTHS_BETWEEN (SYSDATE, hire_date) < 150;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resultado
ROUND(SYSDATE,'MONTH')
01-AUG-03
ROUND(SYSDATE ,'YEAR')
01-JAN-04
TRUNC(SYSDATE ,'MONTH')
01-JUL-03
TRUNC(SYSDATE ,'YEAR')
01-JAN-03
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
icecon Fechas
ROy eTRUNC
l
Uso de las Funciones ROUND
P
Ny TRUNC
bsel pueden utilizar para valores de fecha y nmero. Al utilizarlas con
a
O
Las funciones ROUND
r
I
C nsredondean
fe
Afunciones
fechas, estas
o truncan el modelo de formato especificado. Por lo tanto, puede
D
raal ao o mes ms
N lasnfechas
t
redondear
cercano. Si el modelo de formato es mes, el resultado de las
U
F
o
n
fechas 1-15 es el primer da del mes actual. El resultado de las fechas 16-31 es el primer da del
siguiente mes. Si el modelo de formato es mes, el resultado de las fechas 1-6 es el 1 de enero del ao
actual. El resultado de los meses 7-12 es el 1 de enero del siguiente ao.
Ejemplo:
Compare las fechas de contratacin de todos los empleados que empezaron en 1997. Muestre el
nmero de empleado, fecha de contratacin y mes de inicio con las funciones ROUND y TRUNC.
SELECT employee_id, hire_date,
ROUND(hire_date, 'MONTH'), TRUNC(hire_date, 'MONTH')
FROM
employees
WHERE hire_date LIKE '%97';
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Cules de las siguientes afirmaciones sobre funciones de una
sola fila son ciertas?
1. Manipular elementos de datos
2. Aceptar argumentos y devolver un valor por argumento
3. Actuar en cada fila devuelta
4. Devuelve un resultado por juego de filas
5. Posibilidad de modificar el tipo de dato
s
6. Posibilidad de anidamiento
a
h
rg)
7. Aceptar argumentos que pueden ser una columna oouna
a
expresin
des ide
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1, 3, 6, 7
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Realizar clculos de datos utilizando funciones
Modificar elementos de datos individuales utilizando
funciones
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r se pueden anidar en cualquier nivel. Las funciones de una sola fila
Las funciones C
deIuna sola e
fila
f
s
A
pueden manipular
elementos:
ansiguientes
rlos
NDdencaracteres:
t
U
Datos
LOWER, UPPER, INITCAP, CONCAT, SUBSTR, INSTR, LENGTH
F Datosnode nmero: ROUND, TRUNC, MOD
Recuerde lo siguiente:
Los valores de fecha tambin pueden utilizar operadores aritmticos.
Las funciones ROUND y TRUNC tambin se pueden utilizar con valores de fecha.
SYSDATE y DUAL
SYSDATE es una funcin de fecha que devuelve la fecha y hora actuales. Es muy comn seleccionar
SYSDATE de una tabla pblica denominada DUAL.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 3: Visin General
le
N
b
a
O
I
Esta prctica proporciona
eunar variedad de ejercicios que utilizan diferentes funciones que estn
C
f
s
A
disponibles
tipos
ande dato de carcter, de nmero y de fecha.
r
ND para
t
U
F non
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Describir varios tipos de funciones de conversin que
estn disponibles en SQL
Utilizar las funciones de conversin TO_CHAR, TO_NUMBER
y TO_DATE
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
I en ffunciones
Esta leccin seC
centra
er que convierten los datos de un tipo en otro (por ejemplo,
s
A
conversin
de datosade
n caracteres en datos numricos) y describe las expresiones condicionales en
r
NDSQL
t
sentencias
SELECT.
U
F non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de anidacin
Funciones generales:
NVL
NVL2
NULLIF
COALESCE
s
a
h
Expresiones condicionales:
rg)
o
CASE
sa ide
e
d
DECODE
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones de Conversin
Tipo de Dato
conversin
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Conversin
le
N
b
a
O
I de dato
Adems de losC
tipos
erde Oracle, las columnas de las tablas de una Oracle Database se pueden
f
s
A
definir utilizando
dato American National Standards Institute (ANSI), DB2 y SQL/DS.
rlosantiposdedeOracle
ND nel-servidor
t
Sin
embargo,
convierte internamente esos tipos de dato a tipos de dato de
U
F
o
n
Oracle.
En algunos casos, el servidor de Oracle recibe datos de un tipo de dato cuando espera datos de un
tipo de dato diferente. Cuando esto ocurre, el servidor de Oracle puede convertir automticamente los
datos al tipo de dato esperado. Esta conversin de tipo de dato puede realizarla el servidor de Oracle
implcitamente o el usuario explcitamente.
Las conversiones de tipo de dato funcionan segn las reglas explicadas en las siguientes diapositivas.
Las conversiones de tipo de dato explcitas se realizan utilizando las funciones de conversin. Las
funciones de conversin sirven para convertir los valores de un tipo de dato a otro. Generalmente, el
formato de los nombres de funciones sigue la convencin data type TO data type. El primer
tipo de dato es el tipo de dato de entrada; el segundo tipo de dato es la salida.
Nota: aunque la conversin de tipo de dato implcita est disponible, se recomienda que realice una
conversin de tipo de dato explcita para asegurar la fiabilidad de las sentencias SQL.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
De
VARCHAR2 o CHAR
NUMBER
VARCHAR2 o CHAR
DATE
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Conversin Implcita del Tipo lde
e Dato
N
b
a
O
rrealizar automticamente una conversin de tipo de dato en una
I puede
El servidor de C
Oracle
eexpresin
f
s
A
expresin.
Por
ejemplo,
la
hire_date > '01-JAN-90' tiene como resultado la
D tran
N
- de la cadena '01-JAN-90' a una fecha. Por lo tanto, un valor VARCHAR2 o
conversin
U oimplcita
n
F
n
CHAR se puede convertir de forma implcita a un tipo de dato de fecha o nmero en una expresin
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
De
NUMBER
VARCHAR2 o CHAR
DATE
VARCHAR2 o CHAR
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Conversin Implcita del Tipo lde
e Dato (continuacin)
N
b
a
O
r utiliza la regla de expresiones cuando se necesita una conversin de
I defeOracle
En general, el C
servidor
s
A
tipo de dato.
Por
ejemplo,
la
D tran expresin grade = 2 tiene como resultado la conversin implcita del
N
- 2 porque el grado es una columna CHAR(2)..
nmero
FU 2naolancadena
Nota: las conversiones de CHAR a NUMBER se realizan correctamente slo si la cadena de caracteres
representa un nmero vlido.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
TO_NUMBER
NUMBER
TO_DATE
CARCTER
DATE
s
a
h
rg)
o
sa ide
e
d
TO_CHAR
TO_CHAR
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Conversin Explcita del Tipo lde
e Dato
N
b
a
O
SQL proporciona
CItresnfunciones
fer para convertir un valor de un tipo de dato a otro:
s
A
Funcin
Objetivo
ND n-tra
U
FTO_CHAR(number|date,[
o
n
fmt], Convertir un valor de fecha o nmero a una
[nlsparams])
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
TO_NUMBER
NUMBER
CARCTER
TO_DATE
DATE
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
TO_CHAR
TO_CHAR
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Conversin Explcita del Tipo lde
e Dato (continuacin)
N
b
a
O
Funcin
Objetivo
CI nsfer
A
D tra
TO_CHAR(number|date,[
N
Conversin de fecha: el parmetro nlsparams especifica el
U
fmt],
nF
o
idioma en el que se devuelven las abreviaturas y los nombres del
n
[nlsparams])
mes y del da. Si se omite este parmetro, esta funcin utiliza los
idiomas de fecha por defecto para la sesin.
TO_NUMBER(char,[fmt],
[nlsparams])
TO_DATE(char,[fmt],[nlspa
rams])
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Conversin Explcita del Tipo de Dato (continuacin)
Nota: la lista de funciones mencionadas en esta leccin incluye slo algunas de las funciones de
conversin disponibles.
Para obtener ms informacin, consulte la seccin sobre funciones de conversin en Oracle
Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la
base de datos 10g u 11g.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de anidacin
Funciones generales:
NVL
NVL2
NULLIF
COALESCE
s
a
h
Expresiones condicionales:
rg)
o
CASE
sa ide
e
d
DECODE
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
TO_CHAR(date, 'format_model')
El modelo de formato:
Debe estar entre comillas simples
Es sensible a maysculas/minsculas
Puede incluir cualquier elemento de formato de fecha
vlido
s
Tiene un elemento fm para eliminar los espacios en
a
h
blanco o suprimir ceros iniciales
rg)
o
a
Est separado del valor de fecha por una coma
des uide
roy nt G
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
ROcone Fechas
l
Uso de la Funcin TO_CHAR
P
l
N
bdato
a
O
TO_CHAR convierte
un tipo
de
de fecha y hora a un valor de tipo de dato VARCHAR2 con el
r
I
e
C
f
s
A
formato especificado
nporformat_model. Un modelo de formato es un carcter literal que describe el
ahora
r
NdeDfecha
t
formato
y
almacenado en una cadena de caracteres. Por ejemplo, el modelo de formato
U
n
F
o
n
de fecha y hora '11-Nov-1999' es 'DD-Mon-YYYY'. Puede utilizar la funcin TO_CHAR para
convertir una fecha de su formato por defecto a uno que especifique.
Instrucciones
El modelo de formato debe estar entre comillas simples y es sensible a maysculas/minsculas.
El modelo de formato puede incluir cualquier elemento de formato de fecha vlido. Asegrese
de separar el valor de fecha del modelo de formato con una coma.
Los nombres de los das y meses en la salida se rellenan automticamente con espacios en
blanco.
Para eliminar los espacios en blanco o suprimir los ceros iniciales, utilice el elemento fm de
modo de relleno.
SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired
FROM
employees
WHERE last_name = 'Higgins';
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Elemento
Resultado
YYYY
Ao completo en nmeros
YEAR
MM
MONTH
MON
DY
DAY
s
a
h
rg)
DD
Da numrico del mes
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Descripcin
SCC o bien CC
Aos en fechas YYYY o bien Ao; el servidor agrega como prefijo el signo - a los aos A.C.
SYYYY
YYY o bien YY o bien Y
Y,YYY
BC o bien AD
Trimestre del ao
IW
s
a
h
rg)
MM
Mes: valor de dos dgitos
o
sa hastaiduna
e
MONTH
Nombre del mes rellenado con espacios en
blanco
e
d
longitud de nueve caracteres
roy nt Gu
p
MON
Nombre del mes, abreviatura
de tres letras
de
n@
u
o
t
i
c is S
a
RM
Nmero romano del
mes
d
th
funo del smes
e
WW o bien W
Semana del(ao
u
SAao, mestoo semana
DDD o bien DD o bien D
Da
del
E
D nse
Y
DAY
Nombre
da rellenado con espacios en blanco hasta una
ice del
RO elongitud
l
P
de nueve caracteres
l
N
b
a
O
DY
Nombre del da, abreviatura de tres letras
CI nsfer
A
D
J
Da juliano actual, nmero de das desde el 31 de diciembre de
N n-tra
U
F no
4713 a.C.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
15:45:32 PM
12 of OCTOBER
s
a
h
rg)
ddspth
fourteenth
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Elementos del Modelo de Formato
le de Fecha
N
b
a
O
r
I de lasfesiguientes
Utilice los formatos
tablas para mostrar la informacin de tiempo y los literales y
C
s
A
para cambiar
ran a nmeros en letra.
ND nlos-tnumerales
U
Descripcin
FElementono
AM o PM
Indicador de meridiano
A.M. o P.M.
HH o HH12 o HH24
MI
SS
SSSSS
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Descripcin
/ . ,
of the
Elemento
Descripcin
TH
SP
SPTH or THSP
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT last_name,
TO_CHAR(hire_date, 'fmDD Month YYYY')
AS HIREDATE
FROM
employees;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
ROcone Fechas
l
Uso de la Funcin TO_CHAR
P
N
bl muestra los apellidos y fechas de contratacin de todos los
a
O
r
I
La sentencia SQL
de
la
diapositiva
C ndescontratacin
fe
A
empleados.
La fecha
aparece como 17 de junio de 1987.
D
a
r
N
t
U
Ejemplo:
F non
Modifique el ejemplo de la diapositiva para mostrar las fechas en un formato que aparezca como
Diecisiete de junio de 1987 12:00:00 AM.
SELECT last_name,
TO_CHAR(hire_date,
'fmDdspth "of" Month YYYY fmHH:MI:SS AM')
HIREDATE
FROM
employees;
Observe que el mes sigue el modelo de formato especificado; es decir, la primera letra est en
mayscula y el resto en minsculas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resultado
Representa un nmero
a
s
a
h
L
Utiliza el smbolo de divisa local flotante rg)
o e
a
.
s
Imprime un punto decimal
e uid
d
y
G
o
,
Imprime una coma como indicador
detmiles
r
p
n
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
ROcone Nmeros
l
Uso de la Funcin TO_CHAR
P
l
rab como cadenas de caracteres, debe convertir dichos nmeros al tipo
IONdefenmero
Al trabajar conC
valores
A autilizando
de dato de
ns la funcin TO_CHAR que traduce un valor del tipo de dato NUMBER a
Dcarcter
r
N
t
un tipo
FU dendato
on-VARCHAR2. Esta tcnica es muy til con la concatenacin.
Fundacin Proydesa
Uso de la Funcin TO_CHAR con Nmeros (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Descripcin
Ejemplo
Resultado
999999
1234
099999
001234
$999999
$1234
L999999
FF1234
99D99
99.99
999999.99
1234.00
s
a
h
rg)
o
sa ide
e
d
Gu
roy n1,234
t
,
Coma en la posicin especificada
999,999
p
@ tude 1234MI
Signos menos a la derecha (valores negativos) ion 999999MI
S
ac h999999PR
s
i
d
PR
Introduce entre parntesis los nmerosnnegativos
<1234>
t
u
f
e
(
EEEE
Notacin cientfica (el formatoAdebe especificar
99.999EEEE 1.234E+03
us
S
o
t
cuatro E)
DE nse
Y
U
1234
Devuelve la divisa
U9999
e (u otra) en la
O dual l"Euro"
c
i
R
P
posicin especificada
le
N
b
a
O
I
er10 n veces (n = nmero de 9
V
Multiplica
por
9999V99
123400
C
f
s
A
n
D
ra de V)
N ndespus
t
U
FS no Devuelve un valor negativo o positivo
S9999
-1234 or
+1234
G
9,999
Devuelve un separador de grupo en la posicin
especificada. Puede especificar varios
separadores de grupo en un modelo de formato de
nmero.
9G999
1234.00
B9999.99
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice (continuacin)
ROcone Nmeros
l
Uso de la Funcin TO_CHAR
P
N muestra
bl una cadena de signos de nmero (#) en lugar de un nmero
a
O
r
I
El servidor
de
Oracle
fe exceden el nmero de dgitos proporcionado en el modelo de formato.
s
AC
completo
cuyos
dgitos
n
D
raOracle redondea el valor decimal almacenado al nmero de decimales
Nservidor
t
El
de
U
n
F proporcionado
no
en el modelo de formato.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
Estas funciones tienen un modificador fx. Este
rg)
o
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
C corrija
flaeconsulta suprimiendo el espacio adicional entre "May" y "24".
Para ver la salida,
s
A
n
D
SELECT
ra hire_date
N last_name,
t
U
FROM
employees
n
F no
WHERE hire_date = TO_DATE('May 24, 1999', 'fxMonth DD, YYYY');
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice con el Formato de Fecha RR
RO ey lTO_DATE
Uso de las Funciones TO_CHAR
P
N contratados
bl antes de 1990, se puede utilizar el formato RR. Debido a que
a
O
Para buscar los empleados
r
I
fe1999, el formato RR interpreta la parte del ao de la fecha de 1950 a
s
AesCmayor
el ao actual
que
n
D
N n-tra
1999.
U
F no
Por otro lado,
en el siguiente comando no se selecciona ninguna fila porque el formato YY interpreta
la parte del ao de la fecha en el siglo actual (2090).
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-yyyy')
FROM
employees
WHERE TO_DATE(hire_date, 'DD-Mon-yy') < '01-Jan-1990';
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de anidacin
Funciones generales:
NVL
NVL2
NULLIF
COALESCE
s
a
h
Expresiones condicionales:
rg)
o
CASE
sa ide
e
d
DECODE
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones de Anidacin
F3(F2(F1(col,arg1),arg2),arg3)
Paso 1 = Resultado 1
a
s
a
Paso 2 = Resultado 2
)h
g
r
o e
a
Paso 3 = Resultado 3
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Anidacin
le
N
b
a
O
r se pueden anidar en cualquier profundidad. Las funciones anidadas se
Las funciones C
deIuna sola e
fila
f
s
A
evalan desde
el nivel
profundo hasta el nivel menos profundo. Los siguientes ejemplos
anms
r
NDla flexibilidad
t
muestran
de
estas
funciones.
U
F non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT last_name,
UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))
FROM
employees
WHERE department_id = 60;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Anidacin (continuacin)
le
N
b
a
O
El ejemplo de C
la Idiapositiva
ermuestra los apellidos de los empleados en el departamento 60. La
f
s
A
evaluacin
SQL implica tres pasos:
Dde la tsentencia
an recupera
r
Nfuncin
1.
La
interna
los primeros ocho caracteres del apellido.
U
F Result1
non = SUBSTR (LAST_NAME, 1, 8)
TO_CHAR(NEXT_DAY(ADD_MONTHS
(hire_date, 6), 'FRIDAY'),
'fmDay, Month ddth, YYYY')
"Next 6 Month Review"
FROM
employees
ORDER BY hire_date ;
Oracle Database: Conceptos Fundamentales de SQL I 4-25
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT
TO_CHAR(ROUND((salary/7), 2),'99G999D99',
'NLS_NUMERIC_CHARACTERS = '',.'' ')
"Formatted Salary"
FROM employees;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Anidacin (continuacin)
le
N
b
a
O
I
El ejemplo de C
la diapositiva
ermuestra los salarios de los empleados dividido entre7 y redondeado a
f
s
A
dos decimales.
se formatea para mostrar el salario con notacin en dans. Es decir, la
D Eltrresultado
andecimal
Nutilizar
coma
se
como
y el punto para los miles.
U
F non
En primer lugar, la funcin interna ROUND se ejecuta para redondear el valor del salario dividido
entre 7 a dos decimales. La funcin TO_CHARse utiliza entonces para aplicar formato al resultado de
la funcin ROUND.
Nota: los elementos D y G especificados en el parmetro de funcin TO_CHAR son elementos de
formato de nmero. D devuelve un carcter decimal en la posicin especificada. G se utiliza como un
separador de grupo.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de anidacin
Funciones generales:
NVL
NVL2
NULLIF
COALESCE
s
a
h
Expresiones condicionales:
rg)
o
CASE
sa ide
e
d
DECODE
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones Generales
Las siguientes funciones funcionan con cualquier tipo de dato y
pertenecen al uso de valores nulos:
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
COALESCE (expr1, expr2, ..., exprn)
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones Generales
le
N
b
a
O
r cualquier tipo de dato y pertenecen al uso de valores nulos en la lista
I
Estas funciones
funcionan
econ
C
f
s
A
de expresiones.
ND n-tran
U
F
Funcinno Descripcin
NVL
NVL2
NULLIF
COALESCE
Nota: para obtener ms informacin sobre los cientos de funciones disponibles, consulte la seccin
sobre funciones en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de
Oracle Database) para la base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funcin NVL
Convierte un valor nulo a un valor real:
Los tipos de dato que se pueden utilizar son fecha,
carcter y nmero.
Los tipos de dato deben coincidir con:
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Funcin NVL
P
l
Nnulo raaunbvalor
O
Para convertir unIvalor
real, utilice la funcin NVL.
C nsfe
A
Sintaxis
ND n-tra
U
NVL
F (expr1,
no expr2)
En la sintaxis:
expr1 es el valor de origen o expresin que puede contener un valor nulo
expr2 es el valor de destino para convertir el valor nulo
Puede utilizar la funcin NVL para convertir cualquier tipo de dato, pero el valor de retorno siempre
es el mismo que el tipo de dato de expr1.
Conversiones NVL para Varios Tipos de Dato
Tipo de Dato
Ejemplo de Conversin
NUMBER
NVL(number_column,9)
DATE
NVL(date_column, '01-JAN-95')
CHAR or VARCHAR2
NVL(character_column, 'Unavailable')
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
r
t
1
2 n@p den
tu
io
S
c
a
is
d
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
Uso de la Funcin NVLP
le
N
b
a
O
I
Para calcular laCcompensacin
er anual de los empleados, necesita multiplicar el salario mensual por 12
f
s
A
y, a continuacin,
agregue
an el porcentaje de comisin al resultado:
r
ND SELECT
t
U
last_name, salary, commission_pct,
n
F no(salary*12)
+ (salary*12*commission_pct) AN_SAL
FROM
employees;
Tenga en cuenta que la compensacin anual se calcula slo para los empleados que obtienen una
comisin. Si cualquier valor de columna de una expresin es nulo, el resultado es nulo. Para calcular
los valores para todos los empleados, puede convertir los valores nulos a un nmero antes de aplicar
el operador aritmtico. En el ejemplo de la diapositiva, la funcin NVL se utiliza para convertir
valores nulos a cero.
Oracle Database: Conceptos Fundamentales de SQL I 4-30
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
2 ion
1
tud
S
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin NVL2
P
N primera
bl expresin. Si la primera expresin no es nula, la funcin NVL2
La funcin NVL2IO
examinaelara
C expresin.
sf Si la primera expresin es nula, se devolver la tercera expresin.
devuelveD
la A
segunda
n
a
N n-tr
Sintaxis
FU noNVL2(expr1,
expr2, expr3)
En la sintaxis:
expr1 es el valor de origen o expresin que puede contener un valor nulo
expr2 es el valor que se devuelve si expr1 no es nulo
expr3 es el valor que se devuelve si expr1 es nulo
En el ejemplo de la diapositiva se examina la columna COMMISSION_PCT. Si se detecta un valor,
se devolver el valor literal de texto de SAL+COMM. Si la columna COMMISSION_PCT contiene un
valor nulo, se devolver el valor literal de texto SAL.
Nota: el argumento expr1 puede tener cualquier tipo de dato. Los argumentos expr2 y expr3
pueden tener cualquier tipo de dato excepto LONG.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
1
i
2
3
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin NULLIF
P
N
blexpresiones.
a
O
La funcin NULLIF
compara
dos
r
I
AC ansfe
D
Sintaxis
N n-tr
FUNULLIF
no (expr1, expr2)
En la sintaxis:
NULLIF compara expr1 y expr2. Si son iguales, la funcin devuelve un valor nulo. Si no, la
funcin devuelve expr1. Sin embargo, no puede especificar el literal NULL para expr1.
En el ejemplo de la diapositiva, la longitud del nombre en la tabla EMPLOYEES se compara con la
longitud del apellido en la tabla EMPLOYEES. Cuando las longitudes de ambos son iguales, se
mostrar un valor nulo. Cuando las longitudes no son iguales, se mostrar la longitud del nombre.
Nota: la funcin NULLIF es el equivalente lgico de la siguiente expresin CASE. La expresin
CASE se trata en la siguiente pgina:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin COALESCE
P
N devuelve
blla primera expresin no nula de la lista.
a
O
La funcin COALESCE
r
I
AC ansfe
D
Sintaxis
N n-tr (expr1, expr2, ... exprn)
FU noCOALESCE
En la sintaxis:
expr1 devuelve esta expresin si no es nula
expr2 devuelve esta expresin si la primera expresin es nula y sta no es nula
exprn devuelve esta expresin si las expresiones anteriores son nulas
Tenga en cuenta que todas las expresiones deben ser del mismo tipo de dato.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
i
RO (continuacin)
l
Uso de la Funcin COALESCE
P
le
N
b
a
O
En el ejemplo de Ila diapositiva
r se muestra el valor manager_id si ste no es nulo. Si el valor
emostrar
Ces nulo,
f
s
A
manager_id
se
commission_pct. Si los valores manager_id y
D tran
N
commission_pct
U on- son nulos, se muestra No commission and no manager. Tenga en cuenta que
F
la funcinnTO_CHAR se aplica de modo que todas las expresiones sean del mismo tipo de dato.
Fundacin Proydesa
Uso de la Funcin COALESCE (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Ejemplo:
Para los empleados que no perciben ninguna comisin, la organizacin desea proporcionar un
aumento de salario de 2.000 dlares y para los empleados que perciben comisin, la consulta debe
calcular el nuevo salario que es igual al salario existente sumado a la comisin.
SELECT last_name, salary, commission_pct,
COALESCE((salary+(commission_pct*salary)), salary+2000, salary) "New
Salary"
FROM
employees;
Nota: examine la salida. Para los empleados que no perciben ninguna comisin, la columna de nuevo
salario muestra el salario aumentado en 2.000 dlares y para los empleados que perciben comisin, la
columna de nuevo salario muestra la comisin calculada sumada al salario.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de anidacin
Funciones generales:
NVL
NVL2
NULLIF
COALESCE
s
a
h
Expresiones condicionales:
rg)
o
CASE
sa ide
e
d
DECODE
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Expresiones Condicionales
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Expresiones Condicionales le
bpara implantar el procesamiento condicional (lgicaIF-THENa
ONse utilizan
Los dos mtodosIque
r
e
C
sf son la expresin CASE y la funcin DECODE.
ELSE) enD
laA
sentencianSQL
a
N n-tr CASE cumple con SQL ANSI. La funcin DECODE es especfica de la sintaxis de
Nota:
FU la expresin
o
Oracle. n
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Expresin CASE
Facilita las consultas condicionales realizando el trabajo de una
sentencia IF-THEN-ELSE:
CASE expr WHEN
[WHEN
WHEN
ELSE
END
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Expresin CASE
P
N permiten
bl utilizar la lgica IF-THEN-ELSE en las sentencias SQL sin
a
O
Las expresiones
CASEe
r
I
sf
ACa los
tener queD
llamar
procedimientos.
n
a
-trCASE simple, el servidor de Oracle busca el primer par WHEN ... THEN para el
UNexpresin
En
n
Funa
o
que exprnes igual a comparison_expr y devuelve return_expr. Si ninguno de los pares
WHEN ... THEN cumple con esta condicin y existe una clusula ELSE, el servidor de Oracle
devuelve else_expr. De lo contrario, el servidor de Oracle devuelve un valor nulo. No puede
especificar el valor literal NULL para todas las expresiones return_expr y else_expr.
Las expresiones expr y comparison_expr deben ser del mismo tipo de dato, que puede ser
CHAR, VARCHAR2, NCHAR o NVARCHAR2. Todos los valores de retorno (return_expr) deben
ser del mismo tipo de dato.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Expresin CASE
P
N
bl se descodifica el valor de JOB_ID. Si JOB_ID es IT_PROG,
a
O
En la sentencia SQL
de la e
diapositiva,
r
I
f
AC
el aumento
de
salarionessdel 10%; si JOB_ID es ST_CLERK, el aumento de salario es del 15%; si
D
a
-tr el aumento del salario es del 20%. Para el resto de otros roles de cargo, no hay
JOB_ID
UN esoSA_REP,
n
F
n de salario.
ningn aumento
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funcin DECODE
Facilita las consultas condicionales realizando el trabajo de una
expresin CASE o una sentencia IF-THEN-ELSE:
DECODE(col|expression, search1, result1
[, search2, result2,...,]
[, default])
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Funcin DECODE
P
l
N
buna
a
O
La funcin DECODE
decodifica
expresin de una forma similar a la lgica IF-THEN-ELSE que
r
I
C nsfe La funcin
se utilizaD
enA
varios idiomas.
DECODE descodifica expression despus de compararla
a
r
N
t
conU
Si la expresin es la misma que search, se devuelve result.
nsearch.
F cada nvalor
o
Si se omite el valor por defecto, se devuelve un valor nulo donde un valor de bsqueda no coincida
con ninguno de los valores de resultado.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin DECODE
P
N
bl se prueba el valor de JOB_ID. Si JOB_ID es IT_PROG, el
a
O
En la sentencia SQL
de la e
diapositiva,
r
I
C sf10%; si JOB_ID es ST_CLERK, el aumento de salario es del 15%; si
aumento D
de A
salario esndel
ra el aumento del salario es del 20%. Para el resto de otros roles de cargo, no hay
N es SA_REP,
t
JOB_ID
U
n
F no de salario.
ningn aumento
'IT_PROG'
'ST_CLERK'
'SA_REP'
= salary
THEN
THEN
THEN
salary = salary*1.10
salary = salary*1.15
salary = salary*1.20
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
i
RO
l
Uso de la Funcin DECODE
(continuacin)
P
le
N
b
a
O
Esta diapositiva muestra
otro
I
er ejemplo que utiliza la funcin DECODE. En este ejemplo, puede
C
f
s
A
determinar
los impuestos
an para cada empleado del departamento 80 segn su salario mensual. Los
r
NDson
t
impuestos
los
siguientes:
U
F non
Rango de Salario Mensual
Impuesto
$0,001.999,99
$2.000,003.999,99
$4.000,005.999,99
$6.000,007.999,99
$8.000,009.999,99
$10.000,0011.999,99
$12.200,0013.999,99
14.000,00 o superior
00%
09%
20%
30%
40%
42%
44%
45%
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
La funcin TO_NUMBER convierte las cadenas de caracteres o
los valores de fecha a un nmero con el formato especificado
por el modelo de formato opcional.
1. True
2. Falso
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 2
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Modificar formatos de fecha para su visualizacin
utilizando funciones
Convertir tipos de dato de columna utilizando funciones
Utilizar funciones NVL
Utilizar la lgicaIF-THEN-ELSE y otra expresin
condicional en una sentencia SELECT
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
I
Recuerde lo siguiente:
er
C
f
s
A
Las funciones
pueden convertir valores numricos, de fecha y de carcter:
radenconversin
ND n-TO_CHAR,
t
Funciones
TO_DATE, TO_NUMBER
U
F Existen
novarias funciones que pertenecen a valores nulos, incluyendo NVL, NVL2, NULLIF y
COALESCE.
La lgica IF-THEN-ELSE se puede aplicar en una sentencia SQL utilizando la expresin
CASE o la funcin DECODE.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 4: Visin General
le
N
b
a
O
Esta prctica proporciona
ejercicios que utilizan las funciones TO_CHAR y
eunar variedad de
CI nsfcondicionales
A
TO_DATE
y
expresiones
como
DECODE y CASE. Recuerde que para las funciones
D tra
N
anidadas,
se evalan desde la funcin ms profunda hasta la funcin menos profunda.
FU nlosonresultados
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Identificar las funciones de grupo disponibles
Describir los usos de las funciones de grupo
Agrupar datos con la clusula GROUP BY
Incluir o excluir filas agrupadas con la clusula HAVING
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
Ilas funciones
Esta leccin trata
er ms detalladamente. Se centra en obtener informacin de resumen
C
f
s
A
(como medias)
paraagrupos
n de filas. Describe cmo agrupar las filas de una tabla en juegos ms
r
NDy cmo
t
pequeos
especificar
los criterios de bsqueda para grupos de filas.
U
F non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de grupo:
Tipos y sintaxis
Uso de AVG, SUM, MIN, MAX, COUNT
Uso de la palabra clave DISTINCT en funciones de grupo
Valores NULL en una funcin de grupo
Agrupar filas:
Clusula GROUP BY
Clusula HAVING
s
a
h
Anidamiento de funciones de grupo
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Salario mximo en
la tabla EMPLOYEES
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Qu Son las Funciones de Grupo?
le
N
b
a
O
I funciones
A diferencia deClas
er de una sola fila, las funciones de grupo funcionan en juegos de filas
f
s
A
para proporcionar
D trunanresultado por grupo. Estos juegos pueden formar la tabla completa o la tabla
Nen
dividida
U
nF nogrupos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
AVG
COUNT
MAX
MIN
STDDEV
SUM
VARIANCE
Funciones
de grupo
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tipos de Funciones de Grupo le
rabun argumento. La siguiente tabla identifica las opciones que se
ION feacepta
Cada una de las
funciones
C
pueden utilizar
ns
DA entrlaasintaxis:
N
FU
Funcin
Descripcin
non
AVG([DISTINCT|ALL]n)
COUNT({*|[DISTINCT|ALL]expr
})
MAX([DISTINCT|ALL]expr)
MIN([DISTINCT|ALL]expr)
STDDEV([DISTINCT|ALL]n)
SUM([DISTINCT|ALL]n)
VARIANCE([DISTINCT|ALL]n)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT
FROM
[WHERE
[ORDER BY
group_function(column), ...
table
condition]
column];
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Grupo: Sintaxisle
b
a
La funcin de grupo
se coloca
despus de la palabra clave SELECT. Puede que tenga varias
r
ION
e
C
sf por comas.
funcionesD
deAgrupoa
separadas
n
N
-trutilizar las funciones de grupo:
Instrucciones
FU nonpara
DISTINCT hace que la funcin considere slo los valores no duplicados; ALL hace que
considere cada valor, incluyendo los duplicados. El valor por defecto es ALL y, por lo tanto, no
es necesario especificarlo.
Los tipos de dato para las funciones con el argumento expr pueden ser CHAR, VARCHAR2,
NUMBER o DATE.
Todas las funciones de grupo ignoran los valores nulos. Para sustituir un valor para valores
nulos, utilice las funciones NVL, NVL2, COALESCE, CASE o DECODE.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RyOSUMe lice
Uso de las Funciones AVG
P
N rAVG,
blSUM, MIN y MAX en las columnas que pueden almacenar datos
a
O
Puede utilizar lasIfunciones
fela diapositiva muestra la media, el valor ms alto, ms bajo y la suma de
s
AC
numricos.
El
ejemplo
de
n
D
ra de todos los vendedores.
N mensuales
t
los
salarios
U
n
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Uso de Funciones MINP
yR
MAX le li
aby MIN para tipos de dato numricos, de caracteres y de fecha. El
ON ferMAX
Puede utilizar lasIfunciones
C
ejemplo de
ns muestra los empleados ms y menos experimentados.
DlaAdiapositiva
a
r
N
t
U oejemplo
ElFsiguiente
n- muestra el apellido del empleado que est en primer lugar y del que est en
n
ltimo lugar en una lista de todos los empleados ordenada alfabticamente:
Nota: las funciones AVG, SUM, VARIANCE y STDDEV se pueden utilizar slo con los tipos de dato
numricos. MAX and MIN no se pueden utilizar con tipos de dato LOB o LONG.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT COUNT(*)
FROM
employees
WHERE department_id = 50;
s
a
h
2
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Funcin COUNT
P
N rformatos:
bl
a
O
La funcin COUNT
tiene tres
I
AC ansfe
COUNT(*)
D
N n-tr
F UCOUNT(expr)
no
COUNT(DISTINCT
expr)
SELECT COUNT(commission_pct)
FROM
employees
WHERE department_id = 80;
COUNT(*) devuelve el nmero de filas en una tabla que cumplan con el criterio de la sentencia
SELECT, incluyendo las filas duplicadas y las filas que contengan valores nulos en cualquiera de las
columnas. Si se incluye una clusulaWHERE en la sentencia SELECT, COUNT(*) devuelve el
nmero de filas que cumpla con la condicin de la clusula WHERE.
Por el contrario, COUNT(expr) devuelve el nmero de valores no nulos que estn en la columna
identificada con expr.
COUNT(DISTINCT expr) devuelve el nmero de valores nicos no nulos que estn en la columna
identificada con expr.
Ejemplos:
1. El ejemplo de la diapositiva muestra el nmero de empleados del departamento 50.
2. Tambin muestra el nmero de empleados del departamento 80 que pueden percibir una
comisin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Palabra Clave
DISTINCT
P
N DISTINCT
bl para suprimir el recuento de cualquier valor duplicado en una
a
O
Utilice la palabraIclave
r
C nsfe
columna.DA
ra
UN odenla-tdiapositiva
ElFejemplo
muestra el nmero de valores de departamento distintos que estn en la
n
tabla EMPLOYEES.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT AVG(commission_pct)
FROM
employees;
s
a
h
rg)
SELECT AVG(NVL(commission_pct, 0))
o
2 FROM employees;
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Funciones de Grupo y Valoresle
Nulos
N
b
a
O
Todas las funciones
CI densgrupo
fer ignoran los valores nulos de la columna.
A
Sin embargo,
rafuerza las funciones de grupo para que incluyan valores nulos.
ND nNVL
t
U
F no
Ejemplos:
1. La media se calcula nicamente en base a las filas de la tabla en las que se almacena un valor
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de grupo:
Tipos y sintaxis
Uso de AVG, SUM, MIN, MAX, COUNT
Uso de la palabra clave DISTINCT en funciones de grupo
Valores NULL en una funcin de grupo
Agrupar filas:
Clusula GROUP BY
Clusula HAVING
s
a
h
Anidamiento de funciones de grupo
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Salario medio en la
tabla EMPLOYEES para
cada departamento
3500
a
s
a
)h
g
r
10033
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Grupos de Datos le
ONlasfefunciones
rab de grupo han considerado la tabla como un grupo de
Itodas
Hasta este punto,
C
informacin
tamao.
ns Sin embargo, en ocasiones es necesario dividir la tabla de informacin
DAde gran
a
r
N
t
en grupos
Para ello, hay que utilizar la clusula GROUP BY.
FU nms
onpequeos.
6400
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice de la Clusula GROUP BY
RO eSintaxis
l
Creacin de Grupos dePDatos:
N GROUP
blBY para dividir las filas de la tabla en grupos. A continuacin
a
O
Puede utilizar la clusula
r
I
fede grupo para devolver informacin de resumen de cada grupo.
s
AC
puede utilizar
las funciones
n
D
N n-tra
U
En
la
sintaxis:
F no
group_by_expression
Especifica columnas cuyos valores determinan la base para
agrupar filas
Instrucciones
Si incluye una funcin de grupo en una clusula SELECT, no puede seleccionar tambin
resultados individuales a menos que la columna individual aparezca en la clusula GROUP BY.
Recibir un mensaje de error si no puede incluir la lista de columnas en la clusula GROUP BY.
Al utilizar la clusula WHERE, puede excluir las filas antes de dividirlas en grupos.
Debe incluir las columnas en la clusula GROUP BY.
No puede utilizar un alias de columna en la clusula GROUP BY.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RBY
Uso de la Clusula GROUP
P
le
N
b
a
O
Al utilizar la clusula
asegrese de que todas las columnas de la lista SELECT que no
er BY,estn
CI nGROUP
fgrupo
s
A
estn en las
funciones
de
incluidas en la clusula GROUP BY. El ejemplo de la
D tra
N
- el nmero de departamento y el salario medio de cada departamento. A
diapositiva
U omuestra
n
F
n
continuacin se muestra cmo se evala esta sentencia SELECT que contiene una clusula GROUP
BY:
La clusula SELECT especifica las columnas que se van a recuperar de la siguiente forma:
- Columna del nmero de departamento de la tabla EMPLOYEES
- Media de todos los salarios del grupo especificada en la clusula GROUP BY
La clusula FROM especifica las dos tablas a las que la base de datos debe acceder: tabla
EMPLOYEES.
La clusula WHERE especifica las filas que se van a recuperar. Ya que no existe ninguna clusula
WHERE, por defecto se recuperarn todas las filas.
La clusula GROUP BY especifica cmo se deben agrupar las filas. Las filas se agrupan por
nmero de departamento, por lo tanto, la funcin AVG aplicada a la columna de salario calcula el
salario medio de cada departamento.
Nota: para ordenar los resultados de las consultas en orden ascendente o descendente, incluya la
clusula ORDER BY en la consulta.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RBY
Uso de la Clusula GROUP
Clause
P
e (continuacin)
l
N
b
No es necesario que
ra GROUP BY est en la clusula SELECT. Por ejemplo, la sentencia
IOla columna
e
C
f
SELECTD
deA
la diapositiva
ns muestra los salarios medios de cada departamento sin mostrar los
a
r
N
t
respectivos
U onmeros
n- de departamento. Sin embargo, sin los nmeros de departamento, los resultados
F
n
no parecen significativos.
Tambin puede utilizar la funcin de grupo en la clusula ORDER BY:
SELECT
FROM
GROUP BY
ORDER BY
department_id, AVG(salary)
employees
department_id
AVG(salary);
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Agrupacin de Ms de Una Columna
le
N
b
a
O
r resultados de grupos dentro de grupos. La diapositiva muestra un
I
En ocasiones necesitar
ver
elos
C
f
s
A
informe que
D muestra
anel salario total pagado a cada puesto de cada departamento.
r
N
t
U
Segn
la tabla EMPLOYEES se agrupa en primer lugar por nmero de
n
F esenagrupamiento,
o
departamento y, a continuacin, por puesto. Por ejemplo, los cuatro oficinistas en el departamento de
stock del departamento 50 se agrupan conjuntamente y se produce un resultado nico (salario total)
para todos los oficinistas en el departamento de stock del grupo.
La siguiente sentencia SELECT devuelve el resultado mostrado en la diapositiva:
SELECT
FROM
GROUP BY
ORDER BY
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RBy
Uso de la Clusula Group
en
P
eVarias Columnas
l
N
b
Puede devolver resultados
IO federaresumen para grupos y subgrupos mostrando varias columnas GROUP BY.
C
La clusula
GROUP BY
nsagrupa filas pero no garantiza el orden del juego de resultados. Para ordenar los
DA
a
r
N
t
agrupamientos,
utilice
U on- la clusula ORDER BY.
F
n de la diapositiva, la sentencia SELECT que contiene una clusula GROUP BY se evala
En el ejemplo
de la siguiente forma:
La clusula SELECT especifica la columna que se van a recuperar:
- ID de departamento en la tabla EMPLOYEES
- ID de cargo de la tabla EMPLOYEES
- Suma de todos los salarios del grupo especificada en la clusula GROUP BY
La clusula FROM especifica las dos tablas a las que la base de datos debe acceder: tabla
EMPLOYEES.
La clusula WHERE reduce el juego de resultados a aquellas filas en las que el ID de departamento
es mayor de 40.
La clusula GROUP BY especifica cmo debe agrupar las filas resultantes:
- En primer lugar, las filas se agrupan por ID de departamento.
- En segundo lugar, las filas se agrupan por ID de cargo en los grupos de ID de departamento.
La clusula ORDER BY ordena los resultados por ID de departamento.
Nota: la funcin SUM se aplica a la columna de salario de todos los ID de cargo en el juego de
resultados de cada grupo de ID de departamento. Adems, tenga en cuenta que la fila SA_REP no se
devuelve. El ID de departamento para esta fila es NULL y, por lo tanto, no cumple la condicin WHERE.
Oracle Database: Conceptos Fundamentales de SQL I 5-18
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
Agregar job_id en GROUP
ot
pr BY
n
e
@
eliminar la columna
n job_id
ud de la
o
t
i
S
c
lista SELECT.
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Consultas No Vlidas Realizadas
le con las Funciones de Grupo
N
b
a
O
Cuando utilice una
individual (DEPARTMENT_ID) y funciones de grupo
CI mezcla
feder elementos
s
(COUNT)D
enA
la mismansentencia
SELECT debe incluir una clusula GROUP BY que especifique los
ra (en este caso, DEPARTMENT_ID). Si falta la clusula GROUP BY, aparecer
N individuales
t
elementos
U
n
F no
el mensaje
de error not a single-group group function y la columna incorrecta estar indicada con
SELECT department_id, job_id, COUNT(last_name)
FROM
employees
GROUP BY department_id ;
un asterisco (*). Puede corregir el error del primer ejemplo de la diapositiva agregando la clusula
GROUP BY:
SELECT
department_id, count(last_name)
FROM employees
GROUP BY department_id ;
Cualquier columna o expresin de la lista SELECT que no sea una funcin de agregacin debe estar
en la clusula GROUP BY. En el segundo ejemplo de la diapositiva, job_id no est en la clusula
GROUP BY ni la utiliza una funcin de grupo, por lo que se produce un error not a GROUP BY
expression. Puede corregir el error del segundo ejemplo de la diapositiva agregando job_id en la
clusula GROUP BY.
SELECT department_id, job_id, COUNT(last_name)
FROM
employees
GROUP BY department_id, job_id;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
department_id, AVG(salary)
employees
AVG(salary) > 8000
department_id;
a
s
a
No puede utilizar la ) h
rg
clusula WHERE para
o
sa ide
restringire
grupos
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Consultas No Vlidas Realizadas
le con las Funciones de Grupo (continuacin)
N
b
a
O
I la clusula
No se puede utilizar
er WHERE para restringir grupos. La sentencia SELECT del ejemplo de
C
f
s
A
la diapositiva
muestra
nun error porque se est utilizando la clusula WHERE para restringir la
rasalarios
ND nde
t
visualizacin
los
medios de los departamentos que tienen un salario medio superior a
U
F
o
n
8.000 dlares.
Puede corregir el error del ejemplo utilizando la clusula HAVING para restringir grupos:
SELECT
FROM
GROUP BY
HAVING
department_id, AVG(salary)
employees
department_id
AVG(salary) > 8000;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Restriccin de Resultados de lGrupo
e
N
b
a
O
Utilice la clusulaI HAVING
erpara restringir grupos de la misma forma que utiliza la clusula WHERE
C
f
s
A
para restringir
nseleccionadas. Para buscar el salario mximo de cada uno de los
atienen
rfilas
ND nlas
t
departamentos
que
un salario mximo superior a 10.000 dlares, necesitar realizar las
U
F
o
n
siguientes acciones:
1. Buscar el salario medio de cada departamento realizando una agrupacin por nmero de
departamento.
2. Restringir los grupos a los departamentos con un salario mximo superior a 10.000 dlares.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
column, group_function
table
condition]
group_by_expression]
group_condition]
column];
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
cecon la Clusula HAVING
i
RO
l
Restriccin de Resultados
de lGrupo
P
e
N
b
a
O
Puede utilizar la clusula
HAVING
I
er para especificar los grupos que se van a mostrar y, por lo tanto,
C
f
s
A
restringirD
los gruposasegn
n la informacin de agregacin.
r
N
t
U
En
ngroup_condition restringe los grupos de filas de aquellos grupos para los que la
Fla sintaxis,
o
n
condicin especificada es verdadera.
El servidor de Oracle realiza los siguientes pasos al utilizar la clusula HAVING:
1. Agrupa las filas.
2. Aplica la funcin de grupo al grupo.
3. Muestra los grupos que coinciden con los criterios de la clusula HAVING.
La clusula HAVING puede preceder a la clusula GROUP BY, pero se recomienda que coloque la
clusula GROUP BY primero porque es ms lgico. Los grupos estn formados y las funciones de
grupo se calculan antes de aplicar la clusula HAVING a los grupos de la lista SELECT.
Nota: la clusula WHERE restringe filas, mientras que la clusula HAVING restringe grupos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT
FROM
GROUP BY
HAVING
department_id, MAX(salary)
employees
department_id
MAX(salary)>10000 ;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso de la Clusula HAVING
P
abl los nmero de departamento y los salarios mximos de los
ON fermuestra
El ejemplo de C
la Idiapositiva
departamentos
salario
ns mximo sea superior a 10.000 dlares.
DA cuyo
a
r
N
t
Puede
nla- clusula GROUP BY sin utilizar una funcin de grupo en la lista SELECT. Si
FU utilizar
o
n
restringe las filas segn el resultado de una funcin de grupo, debe tener una clusula GROUP BY y
una clusula HAVING.
El siguiente ejemplo muestra los nmeros de departamento y los salarios medios de los
departamentos cuyo salario mximo sea superior a 10.000 dlares:
SELECT
FROM
GROUP BY
HAVING
department_id, AVG(salary)
employees
department_id
max(salary)>10000;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
i
RO
l
Uso de la Clusula HAVING
(continuacin)
P
le
N
b
a
O
I
El ejemplo de C
la diapositiva
ermuestra el ID de cargo y el salario mensual total de cada cargo que tiene
f
s
A
una nmina
D totaltexcedente
antotal. de 13.000 dlares. El ejemplo excluye a los vendedores y ordena la lista
r
N
por
el
salario
mensual
U
F non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Funciones de grupo:
Tipos y sintaxis
Uso de AVG, SUM, MIN, MAX, COUNT
Uso de la palabra clave DISTINCT en funciones de grupo
Valores NULL en una funcin de grupo
Agrupar filas:
Clusula GROUP BY
Clusula HAVING
s
a
h
Anidamiento de funciones de grupo
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Anidamiento de Funciones delGrupo
e
N
b
a
O
r anidar en una profundidad de dos. El ejemplo de la diapositiva
Las funciones C
deIgrupo see
pueden
f
s
A medio
calcula elD
salario
para
n cada department_id y, a continuacin, muestra el salario mximo
a
r
N
t
medio.
FU nonTenga en cuenta que la clusula GROUP BY es obligatoria al anidar funciones de grupo.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Identificar las instrucciones para las funciones de grupo y la
clusula GROUP BY.
1. No puede utilizar un alias de columna en la clusula
GROUP BY.
2. La columna GROUP BY debe estar en la clusula SELECT.
3. Al utilizar la clusula WHERE, puede excluir las filas antes
de dividirlas en grupos.
4. La clusula GROUP BY agrupa filas y asegura el orden del
s
a
h
juego de resultados.
rg)
o
p ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1, 3
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Utilizar funciones de grupo COUNT, MAX, MIN, SUM y AVG
Escribir consultas que utilicen la clusula GROUP BY
Escribir consultas que utilicen la clusula HAVING
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY
column, group_function
table
condition]
group_by_expression]
group_condition]
column];
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
Existen diferentesI funciones
rde grupo disponibles en SQL, como AVG, COUNT, MAX, MIN, SUM,
AC ansfe
STDDEVD
y VARIANCE.
N subgrupos
-tr utilizando la clusula GROUP BY. Adems, los grupos se pueden restringir
Puede
n
FU crear
o
utilizandonla clusula HAVING.
Coloque las clusulas HAVING y GROUP BY despus de la clusula WHERE en una sentencia. El
orden de las clusulas GROUP BY y HAVING despus de la clusula WHERE no es importante.
Coloque la clusula ORDER BY al final.
El servidor de Oracle evala las clusulas en el siguiente orden:
1. Si la sentencia contiene una clusula WHERE, el servidor establece las filas candidatas.
2. El servidor identifica los grupos que estn especificados en la clusula GROUP BY.
3. La clusula HAVING restringe an ms los grupos de resultados que no cumplen con los
criterios de grupo en la clusula HAVING.
Nota: para obtener una lista completa de las funciones de grupo, consulte Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la base de datos 10g
u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 5: Visin General
le
N
b
a
O
En esta prctica,
earutilizar funciones de grupo y seleccionar grupos de datos.
CIaprender
f
s
A
ND n-tran
U
F no
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Visualizacin de Datos
de Varias Tablas Utilizando Uniones
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Escribir sentencias SELECT para acceder a datos de ms
de una tabla mediante uniones igualitarias y no igualitarias
Unir una tabla consigo misma mediante autounin
Ver datos que normalmente no cumplen una condicin de
unin mediante uniones OUTER
or
a
es uide
d
y
ro nt G
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
r datos de ms de una tabla. Una unin se utiliza para ver
I cmofeobtener
Esta leccin explica
C
s
A
informacin
rantablas. Por lo tanto, puede unir tablas para ver informacin de ms de una
ND den-varias
t
tabla.
U
F no
Nota: para
obtener ms informacin sobre las uniones, consulte la seccin sobre consultas y
subconsultas SQL: uniones en Oracle Database SQL Language Reference (Referencia sobre
Lenguaje SQL de Oracle Database) para la base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Unin natural:
Clusula USING
Clusula ON
Autounin
Uniones no igualitarias
Unin OUTER:
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
Producto cartesiano
p
n@ tude
o
Unin cruzada
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unin LEFT OUTER
Unin RIGHT OUTER
Unin FULL OUTER
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DEPARTMENTS
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u los derechos reservados.
A toTodos
Copyright 2010, OracleS
y/o sus filiales.
E
D nse
Y
O lice
R
P
Obtencin de Datos de Varias lTablas
e
N
b
a
O
Iutilizar datos
A veces necesita
er de ms de una tabla. En el ejemplo de la diapositiva, el informe
C
f
s
A
muestra datos
independientes:
D detdos
rantablas contiene
U
LaNtabla n
EMPLOYEES
los ID de empleado.
F Las tablas
no EMPLOYEES y DEPARTMENTS contienen los ID de departamento.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Tipos de Uniones
Las uniones compatibles con el estndar SQL:1999 incluyen
los siguientes elementos:
Uniones naturales:
Clusula NATURAL JOIN
Clusula USING
Clusula ON
UnionesOUTER:
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
Uniones cruzadas
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tipos de Uniones
le
N
b
a
O
I utilizar
Para unir tablas,
er la sintaxis de unin que cumpla con el estndar SQL:1999.
Cpuede
f
s
A
Nota ND
an
r
t
U
n anteriores a Oracle9i la sintaxis de unin era diferente a los estndares American
F En versiones
o
n
National Standards Institute (ANSI). La sintaxis de unin compatible con SQL:1999 no ofrece
ninguna ventaja en el rendimiento respecto a la sintaxis de unin propietaria de Oracle que
exista en las versiones anteriores. Para obtener ms informacin sobre la sintaxis de unin
propiedad de Oracle, consulte el apndice F: Sintaxis de Unin en Oracle.
En la siguiente diapositiva se trata la sintaxis de unin compatible con SQL:1999.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Unin de Tablas mediante la Sintaxis
SQL:1999
le
N
b
a
O
En la sintaxis:CI
er la tabla y la columna desde las que se recuperan los datos
f
s
A
table1.column
indica
ran une dos tablas basndose en el mismo nombre de la columna
ND n-JOIN
t
U
NATURAL
F JOINnotable2 USING column_name realiza una unin igualitaria basndose en el nombre
de la columna
JOIN table2 ON table1.column_name = table2.column_name performs
realiza una unin igualitaria basndose en la condicin de la clusula ON
LEFT/RIGHT/FULL OUTER se utiliza para realizar uniones OUTER
CROSS JOIN devuelve un producto cartesiano de las dos tablas
Para obtener ms informacin, consulte la seccin sobre SELECT en Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la base de datos 10g
u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
Utilizar alias de columna para distinguir columnas a
que
s
e uid
ddiferentes
tienen nombres idnticos, pero que residen en
y
G
o
r
t
p
n
tablas.
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Cualificacin de Nombres de Columna
Ambiguos
le
N
b
a
O
r cualificar los nombres de las columnas con el nombre de la tabla para
Al unir dos o msI tablas, debe
C Sinnslosfeprefijos
A
evitar ambigedad.
de tabla, la columna DEPARTMENT_ID de la lista SELECT puede
D
a
r
N
t
provenir
de
la
tabla
DEPARTMENTS
o de la tabla EMPLOYEES. Es necesario agregar el prefijo de
U onF
tabla paranejecutar la consulta. Si no existen nombres de columna comunes entre las dos tablas, no es
Mantiene el cdigo SQL ms pequeo, utiliza menos
memoria
necesario cualificar las columnas. Sin embargo, el uso del prefijo de tabla mejora el rendimiento, ya
que indica al servidor de Oracle dnde encontrar exactamente las columnas.
Sin embargo, la cualificacin de nombres de columna con nombres de tabla puede llevar bastante
tiempo, especialmente si los nombres de tabla son largos. En su lugar, puede utilizar alias de tabla.
Igual que un alias de columna proporciona otro nombre a una columna, un alias de tabla proporciona
otro nombre a una tabla. Los alias de tabla ayudan a mantener el cdigo SQL ms pequeo y, por lo
tanto, menos uso de memoria
El nombre de tabla se especifica por completo, seguido de un espacio y del alias de tabla. Por ejemplo,
a la tabla EMPLOYEES se le puede proporcionar el alias e y, a la tabla DEPARTMENTS el alias d.
Instrucciones
Los alias de tabla pueden tener hasta 30 caracteres de longitud, pero los alias ms cortos son
mejores que los largos.
Si se utiliza un alias de tabla para un nombre de tabla determinado en la clusula FROM, el alias de
tabla se deber sustituir por el nombre de tabla mediante la sentencia SELECT.
Los alias de tabla deben ser significativos.
El alias de tabla es vlido slo para la sentencia actual SELECT.
Oracle Database: Conceptos Fundamentales de SQL I 6-7
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Unin natural:
Clusula USING
Clusula ON
Autounin
Uniones no igualitarias
Unin OUTER:
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
Producto cartesiano
p
n@ tude
o
Unin cruzada
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unin LEFT OUTER
Unin RIGHT OUTER
Unin FULL OUTER
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Uniones Naturales
le
N
b
a
O
Iautomticamente
Puede unir tablas
er basndose en las columnas de las dos tablas que tienen el mismo
C
f
s
A
nombre yD
mismos
antipos de dato. Puede realizar esta accin utilizando las palabras clave
r
N losJOIN.
t
NATURAL
U
F non
Nota: la unin se puede producir nicamente en las columnas que tienen los mismos nombres y los
mismos tipos de dato en ambas tablas. Si las columnas tienen el mismo nombre pero tipos de dato
diferentes, la sintaxis NATURAL JOIN produce un error.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
department_id, department_name,
location_id, city
FROM
departments
NATURAL JOIN locations ;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Recuperacin de Registros con
leUniones Naturales
N
b
a
O
En el ejemplo de Ila diapositiva,
LOCATIONS est unida a la tabla DEPARTMENT mediante
C nsferquelaestabla
A
la columna
LOCATION_ID,
la
nica
con el mismo nombre en ambas. Si estn presentes otras
D tra
N
columnas
n- la unin debe haberlas utilizado todas.
FU ncomunes,
o
Uniones Naturales con la Clusula WHERE
Las restricciones adicionales en una unin natural se implantan utilizando una clusula WHERE. El
siguiente ejemplo limita las filas de salida a las que tienen un ID de departamento igual a 20 o a 50:
SELECT
department_id, department_name,
location_id, city
FROM
departments
NATURAL JOIN locations
WHERE
department_id IN (20, 50);
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ceUSING
i
RlaOClusula
l
Creacin de Uniones con
P
le
N
b
a
O
Las uniones naturales
las columnas con tipos de dato y nombres coincidentes para unir
CI nutilizan
fer todas
s
Aclusula
las tablas.DLa
USING
se puede utilizar para especificar slo las columnas que se deben
ra igualitaria.
Npara una
t
utilizar
unin
U
n
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DEPARTMENTS
a
s
a
)h
g
Primary key
r
o e
a
s
Clave ajena
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Unin de Nombres de Columna
le
N
b
a
O
Para determinar
de un empleado, compare el valor de la columna
eder departamento
CelI nombre
f
s
A
DEPARTMENT_ID
en
la
tabla
EMPLOYEES
con los valores de DEPARTMENT_ID de la tabla
D tran
N
DEPARTMENTS.
U on- La relacin entre las tablas EMPLOYEES y DEPARTMENTS es una unin
F
n es decir, los valores de la columna DEPARTMENT_ID de ambas tablas deben ser iguales.
igualitaria;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
ROconelaliClusula
Recuperacin de Registros
USING
P
l
N
b
Odiapositiva,
En el ejemplo deIla
ra las columnas DEPARTMENT_ID de las tablas EMPLOYEES y
e
C
f
DEPARTMENTS
ns y, por lo tanto, se muestra el LOCATION_ID del departamento en el que
DA tseraunen
N
trabaja
FU elnempleado.
on-
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce USING
i
RlaOClusula
l
Uso de Alias de Tabla con
P
le
N
b
a
O
Al realizar una unin
USING, no puede cualificar una columna que se utiliza en la
CIen s.ncon
flaerclusula
s
A
clusula USING
Adems,
si
esa
columna se utiliza en cualquier ubicacin de la sentencia SQL,
D agregar
a
r
N
t
no se
le
puede
ningn
alias.
Por
ejemplo, en la consulta mencionada en la diapositiva, no
U
n
F
o
debe agregar
n un alias a la columna location_id en la clusula WHERE porque la columna se
utiliza en la clusula USING.
Las columnas a las que se hace referencia en la clusula USING no deben tener un cualificador
(nombre o alias de la tabla) en cualquier ubicacin de la sentencia SQL. Por ejemplo, la siguiente
sentencia es vlida:
SELECT l.city, d.department_name
FROM
locations l JOIN departments d USING (location_id)
WHERE location_id = 1400;
Las columnas comunes en ambas tablas, pero que no se utilizan en la clusula USING, se deben
prefijar con un alias de tabla, de lo contrario aparecer el error column ambiguously defined.
En la siguiente sentencia , manager_id est presente tanto la tabla employees como en
departments ; si no se prefija manager_id con un alias de tabla, se produce el error column
ambiguously defined.
El siguiente ejemplo es vlido:
SELECT first_name, d.department_name, d.manager_id
FROM
employees e JOIN departments d USING (department_id)
WHERE department_id = 50;
Oracle Database: Conceptos Fundamentales de SQL I 6-14
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ceON
i
RlaOClusula
l
Creacin de Uniones con
P
le
N
b
a
O
Utilice la sentencia
respecificar una condicin de unin. Esto permite especificar condiciones
I ON para
fecualquier
AC ansde
de unin D
independientes
condicin de filtro o de bsqueda en la clusula WHERE.
r
N
t
FU non-
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
ROconelaliClusula
Recuperacin de Registros
ON
P
l
N
b
Ocolumnas
En este ejemplo, Ilas
raDEPARTMENT_ID en la tabla EMPLOYEES y DEPARTMENTS se
e
C
f
unen conD
la A
clusula ON.
ns Cuando un ID de departamento de la tabla EMPLOYEES sea igual al ID de
a
r
N
t
departamento
U onde- la tabla DEPARTMENTS, se devolver una fila. El alias de tabla es necesario para
F
cualificarnlos column_names coincidentes.
Tambin puede utilizar la clusula ON para unir columnas que tienen nombres diferentes. Los
parntesis de las columnas unidas, como se muestra en el ejemplo de la diapositiva,
(e.department_id = d.department_id) son opcionales. Incluso, ON
e.department_id = d.department_id funcionar.
Nota: al utilizar el icono Execute Statement para ejecutar la consulta, SQL Developer agrega el
sufijo _1 para diferenciar entre los dos department_ids.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
Creacin de Uniones en
3 Direcciones
con la Clusula ON
P
e
l
N
b
Una unin en tresIO
direcciones
raes una unin de tres tablas. En la sintaxis compatible con SQL:1999,
e
C
f
s izquierda a derecha. Por lo tanto, la primera unin que se realiza es
A
las uniones
se realizan
nde
D
a
r
N
t
EMPLOYEES
- DEPARTMENTS. La primera condicin de unin puede hacer referencia a las
nJOIN
FU oEMPLOYEES
columnasnde
y DEPARTMENTS, pero no puede hacer referencia a las columnas de
LOCATIONS. La segunda condicin de unin puede hacer referencia a las columnas de las tres
tablas.
Nota: el ejemplo de cdigo de la diapositiva tambin se puede realizar con la clusula USING:
SELECT e.employee_id, l.city, d.department_name
FROM employees e
JOIN
departments d
USING (department_id)
JOIN
locations l
USING (location_id)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
O bien
a
s
a
SELECT e.employee_id, e.last_name, e.department_id,g) h
or
d.department_id, d.location_id
a
es uide
FROM
employees e JOIN departments d
d
y
ON
(e.department_id = d.department_id)
ro nt G
p
WHERE
e.manager_id = 149 ;
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Aplicacin de Condiciones Adicionales
a una Unin
le
N
b
a
O
r
Puede aplicar condiciones
a la unin.
CI nsfeadicionales
A
El ejemplo
Drealizatruna
a unin en las tablas EMPLOYEES y DEPARTMENTS y, adems, muestra slo
N
U
los
Fempleados
onque tienen un ID de gestor de 149. Para agregar condiciones adicionales a la clusula
ON, puedenagregar clusulas AND. Por otro lado, puede utilizar una clusula WHERE para aplicar
condiciones adicionales.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Unin natural:
Clusula USING
Clusula ON
Autounin
Uniones no igualitarias
Unin OUTER:
Clusula LEFT OUTER
s
a
h
rg)
Unin RIGHT OUTER
o
sa ide
Unin FULL OUTER
e
d
roy nt Gu
p
Producto cartesiano
n@ tude
o
i
Unin cruzada
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
EMPLOYEES (WORKER)
EMPLOYEES (MANAGER)
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
MANAGER_ID en la tabla WORKER
igual
uda
on es S
t
i
c
EMPLOYEE_ID en la tabla
a MANAGER.
is
d
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
P bMisma
Unin de una Tabla consigo
le
N
a
O
r una tabla consigo misma. Para buscar el nombre de cada gestor del
Puede que a veces
unir
etabla
CI necesite
f
s
A
empleado,
necesita
unir
la
EMPLOYEES consigo misma o realizar una autounin. Por ejemplo,
D tran
N
- del gestor de Lorentz, necesita:
para
buscar elnnombre
F UBuscar
noa Lorentz en la tabla EMPLOYEES buscando en la columna LAST_NAME.
Busque el nmero de gestor de Lorentz consultando la columna MANAGER_ID. El nmero de
gestor de Lorentz es 103.
Busque el nombre del gestor con un EMPLOYEE_ID de 103 consultando la columna
LAST_NAME. El nmero de empleado de Hunold es 103, por lo que Hunold en el gestor de
Lorentz.
Durante este proceso, busca dos veces en la tabla. La primera vez, cuando consulta la tabla para
buscar a Lorentz en la columna LAST_NAME y el valor de MANAGER_ID de 103. La segunda vez,
cuando busca en la columna EMPLOYEE_ID para buscar 103 y en la columna LAST_NAME para
buscar a Hunold.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
g)
r
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ceON
i
RlaOClusula
l
Autouniones que Utilizan
P
le
N
b
a
O
La clusula ON tambin
seepuede
r utilizar para unir columnas con nombres diferentes, ya sea en la
I
C
f
s
A
misma tabla
D o entotra
andiferente.
r
N
U
En
se muestra una autounin de la tabla EMPLOYEES basada en las columnas
Fel ejemplo
non y MANAGER_ID.
EMPLOYEE_ID
Nota: los parntesis de las columnas unidas, como se muestra en la diapositiva
(e.manager_id = m.employee_id) son opcionales. Incluso ON e.manager_id =
m.employee_id funcionar.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Unin natural:
Clusula USING
Clusula ON
Autounin
Uniones no igualitarias
Unin OUTER:
Clusula LEFT OUTER
s
a
h
rg)
Unin RIGHT OUTER
o
sa ide
Unin FULL OUTER
e
d
roy nt Gu
p
Producto cartesiano
n@ tude
o
i
Unin cruzada
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Uniones no igualitarias
EMPLOYEES
JOB_GRADES
s
a
h
JOB_GRADES define el rango de
rg)
o
valores de LOWEST_SAL y
sa ide
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
@ tude
n
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Recuperacin de Registros con
le Uniones no Igualitarias
N
b
a
O
r una unin no igualitaria para evaluar el grado de salario de un
La diapositivaC
delI ejemploecrea
f
s
A
empleado.
DEl salario
andebe estar entre cualquier par de los rangos de salario bajos y altos.
r
N
t
U
EsFimportantentener en cuenta que todos los empleados aparecern slo una vez al ejecutar esta
o
consulta. n
No se repite ningn empleado en la lista. Existen dos motivos por los que se produce este
hecho:
Ninguna de las filas de la tabla JOB_GRADES contiene grados que se solapen. Es decir, el valor
de salario de un empleado slo puede oscilar entre los valores de salario bajo y alto de una de las
filas de la tabla de grados de salario.
Todos los salarios de los empleados oscilan entre los lmites proporcionados por la tabla de
grados de cargo. Es decir, ningn empleado gana menos que el valor ms bajo de la columna
LOWEST_SAL o ms que el valor ms alto de la columna HIGHEST_SAL.
Nota: se pueden utilizar otras condiciones (como <= y >=), pero BETWEEN es la ms simple.
Recuerde especificar primero el valor bajo y, a continuacin, el alto al utilizar BETWEEN. El servidor
Oracle convierte la condicin BETWEEN en un par de condiciones AND. Por lo tanto, el uso de
BETWEEN no proporciona ninguna ventaja, se recomienda slo para la simplicidad lgica.
En el ejemplo de la diapositiva se han especificado los alias de tabla por motivos de rendimiento, no
por una posible ambigedad.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Unin natural:
Clusula USING
Clusula ON
Autounin
Uniones no igualitarias
Unin OUTER:
Clusula LEFT OUTER
s
a
h
rg)
Unin RIGHT OUTER
o
sa ide
Unin FULL OUTER
e
d
roy nt Gu
p
Producto cartesiano
n@ tude
o
i
Unin cruzada
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
en el departamento 190.
sa ide
e
d
roy nt Gu
Al empleado Grant no
p
se le ha asignado un ID
n@ tude
o
i
c is S
departamento.
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce Directa con Uniones OUTER
i
RsinOCoincidencia
l
Devolucin de Registros
P
le
N
b
a
O
r
Si una fila no cumple
de unin, la fila no aparece en el resultado de consultas.
CI nuna
fecondicin
s
A
D detlaradiapositiva, se utiliza una condicin de unin igualitaria en las tablas
En el ejemplo
N
U
EMPLOYEES
F nony-DEPARTMENTS para devolver el resultado a la derecha. El juego de resultados no
contiene lo siguiente:
El ID de departamento 190, porque no hay ningn empleado con dicho ID registrado en la tabla
EMPLOYEES.
El empleado con apellido Grant, porque a este empleado no se ha asignado un ID departamento.
Para volver al registro de departamento que no tiene ningn empleado o empleados que no tienen un
departamento asignado, puede utilizar la unin OUTER.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
RO e OUTER
l
Uniones INNER frente aPUniones
Ncon clusulas
bl NATURAL JOIN, USING u ON da como resultado una unin
a
O
La unin de las tablas
r
I
AC afilansnofecoincidente no aparece en la salida. Para devolver las filas no coincidentes,
INNER. Cualquier
D
-trunin OUTER. Una unin OUTER devuelve todas las filas que cumplen la
puede
utilizarnuna
UN
F
o
condicinnde unin y tambin algunas o todas las filas de una tabla para la que ninguna fila de la otra
tabla cumple la condicin de unin.
Hay tres tipos de uniones OUTER:
LEFT OUTER
RIGHT OUTER
FULL OUTER
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
LEFT OUTER JOIN
P
l
Ntodasrlas
bfilas
a
O
Esta consulta recupera
de la tabla EMPLOYEES que es la tabla de la izquierda, incluso
I
e en la tabla
f
s
AC coincidencia
si no hayD
ninguna
DEPARTMENTS.
n
a
r
N
t
FU non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
RIGHT OUTER JOIN
P
l
Ntodasrlas
bfilas
a
O
Esta consulta recupera
DEPARTMENTS que es la tabla de la izquierda,
I
C nsfecoincidenciadeenla latabla
incluso siD
noAhay ninguna
tabla EMPLOYEES.
N n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
FULL OUTER JOIN
P
l
Ntodasrlas
bfilas
a
O
Esta consulta recupera
de la tabla EMPLOYEES, incluso si no hay ninguna
I
e
Cla tabla
f
s
A
coincidencia
en
DEPARTMENTS.
Tambin recupera todas las filas de la tabla
D tran
N
DEPARTMENTS,
FU non- incluso si no hay ninguna coincidencia en la tabla EMPLOYEES.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Unin natural:
Clusula USING
Clusula ON
Autounin
Unin no igualitaria
Unin OUTER:
Clusula LEFT OUTER
s
a
h
rg)
Unin RIGHT OUTER
o
sa ide
Unin FULL OUTER
e
d
roy nt Gu
p
Producto cartesiano
n@ tude
o
i
Unin cruzada
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Productos Cartesianos
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Productos Cartesianos
le
N
b
a
O
I defunin
Cuando una condicin
er no es vlida o se omite completamente, el resultado es un producto
C
s
A
cartesiano,
nse muestran todas las combinaciones de filas. Todas las filas de la primera tabla
Den eltque
afilas
r
seFunen
las
de la segunda tabla.
UNa todas
n
o
n
Un producto cartesiano tiende a generar un gran nmero de filas y el resultado es poco til. Debe
incluir siempre una condicin de unin vlida a menos que tenga necesidades especficas de
combinar todas las filas de todas las tablas.
Los productos cartesianos son tiles para algunas pruebas para las que necesite generar un gran
nmero de filas para simular una cantidad razonable de datos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DEPARTMENTS (8 filas)
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Generacin de un Producto Cartesiano
le
N
b
a
O
Se genera un producto
cartesiano
una condicin de unin. En el ejemplo de la diapositiva
er si sey elomite
CI ndel
fempleado
s
A
se muestra
el
apellido
nombre
del departamento de las tablas EMPLOYEES y
D tra
N
DEPARTMENTS.
U on- Ya que no se ha especificado ninguna condicin de unin, todas las filas (20 filas)
F
de la tablanEMPLOYEES se unen con todas las filas (8 filas) de la tabla DEPARTMENTS por lo que se
Producto cartesiano:
20 x 8 = 160 filas
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Uniones Cruzadasle
ab un producto cartesiano de las tablas EMPLOYEES y
ON ferproduce
El ejemplo de la Idiapositiva
C
DEPARTMENTS.
DA trans
N
U CROSS
La
n- JOIN se puede aplicar a muchas situaciones de forma til. Por ejemplo, para
Ftcnica
o
n
devolver el costo de mano de obra total por oficina por mes, incluso si el mes X no tiene costo de
mano de obra, puede realizar un unin cruzada de oficinas con la tabla de todos los meses.
Es una prctica aconsejable declarar de forma explcita CROSS JOIN en SELECT si desea crear un
producto cartesiano. Por lo tanto, queda muy claro que desea que esto ocurra y que no se trata del
resultado de las uniones que faltan
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
La sintaxis de unin estndar SQL:1999 soporta los siguientes
tipos de uniones. Qu tipos de unin no soporta la sintaxis de
unin de Oracle?
1. Uniones igualitarias
2. Uniones no igualitarias
3. Unin OUTER izquierda
4. Unin OUTER derecha
5. Unin OUTER completa
s
a
h
6. Autouniones
rg)
o
sa ide
7. Uniones naturales
e
d
roy nt Gu
8. Productos cartesianos
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1, 2, 3, 4, 6, 8
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin debe haber aprendido a utilizar uniones para
mostrar los datos de varias tablas utilizando:
Uniones igualitarias
Uniones no igualitarias
Uniones OUTER
Autouniones
Uniones cruzadas
Uniones naturales
Unin OUTER completa (o de dos lados)
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r
Hay varios modos
CI denunir
fetablas.
s
A
Tipos N
deD
Unionesra
-t
U
igualitarias
n
F Uniones
o
n no igualitarias
Uniones
Uniones OUTER
Autouniones
Uniones cruzadas
Uniones naturales
Unin OUTER completa (o de dos lados)
Productos Cartesianos
Un producto cartesiano da como resultado una visualizacin de todas las combinaciones de filas.
Para ello debe omitir la clusula WHERE o especificar la clusula CROSS JOIN.
Alias de Tabla
Los alias de tabla aceleran el acceso a la base de datos.
Los alias pueden ayudar a mantener el cdigo SQL ms pequeo utilizando de esta forma menos
memoria.
A veces los alias de tabla son obligatorios para evitar la ambigedad de columna.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 6: Visin General
le
N
b
a
O
Idestinada
Esta prctica est
ear proporcionarle experiencia en la extraccin de datos desde ms de una
C
f
s
A
tabla utilizando
ran compatibles con SQL:1999.
ND n-uniones
t
U
F no
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Definir subconsultas
Describir los tipos de problemas que pueden solucionar
las subconsultas
Mostrar los tipos de subconsultas
Escribir subconsultas de una o varias filas
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
En esta leccin aprender
avanzadas de la sentencia SELECT. Puede escribir subconsultas
r
I
efunciones
C
f
s
A
en la clusula
WHERE
de
otra
sentencia
SQL para obtener valores basados en un valor condicional
D tran
N
desconocido.
FU nonEn- esta leccin se tratan tambin subconsultas de una y de varias filas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
Cul es el salario de Abel?
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de una Subconsulta para lSolucionar
Problemas
e
N
b
a
O
Supongamos que
escribir
er una consulta para saber quin gana un salario mayor que el de Abel.
CIdesea
f
s
A
n
D este
Para solucionar
necesita dos consultas: Una para saber cunto gana Abel y otra para
aproblema,
r
N
t
U
saber
n ms que esa cantidad.
F quin
ogana
n
Tambin puede solucionar este problema combinando las dos consultas y colocando una dentro de la
otra.
La consulta interna (o subconsulta) devuelve un valor que utiliza la consulta externa (o consulta
principal). El uso de una subconsulta es equivalente a la realizacin de dos consultas secuenciales y
al uso del resultado de la primera consulta como el valor de bsqueda en la segunda consulta.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Sintaxis de la Subconsulta
select_list
Tabla
expr operator
(SELECT
FROM
select_list
table);
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Sintaxis de la Subconsulta
le
N
b
a
O
Una subconsulta Ies una sentencia
SELECT que est embebida en la clusula de otra sentencia
er potentes
f
s
ACcrear
SELECT.D
Puede
sentencias
a partir de sentencias simples utilizando las subconsultas.
n
a
r
N
t
Pueden
U ser omuy
n-tiles cuando necesite seleccionar filas de una tabla con una condicin de que
F
n
dependa de los datos de la propia tabla.
Puede colocar la subconsulta en diferentes clusulas SQL, entre las que se incluyen las siguientes:
Clusula WHERE
Clusula HAVING
Clusula FROM
En la sintaxis:
operator incluye una condicin de comparacin como >, = o IN
Nota: las condiciones de comparacin pueden ser de dos clases: operadores de una sola fila
(>, =, >=, <, <>, <=) y operadores de varias filas (IN, ANY, ALL, EXISTS).
Se suele hacer referencia a la subconsulta como una sentencia SELECT anidada, una subconsulta
SELECT o una sentencia SELECT interna. Por lo general, la subconsulta se ejecuta en primer lugar y
su resultado se utiliza para completar la condicin de consulta para la consulta principal (o externa).
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Uso de Subconsultas
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Subconsultas
le
N
b
a
O
Ila consulta
En la diapositiva,
erinterna determina el salario del empleado Abel. La consulta externa
C
f
s
A
obtiene elD
la consulta interna y lo utiliza para mostrar a todos los empleados que ganan
adenAbel.
r
Nelresultado
t
ms
que
empleado
U
F non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Instrucciones para el Uso de Subconsultas
le
N
b
a
O
r incluida entre parntesis.
I debefeestar
Una subconsulta
C
s
A
Coloque
subconsultas
a la derecha de la condicin de comparacin para facilitar la
n
raembargo,
ND nlas-Sin
t
legibilidad.
la subconsulta puede aparecer a cualquier lado del operador de
U
F comparacin.
no
En las subconsultas, se utilizan dos clases de condiciones de comparacin: operadores de una
sola fila y operadores de varias filas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Tipos de Subconsultas
devuelve
ST_CLERK
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tipos de Subconsultas
le
N
b
a
O
Subconsultas
r fila: consultas que devuelven slo una fila de la sentencia SELECT
I de unafesola
C
s
A
interna.
ND n-tradenvarias filas: consultas que devuelven ms de una fila de la sentencia SELECT
U
Subconsultas
F interna.
no
Subconsulta
devuelve
ST_CLERK
SA_MAN
Nota: tambin existen varias subconsultas de varias columnas, que son consultas que devuelven ms
de una columna de la sentencia SELECT interna. stas se tratan en el curso Oracle Database:
Conceptos Fundamentales de SQL II..
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Mayor que
>=
s
a
h
Menor que
g)
r
o
<=
Menor o igual que
sa ide
e
d
<>
Distinto de
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Subconsultas de Una Sola Filale
N solarfila
bdevuelve una fila de la sentencia SELECT interna. Este tipo de
a
Ouna
Una subconsulta Ide
e
C
sf de una sola fila. La diapositiva proporciona una lista de los
Autiliza aunnoperador
subconsulta
D
N
-trsola fila.
operadores
FU nodenuna
Ejemplo:
<
Muestre los empleados cuyo ID de cargo sea el mismo que el del empleado 141:
SELECT last_name, job_id
FROM
employees
WHERE job_id =
(SELECT job_id
FROM
employees
WHERE employee_id = 141);
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Ejecucin de Subconsultas dele
una Sola Fila
N
b
a
O
Una sentencia SELECT
seepuede
r considerar como un bloque de consulta. El ejemplo de la
I
C
f
s
A
diapositiva
Dmuestra
alosn empleados que realizan el mismo trabajo que Taylor, pero que tienen un
r
Nmayor
t
salario
que
l.
U
F non
El ejemplo tiene tres bloques de consulta: la consulta externa y las dos consultas internas. Los
bloques de consulta internos se ejecutan primero, produciendo los resultados de consulta SA_REP y
8600, respectivamente. A continuacin, se procesa el bloque de consulta externo y utiliza los
valores devueltos por las consultas internas para completar sus condiciones de bsqueda.
Tanto las consultas internas como externas devuelven valores nicos (SA_REP y 8600,
respectivamente), por lo que a esta sentencia SQL se la denomina subconsulta de una sola fila.
Nota: las consultas externas e internas pueden obtener datos de diferentes tablas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de Funciones de Grupo en
leuna Subconsulta
N
b
a
O
r consulta principal utilizando una funcin de grupo en una subconsulta
Puede mostrarC
losI datos deeuna
f
s
A
para que D
una
ansola fila. La subconsulta est entre parntesis y se coloca al final de la
r
N devuelva
t
condicin
de
comparacin.
U
F non
El ejemplo de la diapositiva muestra el apellido del empleado, el ID de cargo y el salario de todos los
empleados cuyo salario sea igual al salario mnimo. La funcin de grupo MIN devuelve un valor
nico (2500) a la consulta externa.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Clusula HAVING con Subconsultas
P
N raenblla clusula WHERE y en la clusula HAVING. El servidor de Oracle
O
Puede utilizar lasIsubconsultas
feresultados se devuelven en la clusula HAVING de la consulta principal.
AC anyslos
ejecuta laD
subconsulta
-trde la diapositiva muestra todos los departamentos que tienen un salario mnimo
UN oSQL
La
n
Fsentencia
nel del departamento 50.
mayor que
Ejemplo:
Busque el puesto con el salario medio ms bajo.
SELECT
FROM
GROUP BY
HAVING
job_id, AVG(salary)
employees
job_id
AVG(salary) = (SELECT
MIN(AVG(salary))
FROM
employees
GROUP BY job_id);
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Qu Parte de esta Sentencia lEs
e Incorrecta?
N
b
a
O
r
I en las
Un error muy comn
se produce cuando se devuelve ms de una fila para una
esubconsultas
C
f
s
A
subconsulta
n fila.
D de una
asola
r
N
t
U
En
n SQL de la diapositiva, la subconsulta contiene una clusula GROUP BY, que implica
Fla sentencia
o
n
que la subconsulta devolver varias filas, una por cada grupo que encuentre. En este caso, los
resultados de la subconsulta son 4400, 6000, 2500, 4200, 7000, 17000 y 8300.
La consulta externa toma esos resultados y los utiliza en su clusula WHERE. La clusula WHERE
contiene un operador igual (=), un operador de comparacin de una sola fila que espera un nico
valor. El operador = no puede aceptar ms de un valor de la subconsulta y, por lo tanto, genera el
error.
Para corregir este error, cambie el operador = a IN.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
La Consulta Interna No Devuelve
le Ningn Resultado
N
b
a
O
I deflas
Otro problemaC
comn
ersubconsultas se produce cuando la consulta interna no devuelve ninguna
s
A
fila.
D tran
N
U
En
n-SQL de la diapositiva, la subconsulta contiene una clusula WHERE. Supuestamente,
Fla sentencia
o
n
la intencin es encontrar el empleado cuyo nombre es Haas. La sentencia es correcta, pero no
La subconsulta no devuelve ninguna fila porque
no hay ningn empleado con el nombre Haas.
selecciona ninguna fila al ejecutarse porque no hay ningn empleado con el nombre Haas. Por lo
tanto, la subconsulta no devuelve ninguna fila.
La consulta externa toma los resultados de la subconsulta (nula) y los utiliza en la clusula WHERE.
La consulta externa no encuentra ningn empleado con un ID de cargo igual que un valor nulo, por lo
tanto, no devuelve ninguna fila. Si exista un cargo con un valor nulo, la fila no se devolver porque
la comparacin de dos valores nulos tiene como resultado un valor nulo; por lo tanto, la condicin
WHERE no es verdadera.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Significado
IN
ANY
a
s
a
)h
g
ALL
Debe estar precedido por =, !=, >, <, <=, >=.
r
ao de
Compara un valor con cada valor de la listaeos
d Gui
y
o
devuelto por una consulta. Se evalaren TRUEt si la
p en
@
consulta no devuelve ninguna
fila.
n
o
tud
i
S
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Subconsultas de Varias Filas le
bms de una fila se denominan subconsultas de varias filas. Con una
a
ONdevuelven
r
Ique
Las subconsultas
e
C
sf puede utilizar un operador de varias filas en lugar de utilizar un operador
Ade varias
subconsulta
filas,
n
D
a
-Eltr operador de varias filas espera uno o ms valores:
deFuna
UNsolaofila.
n
n
SELECT last_name, salary, department_id
consulta no devuelve ninguna fila.
FROM
WHERE
employees
salary IN (SELECT
MIN(salary)
FROM
employees
GROUP BY department_id);
Ejemplo:
Busque los empleados que ganan el mismo salario que el salario mnimo de cada departamento.
Primero se ejecuta la consulta interna, produciendo el resultado de consulta. A continuacin, se
procesa el bloque de consulta principal y se utilizan los valores devueltos por la consulta interna para
completar la condicin de bsqueda. De hecho, la consulta principal aparece en el servidor de Oracle
de la siguiente forma:
SELECT
FROM
WHERE
8600,
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
Uso del Operador ANY P
enR
Subconsultas
de Varias Filas
e
l
N
b
El operador ANY IO
(y su sinnimo,
ra el operador SOME) compara un valor con cada valor devuelto por
e
C
f
una subconsulta.
ns de la diapositiva muestra los empleados que no son programadores de TI
DA tElraejemplo
N
yF
cuyo
U salario
nes- menor al de cualquier programador de TI. El salario mximo de un programador es
o
n
de 9.000 dlares.
<ANY significa menos que el mximo.
>ANY significa ms que el mnimo.
=ANY es igual que IN.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
Uso del Operador ALL P
enR
Subconsultas
de Varias Filas
e
l
N
b
O feunravalor con cada valor devuelto por una subconsulta. El ejemplo de la
El operador ALL Icompara
C
A alosnsempleados cuyo salario es inferior al salario de todos los empleados con un
diapositiva
Dmuestra
N
-tr y cuyo trabajo no es IT_PROG.
ID de
IT_PROG
n
FUcargo
o
n ms que el mximo y <ALL significa menos que el mnimo.
>ALL significa
El operador NOT se puede utilizar con los operadores IN, ANY y ALL.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Operador EXISTS
P
Nse utiliza
benl consultas en las que el resultado depende de si existen
a
O
El operador EXISTS
r
I
C ennlastabla
fe o no. Se evala en TRUE si la subconsulta devuelve al menos una fila.
Afilas
determinadas
D
ra
UN odenla-tdiapositiva
ElFejemplo
muestra los departamentos que no tienen empleados. Para cada fila de la
n
tabla DEPARTMENTS,
la condicin comprueba si existe o no una fila en la tabla EMPLOYEES con el
mismo ID de departamento. En caso de que no exista dicha fila, la condicin se cumple para la fila
en cuestin y se selecciona. Si existe una fila correspondiente en la tabla EMPLOYEES, la fila no se
selecciona.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
FROM
employees mgr);
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Valores Nulos en una Subconsulta
le
N
b
a
O
I de la diapositiva
La sentencia SQL
er intenta mostrar todos los empleados que no tienen ningn
C
f
s
A
subordinado.
sentencia SQL debe haber devuelto 12 filas. Sin embargo, la
an esta
rdevuelve
NDSQLnLgicamente,
t
sentencia
no
ninguna
fila. Uno de los valores devueltos por la consulta interna es un
U
F
o
n
valor nulo y, por lo tanto, la consulta completa no devuelve ninguna fila.
El motivo es que todas las condiciones que comparan un valor nulo tienen un resultado nulo. Por lo
tanto, cuando los valores nulos probablemente formen parte del juego de resultados de una
subconsulta, no utilice el operador NOT IN. El operador NOT IN es equivalente a <> ALL.
Tenga en cuenta que el valor nulo que forma parte del juego de resultados de una subconsulta no
representa ningn problema si se utiliza el operador IN. El operador IN es equivalente a =ANY. Por
ejemplo, para mostrar los empleados que tienen subordinados, utilice la siguiente sentencia SQL:
SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id
IN
(SELECT mgr.manager_id
FROM
employees mgr);
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
El uso de una subconsulta es equivalente a la realizacin de
dos consultas secuenciales y al uso del resultado de la primera
consulta como los valores de bsqueda en la segunda
consulta.
1. Verdadero
2. Falso
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Identificar cundo una subconsulta puede ayudar a
resolver un problema
Escribir subconsultas cuando una consulta est basada en
valores desconocidos
SELECT
FROM
WHERE
select_list
table
expr operator
(SELECT select_list
FROM
table);
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r
I haber
En esta leccin,
a utilizar las subconsultas. Una subconsulta es una sentencia
eaprendido
Cdebe
f
s
Aest
SELECTD
que
embebida
en
una
clusula
de otra sentencia SQL. Las subconsultas son tiles
n
a
r
N
t
cuando
consulta
n- est basada en criterios de bsqueda con valores intermedios desconocidos.
FU una
o
n
Las subconsultas tienen las siguientes caractersticas:
Pueden transferir una fila de datos a una sentencia principal que contenga un operador de una
sola fila como =, <>, >, >=, < o <=.
Pueden transferir varias filas de datos a una sentencia principal que contenga un operador de
varias filas, como IN.
Primero las procesa el servidor de Oracle y, a continuacin, la clusula WHERE o HAVING
utiliza los resultados.
Pueden contener funciones de grupo.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 7: Visin General
le
N
b
a
O
En esta prctica escribir
er complejas utilizando sentencias SELECT.
CI nsfconsultas
A
D trde
Para las
preguntas
a la prctica, puede crear la consulta interna primero. Antes de codificar la
N
U
consulta
F externa,
non asegrese de que la consulta interna se ejecuta y produce los datos que anticipe.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u los derechos reservados.
A toTodos
Copyright 2010, OracleS
y/o sus filiales.
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Describir los operadores de definicin
Utilizar un operador de definicin para combinar varias
consultas en una sola
Controlar del orden de las filas devueltas
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
r
I
En esta leccinCaprender
consultas utilizando los operadores de definicin.
ea escribir
f
s
A
ND n-tran
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Operadores de Definicin
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
UNION/UNION ALL
A
INTERSECT
a
s
a
)h
g
r
A
B
o e
a
s
de Guid
y
o
pr ent
MINUS
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Operadores de Definicin
le
N
b
a
O
I definicin
Los operadoresCde
er combinan el resultado de dos o ms consultas de componente en un
f
s
A
resultado.D
Las consultas
an que contienen operadores de definicin se denominan consultas compuestas.
r
N
t
U
.F
Operador
non Devuelve
UNION
UNION ALL
INTERSECT
MINUS
Todos los operadores de definicin tienen la misma prioridad. Si una sentencia SQL contiene varios
operadores de definicin, el servidor de Oracle los evala de izquierda (parte superior) a derecha
(parte inferior), si no hay ningn parntesis que especifique explcitamente otro orden. Debe utilizar
los parntesis para especificar el orden de evaluacin explcitamente en las consultas que utilizan el
operador INTERSECT en otros operadores de definicin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Instrucciones de los Operadores
le de Definicin
N
b
a
O
La expresiones
r SELECT deben coincidir en nmero y tipo de dato. Las consultas
I de lasfelistas
s
AC losanoperadores
queD
utilizan
UNION, UNION ALL, INTERSECT y MINUS en su clusula
r
N
t
- tener el mismo nmero y tipo de dato de columnas en su lista SELECT. El tipo
WHERE n
deben
FUde
o
n
dato de las columnas de la lista SELECT de las consultas de la consulta compuesta puede no
ser exactamente el mismo. La columna de la segunda consulta debe estar en el mismo grupo de
tipo de dato (por ejemplo, numrico o de caracteres) que la columna correspondiente de la
primera consulta.
Los operadores de definicin se pueden utilizar en subconsultas.
Debe utilizar los parntesis para especificar el orden de evaluacin en las consultas que utilizan
el operador INTERSECT en otros operadores de definicin. Esto garantiza el cumplimiento de
los emergentes estndares SQL que otorgarn al operador INTERSECT mayor prioridad que
los operadores de definicin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Servidor de Oracle y Operadores
le de Definicin
N
b
a
O
Cuando una consulta
utiliza
de definicin, el servidor de Oracle elimina automticamente
eroperadores
CI excepto
f
s
A
las filas duplicadas,
en
el
caso
del
operador UNION ALL. Los nombres de columna de la
n
D determinados
a
r
N
t
salida
estn
por
la
lista
de
columnas
de la primera sentencia SELECT. Por defecto, la
U onF
salida se n
ordena en orden ascendente segn la primera columna de la clusula SELECT.
Las expresiones correspondientes en las listas SELECT de las consultas de componente de una
consulta compuesta deben coincidir en nmero y tipo de dato. Si las consultas de componente
seleccionan datos de caracteres, el tipo de dato del valor de retorno se determina de la siguiente
forma:
Si ambas consultas seleccionan valores del tipo de dato CHAR, de la misma longitud, los
valores devueltos tienen el mismo tipo de dato CHAR con esa longitud. Si las consultas
seleccionan valores del tipo CHAR con diferentes longitudes, el valor devuelto es VARCHAR2
con la longitud del valor CHAR ms largo.
Si una o ambas consultas seleccionan valores del tipo de dato VARCHAR2, los valores
devueltos tienen un tipo de dato VARCHAR2.
Si las consultas de componente seleccionan datos numricos, el tipo de dato del valor de retorno se
determina segn la prioridad numrica. Si todas las consultas seleccionan valores del tipo NUMBER,
los valores devueltos tienen el tipo de dato NUMBER. En las consultas que utilizan operadores de
definicin, el servidor de Oracle no realiza una conversin explcita a travs de los grupos de tipos de
dato. Por lo tanto, si las expresiones correspondientes de las consultas de componente se resuelven
tanto en datos numricos como de caracteres, el servidor de Oracle devuelve un error.
Oracle Database: Conceptos Fundamentales de SQL I 8-6
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tablas Utilizadas en esta Leccin
le
N
b
a
O
En esta leccin seI utilizan e
C nsf dosr tablas: la tabla EMPLOYEES y la tabla JOB_HISTORY.
A
Ya est familiarizado
D tra con la tabla EMPLOYEES que almacena detalles sobre los empleados como un
N
U
nmero
nde- identificacin, la direccin de correo electrnico, el ID de cargo (por ejemplo,
F nico
o
n
ST_CLERK, SA_REP, etc.), el salario, el gestor, etc.
Algunos de los empleados llevan mucho tiempo en la compaa y han cambiado varias veces de
puesto. Esto se supervisa con la tabla JOB_HISTORY. Cuando un empleado cambia de cargo, los
detalles de fecha de inicio y finalizacin del cargo anterior, el job_id (por ejemplo, ST_CLERK,
SA_REP, etc.) y el departamento se registran en la tabla JOB_HISTORY.
La estructura y los datos de las tablas EMPLOYEES y JOB_HISTORY se muestran en las siguientes
pginas.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Tablas Utilizadas en esta Leccin (continuacin)
Existen casos en los que la misma persona ha ocupado el mismo puesto ms de una vez durante el
tiempo que ha permanecido en la compaa. Por ejemplo, el empleado Taylor, que empez a trabajar
en la empresa el 24 de marzo de 1998. Taylor ocup el puesto de SA_REP desde el 24 de marzo de
1998 al 31de diciembre de 1998 y el puesto de SA_MAN desde el 1 de enero de 1999 al 31 de
diciembre de 1999. Taylor volvi a ocupar el puesto de SA_REP, que es su puesto actual.
DESCRIBE employees
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Tablas Utilizadas en esta Leccin (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
-tr
UN onjob_history
FDESCRIBE
n
Fundacin Proydesa
Tablas Utilizadas en esta Leccin (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Operador UNION
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
r
t
pconsultas
n
El operador UNION devuelve los resultados de ambas
despus
e
@
de eliminar la duplicacin.
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Operador UNION
P
N ratodas
bl las filas seleccionadas en cualquier consulta. Utilice el operador
O
El operador UNION
devuelve
I
C ntodas
fe las filas de varias tablas y eliminar las filas duplicadas.
s
Adevolver
UNION para
D
N n-tra
U
Instrucciones
F no
El nmero de columnas seleccionadas debe ser el mismo.
Los tipos de dato de las columnas seleccionadas deben pertenecer al mismo grupo de tipo de
dato (por ejemplo, numrico o de caracteres).
No es necesario que los nombres de las columnas sean idnticos.
El operador UNION funciona en todas las columnas seleccionadas.
Los valores NULL no se ignoran durante la comprobacin de duplicados.
Por defecto, la salida se ordena en orden ascendente segn de las columnas de la clusula
SELECT.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
employee_id, job_id
employees
employee_id, job_id
job_history;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Operador UNION
P
N rcualquier
bl registro duplicado. Si los registros de las tablas EMPLOYEES y
a
O
El operador UNION
elimina
I
sfe stos slo aparecern una vez. Observe en la salida de la diapositiva
AC sonanidnticos,
JOB_HISTORY
D
queU
el N
registro del
-trempleado con un EMPLOYEE_ID de 200 aparece dos veces porque JOB_ID es
n
F
o
diferente n
en cada fila.
Considere el siguiente ejemplo:
SELECT employee_id, job_id, department_id
FROM
employees
UNION
SELECT employee_id, job_id, department_id
FROM
job_history;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
t
pr consultas,
n
El operador UNION ALL devuelve los resultados @
de ambas
e
incluidas todas las duplicaciones.
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Operador UNION ALL PR le li
N ALL
bpara devolver todas las filas de varias consultas.
a
Utilice el operador
r
IOUNION
e
C
A ansf
D
Instrucciones
N n-tr
FUinstrucciones
Las
no para UNION y UNION ALL son las mismas, excepto en los dos siguientes casos
que pertenecen a UNION ALL: a diferencia de UNION, las filas duplicadas no se eliminan y la salida
no se ordena por defecto.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RALL
Uso del Operador UNION
P
le
N
b
a
O
En el ejemplo C
se Iseleccionan
La combinacin de las dos tablas tiene un total de 30 filas. El
er30 filas.
f
s
A ALL
operador D
UNION
no
elimina
las
filas
duplicadas. UNION devuelve todas las filas distintas
n
a
r
N
t
- cualquier consulta. UNION ALL devuelve todas las filas seleccionadas por
seleccionadas
U onpor
F
n
cualquier consulta, incluyendo las duplicadas. Considere la consulta de la diapositiva escrita ahora
con la clusula UNION:
SELECT
FROM
UNION
SELECT
FROM
ORDER BY
employee_id, job_id,department_id
employees
employee_id, job_id,department_id
job_history
employee_id;
la consulta anterior devuelve 29 filas. Esto se debe a que elimina la siguiente fila (porque est
duplicada):
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Operador INTERSECT
s
a
h
rg)
o
sa ide
e
d
oy nt Gu
r
p
El operador INTERSECT devuelve filas comunes@
a ambas consultas.
de
n
u
o
t
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Operador INTERSECT PR le li
N rabpara devolver todas las filas comunes a varias consultas.
Utilice el operador
IOINTERSECT
C
A ansfe
D
Instrucciones
N n-tder columnas y los tipos de dato de las columnas seleccionadas por las sentencias
F UEl nmero
no en las consultas deben ser idnticos en todas las sentencias SELECT utilizadas en la
SELECT
consulta. No es necesario, sin embargo, que los nombres de las columnas sean idnticos.
Si se invierte el orden de las tablas intersectadas no se alterar el resultado.
INTERSECT no ignora los valores NULL.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Operador INTERSECT
P
N rablal consulta devuelve slo los registros que tienen los mismos valores
Odiapositiva,
En el ejemplo C
de Ila
fe en ambas tablas.
s
A seleccionadas
en las columnas
n
D
ra si agrega la columna DEPARTMENT_ID a la sentencia SELECT de la tabla
N
t
U
Cul
ser
el
resultado
n
F no
EMPLOYEES
y la columna DEPARTMENT_ID a la sentencia SELECT de la tabla JOB_HISTORY y
ejecuta esta consulta? El resultado puede variar debido a la introduccin de otra columna cuyos valores
pueden o no estar duplicados.
Ejemplo:
SELECT employee_id, job_id, department_id
FROM
employees
INTERSECT
SELECT employee_id, job_id, department_id
FROM
job_history;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Operador MINUS
s
a
h
rg)
o
sa ide
e
d
oy nt Gu
r
p
El operador MINUS devuelve todas las filas distintas
seleccionadas
e por la
@
d
n
u
primera consulta, pero que no estn presentes
en
el
juego
de
o
t resultados
i
S
c
a
de la segunda consulta.
is
d
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
Operador MINUS
P ble
N
Utilice el operador
ra devolver todas las filas distintas seleccionadas por la primero
IOMINUSfepara
C
s presentes en el juego de resultados de la segunda consulta (la primera
A que no
consulta,D
pero
nestn
a
r
N
t
sentencia
n- MINUS la segunda sentencia SELECT).
FU nSELECT
o
Nota: el nmero de columnas y los tipos de dato de las columnas seleccionadas por las sentencias
SELECT de las consultas deben pertenecer al mismo grupo de tipo de dato en todas las sentencias
SELECT utilizadas en la consulta. No es necesario, sin embargo, que los nombres de las columnas
sean idnticos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
employee_id
employees
employee_id
job_history;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Uso del Operador MINUS
P
N rablosl ID de empleado de la tabla JOB_HISTORY se restan de los de la
O
En el ejemplo de Ila
diapositiva,
sfe de resultados muestra los empleados resultantes despus de la resta;
AC aElnjuego
tabla EMPLOYEES.
D
N n-tr por filas que existen en la tabla EMPLOYEES pero que no existen en la tabla
estn
Urepresentados
F
no stos son los registros de los empleados que no han cambiado sus puestos ni una
JOB_HISTORY.
vez.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
RO eSELECT
l
Coincidencia de las Sentencias
P
N radeblasl listas SELECT de las consultas deben coincidir en nmero,
O
Debido a que las Iexpresiones
fe y funciones de conversin de tipos de dato para cumplir con esta
s
AC
puede utilizar
columnas
ficticias
n
D
ra se asigna el nombre Warehouse location como la cabecera de columna
N la diapositiva,
t
regla.
En
U
n
F nofuncin TO_CHAR se utiliza en la primera consulta para que coincida el tipo de dato
ficticia. La
VARCHAR2 de la columna state_province que recupera la segunda consulta. Igualmente, la
funcin TO_CHAR se utiliza en la segunda consulta para que coincida el tipo de dato VARCHAR2 de
la columna department_name que recupera la primera consulta.
La salida de la consulta se muestra a continuacin:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
employee_id, job_id,salary
employees
employee_id, job_id,0
job_history;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice Ejemplo
RO eSELECT:
l
Coincidencia de las Sentencias
P
N y JOB_HISTORY
bl
a
O
Las tablas EMPLOYEES
tienen varias columnas en comn (por ejemplo,
r
I
ey DEPARTMENT_ID).
C JOB_ID
f
s
A
EMPLOYEE_ID,
Pero, y si lo que desea es que la consulta muestre
D tran
N
- ID de cargo y salario con el operador UNION sabiendo que el salario slo existe
el ID
Ude empleado,
n
F
o
n
en la tabla EMPLOYEES?
El cdigo de ejemplo de la diapositiva coinciden las columnas EMPLOYEE_ID y JOB_ID de las
tablas EMPLOYEES y JOB_HISTORY. Se agrega el valor literal 0 a la sentencia JOB_HISTORY
SELECT para que coincida con columna numrica SALARY de la sentencia EMPLOYEES SELECT.
En los resultados mostrados en la diapositiva, cada fila de la salida que corresponde a un registro de
la tabla JOB_HISTORY contiene un 0 en la columna SALARY.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RBY
Uso de la Clusula ORDER
en
P
eOperaciones de Definicin
l
N
b
La clusula ORDER
rseapuede utilizar una vez en una consulta compuesta. Si se utiliza, la
IOBY slo
e
C
f
clusula ORDER
se
nsdebe colocar al final de la consulta. La clusula ORDER BY acepta el nombre
DA tBY
a
r
N
- Por defecto, la salida se ordena en orden ascendente segn la primera columna de
deFcolumna
U oonalias.
n
la clusula SELECT.
Nota: la clusula ORDER BY no reconoce los nombres de columna de la segunda consulta SELECT.
Para evitar la confusin con los nombres de columna, es una prctica habitual utilizar clusula
ORDER BY segn las posiciones de las columnas.
Por ejemplo, en la siguiente sentencia, la salida se mostrar en orden ascendente segn job_id.
SELECT employee_id, job_id,salary
FROM
employees
UNION
SELECT employee_id, job_id,0
FROM
job_history
ORDER BY 2;
Si omite ORDER BY, por defecto, la salida se ordenar en orden ascendente segn employee_id.
No puede utilizar las columnas de la segunda consulta para ordenar la salida.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Identifique las Instrucciones del operador de definicin.
1. La expresiones de las listas SELECT debe coincidir en
nmero.
2. Los parntesis no se pueden utilizar para modificar la
secuencia de ejecucin.
3. Los tipos de dato para cada columna de la segunda
consulta deben coincidir con los tipos de dato de su
columna correspondiente en la primera consulta.
s
4. La clusula ORDER BY slo se puede utilizar una vez en )laha
rg
o
ro nt G
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1, 3
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido a utilizar:
UNION para devolver todas las filas distintas
UNION ALL para devolver todas las filas, incluyendo los
duplicados
INTERSECT para devolver todas las filas que comparten
ambas consultas
MINUS para devolver todas las filas distintas
seleccionadas por la primera consulta, pero no por la
s
a
h
segunda
rg)
o
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
El operadorIUNION e
devuelve
todas las filas distintas seleccionadas por cada consulta de la
r
C
f
s
A
consulta
compuesta.
Utilice
el
operador UNION para devolver todas las filas de varias tablas y
D tran
N
- filas duplicadas.
eliminarnlas
F UUtilice
noel operador UNION ALL para devolver todas las filas de varias consultas. A diferencia
del operador UNION, las filas duplicadas no se eliminan y la salida no se ordena por defecto.
Utilice el operador INTERSECT para devolver todas las filas comunes a varias consultas.
Utilice el operador MINUS para devolver filas en la primera consulta que no estn en la
segunda.
Recuerde utilizar la clusula ORDER BY slo al final de la sentencia compuesta.
Asegrese de que las expresiones correspondientes de las listas SELECT coinciden en nmero
y tipo de dato.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 8: Visin General
le
N
b
a
O
I
En esta prctica
consultas
er utilizando los operadores de definicin.
Cescribir
f
s
A
ND n-tran
U
F no
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Manipulacin de Datos
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Describir cada sentencia de lenguaje de manipulacin de
datos (DML)
Insertar filas en una tabla
Actualizar filas en una tabla
Suprimir filas de una tabla
Controlar transacciones
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivo
le
N
b
a
O
r
I
En esta leccinCaprender
las sentencias de lenguaje de manipulacin de datos (DML) para
ea utilizar
f
s
A
insertar filas
unaatabla,
n actualizar filas existentes en una tabla y suprimir filas existentes de una
r
ND en
t
tabla.
Tambin
aprender
a controlar transacciones con las sentencias COMMIT, SAVEPOINT y
U
n
F
o
n
ROLLBACK.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
has
e
a
s
Consistencia de lectura
de Guid
y
o
r
t
Clusula FOR UPDATE en una sentencia p
SELECT
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Lenguaje de Manipulacin de lDatos
e
N
b
a
O
I
El lenguaje deC
manipulacin
erde datos (DML) es una parte fundamentalmente de SQL. Para agregar,
f
s
A
actualizarD
suprimir
los datos de la base de datos, ejecute una sentencia DML. La recopilacin de
anforman
r
N oDML
t
sentencias
que
una unidad lgica de trabajo se denomina transaccin.
U
F non
Piense en una base de datos bancaria. Cuando un cliente del banco transfiere dinero de su cuenta de
ahorro a una cuenta corriente, la transaccin puede constar de las siguientes tres acciones diferentes:
reducir la cuenta de ahorro, aumentar la cuenta corriente y registrar la transaccin en el diario de
transacciones. El servidor de Oracle debe garantizar que se ejecuten las tres sentencias SQL para
mantener el balance correcto de las cuentas. Si algo impide que una de las sentencias de la
transaccin se ejecute, las dems sentencias de la transaccin se deben deshacer.
Nota
La mayora de las sentencias DML de esta leccin asumen que no se ha violado ninguna
restriccin de esta tabla. Las restricciones se tratarn ms adelante en este curso.
En SQL Developer, haga clic en el icono Run Script o pulse [F5] para ejecutar las sentencias
DML. Los mensajes de comentarios se mostrarn en la pgina con separadores Script Output.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DEPARTMENTS
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Adicin de una Nueva Fila a una
le Tabla
N
b
a
O
El grfico de la diapositiva
r un nuevo departamento a la tabla DEPARTMENTS.
CI nsfeilustra
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
i
RO
l
Sintaxis de las Sentencias
INSERT
P
le
N
b
a
O
Puede agregar nuevas
CI nfilas
fearuna tabla emitiendo la sentencia INSERT.
s
A
D tra
En la sintaxis:
N
U
Ftable non- es el nombre de la tabla.
column
es el nombre de la columna de la tabla que se debe rellenar.
value
es el valor correspondiente para la columna.
Nota: esta sentencia con la clusula VALUES agrega slo una fila cada vez a la tabla.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Insercin de Filas
a
s
a
)h
g
r
o e
a
s
id
decomillas
Encerrar valores de caracteres y de fecha entre
u
y
G
o
pr ent
simples.
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Insercin de Filas
le
N
b
a
O
Iinsertar eunar nueva fila que contenga los valores de cada columna, no es necesaria
Puesto que puede
AC aennslafclusula
la lista deD
columnas
INSERT. Sin embargo, si no utiliza la lista de columnas, los
r
N
t
valores
U se deben
n- mostrar segn el orden por defecto de las columnas en la tabla y se debe
F
o
n
proporcionar un valor para cada columna.
DESCRIBE departments
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
departments (department_id,
department_name)
(30, 'Purchasing');
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Insercin de Filas con Valoresle
Nulos
N
b
a
O
Metodo
er
CI Descripcin
f
s
A
Implcito
an la columna de la lista de columnas.
ND n-trOmite
U
F no Introduzca la palabra clave NULL en la lista VALUES; especifique la
Explcito
cadena vaca ('') en la lista VALUES de las cadenas de caracteres
INSERT INTO
VALUES
departments
(100, 'Finance', NULL, NULL);
y fechas.
Asegrese de que puede utilizar valores nulos en la columna de destino mediante la verificacin del
estado Null con el comando DESCRIBE.
El servidor de Oracle aplica automticamente todos los tipos de dato, rangos de datos y restricciones
de integridad de los datos. Las columnas que no se muestran explcitamente obtienen un valor nulo
en la nueva fila.
Los errores comunes que se producen durante la entrada del usuario se comprueban en el siguiente
orden:
Valor obligatorio que falta para una columna NOT NULL
Valor duplicado que viola cualquier restriccin de clave nica o primaria
Cualquier valor que viole una restriccin CHECK
Mantenimiento de la integridad referencial para la restriccin de clave ajena
No coincidencias de tipo de dato o valores demasiado anchos para la columna
Nota: se recomienda el uso de la lista de columnas porque hace la sentencia INSERT ms legible y
fiable o menos proclive a errores.
Oracle Database: Conceptos Fundamentales de SQL I 9-8
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Insercin de Valores Especiales
le
N
b
a
O
I
Puede utilizar C
funciones
para
er introducir valores especiales en la tabla.
f
s
A
n
D detlaradiapositiva
En el ejemplo
se registra informacin sobre el empleado Popp en la tabla
N
U
EMPLOYEES.
F nonProporciona la fecha y hora actuales en la columna HIRE_DATE. Utiliza la funcin
SYSDATE
que devuelve la fecha y hora actuales del servidor de base de datos. Tambin puede
utilizar la funcin CURRENT_DATE para obtener la fecha actual en la zona horaria de la sesin.
Adems puede utilizar la funcin USER al insertar filas en la tabla. La funcin USER registra el
nombre de usuario actual.
Confirmacin de Adiciones a la Tabla
SELECT employee_id, last_name, job_id, hire_date, commission_pct
FROM
employees
WHERE employee_id = 113;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Verificar la adicin.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Insercin de Valores de Fechale
y Hora Especficos
N
b
a
O
El formato DD-MON-RR
I
esersuele utilizar para insertar el valor de fecha. Con el formato RR, el
C
f
s
A
sistema proporciona
D traelnsiglo correcto automticamente.
N
U
Tambin
n-especificar el valor de fecha en formato DD-MON-YYYY. Se recomienda hacerlo
F npuede
o
as porque especifica de forma clara el siglo y no depende de la lgica de formato RR interna de la
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de un Script
(&department_id, '&department_name',&location);
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de un Script
le
N
b
a
O
I
Puede guardarC
comandos
con
er variables de sustitucin en un archivo y ejecutar los comandos en el
f
s
A
archivo. En
rande la diapositiva se registra informacin sobre un departamento de la tabla
ND elnejemplo
t
DEPARTMENTS.
U
F
o
Ejecute elnscript y se le solicitar una entrada para cada una de las variables de sustitucin (&).
Despus de introducir un valor para la variable de sustitucin, haga clic en el botn OK. Los valores
que introduce el usuario son los que se sustituyen en la sentencia. Esto permite ejecutar el mismo
script una y otra vez, pero proporcionar un juego de valores diferente cada vez que lo ejecute.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Copia de Filas
de Otra Tabla
a
s
a
)h
g
r
Inserta todas las filas devueltas por la subconsultaaen
o la e
s
tabla, sales_reps.
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Copia de Filas de Otra Tabla le
Puede utilizar la sentencia
rab para agregar filas a la tabla en la que se derivan los valores de
ION feINSERT
C
A aEn
las tablasD
existentes.
nsel ejemplo de la diapositiva, para que la sentencia INSERT INTO funcione,
r
N
t
- antes la tabla sales_reps mediante la sentencia CREATE TABLE. CREATE
debeUhaber creado
n
F
o
n
TABLE se trata en la leccin titulada Uso de Sentencias DDL para Crear y Gestionar Tablas.
En lugar de la clusula VALUES, utilice una subconsulta.
Sintaxis
INSERT INTO table [ column (, column) ] subquery;
En la sintaxis:
table
es el nombre de la tabla.
column
es el nombre de la columna de la tabla que se debe rellenar.
subquery
es la subconsulta que devuelve filas a la tabla.
El nmero de columnas y sus tipos de dato de la lista de columnas de la clusula INSERT deben
coincidir con el nmero de valores y sus tipos de dato en la subconsulta. Se agregan cero o ms filas
en funcin del nmero de filas devueltas por la subconsulta. Para crear una copia de la filas de una
tabla, utilice SELECT * en la subconsulta:
INSERT INTO copy_emp
SELECT *
FROM
employees;
Oracle Database: Conceptos Fundamentales de SQL I 9-12
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
has
e
a
s
Consistencia de lectura
de Guid
y
o
r
t
Clusula FOR UPDATE en una sentencia p
SELECT
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Cambio de Datos en la Tabla le
bde nmero de departamento para los empleados del departamento 60
a
r
IONel cambio
La diapositivaC
ilustra
e
A 80.ansf
al departamento
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
table
column = value [, column = value, ...]
condition];
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Sintaxis de SentenciasP
UPDATE
N rexistentes
bl en una tabla mediante la sentencia UPDATE.
a
O
Puede modificar Ilos
valores
AC ansfe
D
En la sintaxis:
UN on-tr es el nombre de la tabla.
Ftable
n
column
es el nombre de la columna de la tabla que se debe rellenar.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
UPDATE
copy_emp
r
o e
a
SET
department_id = 110;
s
de Guid
y
o
pr ent
@
d
Especificar SET column_name= NULL
un
on para
tuactualizar
i
S
c
a his
valor de columna a NULL.
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Actualizacin de Filas en una lTabla
e
N
b
a
O
La sentencia UPDATE
modifica
valores de una fila o varias filas especficas si se especifica la
erde lalosdiapositiva
CIEl ejemplo
f
s
A
clusula WHERE.
muestra la transferencia del empleado 113 (Popp) al
D tran
N
departamento
FU non50.Si omite la clusula WHERE, se modifican todas las filas de la tabla. Examine las filas actualizadas en
la tabla COPY_EMP.
SELECT last_name, department_id
FROM
copy_emp;
Por ejemplo, un empleado que era SA_REP ahora ha cambiado su puesto a IT_PROG. Por lo tanto,
se debe actualizar su JOB_ID y el campo de comisiones se debe definir en NULL.
UPDATE employees
SET job_id = 'IT_PROG', commission_pct = NULL
WHERE employee_id = 114;
Nota: la tabla COPY_EMP tiene los mismos datos que la tabla EMPLOYEES.
Oracle Database: Conceptos Fundamentales de SQL I 9-16
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
job_id
employees
employee_id = 205),
salary
employees
employee_id = 205)
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Actualizacin de Dos Columnas
le con una Subconsulta
N
b
a
O
Puede actualizar Ivarias columnas
er en la clusula SET de una sentencia UPDATE mediante la escritura
C
f
s
A
de variasD
an La sintaxis es la siguiente:
r
N subconsultas.
t
UPDATE
table
U
FSET noncolumn =
(SELECT
[ ,
column
[WHERE
column
FROM table
WHERE condition)
=
(SELECT
column
FROM table
WHERE condition)]
condition ] ;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
copy_emp
department_id
WHERE
job_id
(SELECT department_id
FROM employees
WHERE
employee_id = 100)
(SELECT job_id
FROM employees
WHERE employee_id = 200);
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Actualizacin de Filas Basadale
en Otra Tabla
N
b
a
O
Puede utilizar lasIsubconsultas
UPDATE para actualizar las filas de una tabla. El ejemplo de la
C nla stabla
ferCOPY_EMP
A
diapositiva
actualiza
segn los valores de la tabla EMPLOYEES. Cambia el
D tra
N
nmero
de todos los empleados con el ID de cargo del empleado 200 al nmero de
U de departamento
nF
o
n
departamento actual del empleado 100.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
has
e
a
s
Consistencia de lectura
de Guid
y
o
r
t
Clusula FOR UPDATE en una sentencia p
SELECT
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Eliminacin de Filas de Tablasle
N rasebha eliminado de la tabla DEPARTMENTS (siempre que no haya
Ocontratos
El departamento Ide
C
feen la tabla DEPARTMENTS), como se muestra en el grfico de la
s
A restriccin
violado ninguna
n
D
N n-tra
diapositiva.
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Sentencia DELETE
Puede eliminar filas existentes de una tabla mediante la
sentencia DELETE:
DELETE [FROM]
[WHERE
table
condition];
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Sintaxis de SentenciasP
DELETE
N radebluna tabla mediante la sentencia DELETE.
O
Puede eliminar filas
existentes
I
AC ansfe
D
En la sintaxis:
UN on-tr es el nombre de la tabla.
Ftable
n
condition
identifica las filas que se deben suprimir y se compone de nombres de columna,
expresiones, constantes, subconsultas y operadores de comparacin.
Nota: si no se suprime ninguna fila, se devuelve el mensaje 0 rows deleted (en el separador Script
Output de SQL Developer)
Para obtener ms informacin, consulte la seccin sobre DELETE en Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la base de datos 10g
u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
DELETE FROM copy_emp;
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Supresin de Filas de Tablas le
N ramediante
b
Puede suprimir filas
la especificacin de la clusula WHERE en la sentencia
IOconcretas
e
C
f
sejemplo de la diapositiva se suprime el departamento Accounting de la tabla
Ael primer
DELETE.D
En
nconfirmar
a
r
N
t
DEPARTMENTS.
Para
la operacin de supresin, visualice las filas suprimidas con la
U
n
F
o
sentencian
SELECT.
SELECT *
FROM
WHERE
departments
department_name = 'Finance';
Si omite la clusula WHERE, se suprimen todas las filas de la tabla. En el segundo ejemplo de la
diapositiva se suprimen todas las filas de la tabla COPY_EMP, porque no se ha especificado ninguna
clusula WHERE.
Ejemplo:
Se eliminan las filas identificadas en la clusula WHERE.
DELETE FROM
DELETE FROM
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Supresin de Filas Basada en lOtra
e Tabla
N
b
a
O
r suprimir filas de una tabla segn los valores de otra tabla. En el
I
Puede utilizar C
subconsultas
epara
f
s
A
ejemplo de
suprimen todos los empleados de un departamento, donde el nombre del
rande lasecadena
NDlandiapositiva
t
departamento
consta
Public.
U
F no
La subconsulta busca en la tabla DEPARTMENTS el nmero de departamento segn el nombre de
departamento que contenga la cadena Public. A continuacin, la subconsulta introduce el nmero
de departamento en la consulta principal, con lo que se suprimen las filas de datos de la tabla
EMPLOYEES en base a este nmero de departamento.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Sentencia TRUNCATE
a
s
a
)h
g
TRUNCATE TABLE copy_emp;
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Sentencia TRUNCATE PR le li
Una forma ms eficaz
rabuna tabla es con la sentencia TRUNCATE.
IONdefvaciar
e
C
Puede utilizar
ns TRUNCATE para eliminar fcilmente todas las filas de una tabla o un
DA la tsentencia
a
r
N
cluster.
de filas con las sentencia TRUNCATE es ms rpida que la eliminacin con la
U La eliminacin
n
F
o
n
sentencia DELETE por las siguientes razones:
Ejemplo:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
has
e
a
s
Consistencia de lectura
de Guid
y
o
r
t
Clusula FOR UPDATE en una sentencia p
SELECT
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Transacciones de Base de Datos
le
N
b
a
O
I garantiza
El servidor de C
Oracle
er la consistencia de los datos basada en transacciones. Las
f
s
A
transacciones
n ms flexibilidad y control al cambiar los datos y garantizan la
radatos
ND denproporcionan
t
consistencia
los
en caso de fallo de proceso de usuario o del sistema.
U
F no
Las transacciones constan de sentencias DML que suponen un cambio en los datos. Por ejemplo, una
transferencia de fondos entre dos cuentas debe incluir un dbito en una cuenta y un crdito en otra
por la misma cantidad. Ambas acciones deben ser correctas o incorrectas por igual; el crdito no se
debe confirmar sin el dbito.
Tipos de Transaccin
Tipo
Descripcin
Lenguaje de manipulacin
de datos (DML)
Lenguaje de definicin de
datos (DDL)
Lenguaje de control de
datos (DCL)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Transaccin de la Base de Datos:
le Inicio y Fin
N
b
a
O
Cundo se inicia
eruna transaccin de la base de datos?
CI y termina
f
s
A
D tempieza
Una transaccin
an cuando se encuentra la primera sentencia DML y termina cuando se
r
N
U
produce
siguientes condiciones:
F una
nodenunalassentencia
Se emite
COMMIT o ROLLBACK.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Garantizar la consistencia
Visualizar una presentacin preliminar de los cambios de
los datos antes de hacerlos permanentes
Agrupar componentes relacionados de forma lgica
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ceROLLBACK
i
RO
l
Ventajas de las Sentencias
COMMITy
P
le
N
b
a
O
Con las sentencias
I COMMIT
ery ROLLBACK, puede controlar cundo hacer permanentes los cambios
C
f
s
A
realizadosDa los datos.
N n-tran
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
COMMIT
Transaccin
DELETE
SAVEPOINT A
INSERT
s
a
h
UPDATE
rg)
o
sa ide
e
SAVEPOINT B
d
roy nt Gu
p
INSERT
n@ tude ROLLBACK
ROLLBACK
ROLLBACK
o
i
c is S A
to SAVEPOINT d
B a to SAVEPOINT
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Sentencias de Control de Transacciones
Explcitas
le
N
b
a
O
Puede controlar laI lgica de
C nsferlas transacciones mediante las sentencias COMMIT, SAVEPOINT y
A
ROLLBACK.
D tra
N
U
Descripcin
FSentencia
onn
COMMIT
COMMIT finaliza la transaccin actual convirtiendo todos los
SAVEPOINT name
ROLLBACK
ROLLBACK TO
SAVEPOINT name
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Rollback de los Cambios de un
leMarcador
N
b
a
O
Puede crear un marcador
en
I
erla transaccin actual mediante la sentencia SAVEPOINT, que divide la
C
f
s
A
transaccin
pequeas. Puede descartar los cambios pendientes hasta dicho
ran ms
NDconennlasecciones
t
marcador
sentencia
ROLLBACK TO SAVEPOINT.
U
F
o
Si crea unnsegundo punto de grabacin con el mismo nombre que un punto de grabacin anterior,
ste se suprime.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Procesamiento de Transacciones
le Implcitas
N
b
a
O
r
I
eCircumstances
f
Estado AC
s
ND n-tran Se emite una sentencia DDL o DCL, se sale normalmente de
Confirmacin
U
Fautomtica
SQL*Plus sin emitir explcitamente los comandos COMMIT
no
Rollback automtico
o ROLLBACK
Terminacin anormal de SQL Developer o SQL*Plus o fallo
del sistema
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Procesamiento de Transacciones Implcitas (continuacin)
Fallos del Sistema
Cuando se interrumpe una transaccin debido a un fallo del sistema, se realiza un rollback
automtico de toda la transaccin. Esto impide que el error provoque cambios no deseados en los
datos y que devuelva las tablas a su estado en el momento de la ltima confirmacin. De esta forma,
el servidor de Oracle protege la integridad de las tablas.
En SQL Developer, la salida normal de la sesin se realiza seleccionando Exit en el men File. Con
SQL*Plus, la salida normal se realiza introduciendo el comando EXIT en el smbolo del sistema. Si
se cierra la ventana, se interpreta como una salida anormal.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice o ROLLBACK
ROde eCOMMIT
l
Estado de los Datos antes
P
Ndatos rrealizados
bl durante la transaccin son temporales hasta que se confirma la
a
O
I
Todos los cambios
de
AC ansfe
transaccin.
D
tr antes de emitir las sentencias COMMIT o ROLLBACK se describe a
-datos
UN deolos
ElFestado
n
n
continuacin:
Las operaciones de manipulacin de datos afectan principalmente al buffer de la base de datos y,
por lo tanto, se puede recuperar el estado anterior de los datos.
El usuario actual puede revisar los resultados de las operaciones de manipulacin de datos
mediante la consulta de las tablas.
Los dems usuarios no pueden ver los resultados de las operaciones de manipulacin realizadas
por el usuario actual. El servidor de Oracle establece la consistencia de lectura para garantizar
que todos los usuarios ven los datos tal y como estaban en el momento de la ltima
confirmacin.
Las filas afectadas estn bloqueadas; otros usuarios no pueden cambiar los datos de las filas
afectadas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
RO dee COMMIT
l
Estado de los Datos despus
P
l
N rabpendientes
O
Para convertir todos
los cambios
en permanentes, utilice la sentencia COMMIT. A
I
eque ocurre despus
Cmuestra
f
s
A
continuacin,
se
lo
de ejecutar una sentencia COMMIT:
D tran
N
cambios
n- de datos se escriben en la base de datos.
F ULos
o
n
El estado anterior de los datos ya no est disponible con las consultas SQL normales.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Confirmacin de Datos
s
a
h
COMMIT;
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Confirmacin de Datos
le
N
b
a
O
En el ejemplo de Ila diapositiva,
suprime una fila de la tabla EMPLOYEES y se inserta una nueva
C nsferLossecambios
A
en la tabla
DEPARTMENTS.
se guardan emitiendo la sentencia COMMIT.
D tra
N
Ejemplo:
FU nonElimine los departamentos 290 y 300 de la tabla DEPARTMENTS y actualice una fila en la tabla
EMPLOYEES. Guarde el cambio de datos.
DELETE FROM departments
WHERE
department_id IN (290, 300);
UPDATE employees
SET
department_id = 80
WHERE employee_id = 206;
COMMIT;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
RO dee ROLLBACK
l
Estado de los Datos despus
P
l
N rabpendientes,
O
Para descartar todos
los cambios
utilice la sentencia ROLLBACK obteniendo los
I
e
C
f
s
A
siguientesDresultados:
ancambios de datos.
r
Ndeshacen
t
Se
los
U
F Se restaura
non el estado anterior de los datos.
Se liberan los bloqueos de las filas afectadas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
id = 100;
s
a
h
rg)
o
sa ide
e
d
COMMIT;
y t Gu
o
r
p
Commit complete.
en
@
d
n
u
t
io
S
c
a
s
i
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ice
RO dee ROLLBACK:
l
Estado de los Datos despus
Ejemplo
P
l
N
b
Al intentar eliminar
ra de la tabla TEST, puede borrar accidentalmente la tabla. Puede
IOun registro
e
C
f
A volver
corregir el
nsa emitir la sentencia correcta y hacer permanentes los cambios de datos.
Derror,
a
r
N
t
FU nonSELECT * FROM
test WHERE
No rows selected.
id = 100;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Rollback a Nivel de Sentenciasle
N de una
btransaccin mediante un rollback implcito si se detecta un error de
a
r
IOparte
Se puede desechar
e
C
sSif falla una nica sentencia DML durante la ejecucin de una transaccin, su
ejecucinD
deAsentencia.
n
a
-trmediante un rollback a nivel de sentencia, pero los cambios realizados por las
efecto
se deshace
UN
n
F
o
sentenciasnDML anteriores en la transaccin no se desechan. El usuario los puede omitir o realizar un
rollback explcito.
El servidor de Oracle emite una confirmacin implcita antes y despus de cualquier sentencia DDL.
Por lo tanto, si la sentencia DDL no se ejecuta correctamente, no podr realizar rollback de la
sentencia anterior porque el servidor ha emitido una confirmacin.
El usuario debe terminar las transacciones explcitamente con la ejecucin de una sentencia COMMIT
o ROLLBACK.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
has
e
a
s
Consistencia de lectura
de Guid
y
o
r
t
Clusula FOR UPDATE en una sentencia p
SELECT
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Consistencia de Lectura
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Consistencia de Lectura
le
N
b
a
O
r pueden acceder a la base de datos de dos formas:
Los usuarios de
dee
datos
ClaIdebase
f
s
A
Operaciones
lectura
D tran (sentencia SELECT)
N
n- de escritura (sentencias INSERT, UPDATE, DELETE)
F UOperaciones
o
n
La consistencia de lectura es necesaria para lo siguiente:
Que el lector y el escritor de la base de datos tengan garantizada una vista consistente de los
datos.
Que los lectores no visualicen datos en proceso de cambio.
Que los escritores tengan garantizado que los cambios en la base de datos se realizarn de forma
consistente.
Los cambios realizados por un escritor no entran en conflicto con los cambios realizados por
otro escritor.
El objetivo de la consistencia es garantizar que todos los usuarios vean los datos como existan en el
momento de la confirmacin, antes de iniciar una operacin DML.
Nota: el mismo usuario se puede conectar a diferentes sesiones. Cada sesin mantiene la consistencia
de lectura tal y como se describe anteriormente, incluso si son los mismos usuarios.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Usuario A
UPDATE employees
SET
salary = 7000
WHERE last_name = 'Grant';
Bloques
de Datos
Segmentos
de deshacer
a
s
a
SELECT *
)h
g
r
Imagen
FROM userA.employees;
o e
a
de lectura
s
id
de Antes
del
consistente
u
y
G
o
(datos
pr entcambio
@
antiguos)
Usuario B
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Implementacin de Consistencia
le de Lectura
N
b
a
O
runa implantacin automtica. Mantiene una copia parcial de la base de
La consistencia de
eesdeshacer.
CI lectura
f
s
A
datos en los
segmentos
de
La imagen de lectura consistente se crea a partir de los datos
n
D
a
r
N
t
confirmados
de-la tabla y de los datos antiguos que se van a cambiar y que an no se han confirmado
FU
del
segmento
nonde deshacer.
Datos
cambiados
y sin modificar
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
has
e
a
s
Consistencia de lectura
de Guid
y
o
r
t
Clusula FOR UPDATE en una sentencia p
SELECT
n
e
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
El bloqueo slo se libera si emite ROLLBACK o COMMIT.
a
h
)
Si la sentencia SELECT intenta bloquear una fila org
sa a ique
e
bloqueada por otro usuario, la base de datos espera
e
d
d
roy ntlosGu
la fila est disponible y, a continuacin, devuelve
p
resultados de la sentencia SELECT.on@ tude
i
S
c
a
s
i
d
h
fun se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
Clusula FOR UPDATE P
enR
una lSentencia
SELECT
e
N
b
O sentencia
Cuando se emite Iuna
raSELECT en la base de datos para consultar algunos registros, no se
e
C
f
coloca ningn
nsen las filas seleccionadas. En general, se debe a que el nmero de registros
DA bloqueo
a
r
N
t
bloqueados
U oennun- momento determinado se mantiene (por defecto) en el mnimo absoluto: slo se
F
bloqueann
aquellos registros que se han cambiado, pero que an no se han confirmado. An as, otros
usuarios podrn leer dichos registros tal y como aparecan antes del cambio (la imagen anterior de
los datos). Hay ocasiones, sin embargo, en las que puede que desee bloquear un juego de registros
incluso antes de cambiarlos en el programa. Oracle ofrece la clusula FOR UPDATE de la sentencia
SELECT para realizar este bloqueo.
Cuando emite una sentencia SELECT...FOR UPDATE, el sistema de gestin de bases de datos
relacionales (RDBMS) obtiene automticamente los bloqueos a nivel de fila exclusivos de todas las
filas identificadas por la sentencia SELECT, reteniendo as los registros slo para sus cambios.
Nadie ms podr cambiar ninguno de estos registros hasta que realice una operacin ROLLBACK o
COMMIT.
Puede adjuntar la palabra clave opcional NOWAIT a la clusula FOR UPDATE para indicar al
servidor de Oracle que no espere si otro usuario ha bloqueado la tabla. En este caso, el control
volver inmediatamente al programa o al entorno de SQL Developer para que pueda realizar otro
trabajo o simplemente esperar un perodo de tiempo antes de volver a intentarlo. Sin la clusula
NOWAIT, el proceso se bloquear hasta que la tabla est disponible, cuando otro usuario libere los
bloqueos a travs de la emisin un comando COMMIT o ROLLBACK.
Oracle Database: Conceptos Fundamentales de SQL I 9-43
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
h
rg)
Las filas de las tablas EMPLOYEES y DEPARTMENTSo
estn
sa ide
bloqueadas.
e
d
u
G
roycualificar
t
Utilizar FOR UPDATE OF column_name para
la
p
n
e
@
d
n
columna que desea cambiar, de c
modo
tuslo se
io que
S
a
is
despecfica.
bloqueen las filas de esa tabla
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
Clusula FOR UPDATE:P
Ejemplos
le
N
b
a
O
En el ejemplo de Ila diapositiva,
r la sentencia bloquea las filas de la tabla EMPLOYEES con JOB_ID
C nsyfeLOCATION_ID
A
definido en
ST_CLERK
definido en 1500 y bloquea las filas de la tabla
D tra
N
DEPARTMENTS
FU non- con los departamentos de LOCATION_ID definidos en 1500.
Puede utilizar FOR UPDATE OF column_name para cualificar la columna que desea cambiar. La lista
OF de la clusula FOR UPDATE no limita el cambio slo a aquellas columnas de las filas
seleccionadas. An se mantienen los bloqueos en todas las filas; si simplemente declara FOR
UPDATE en la consulta y no incluye una o ms columnas despus de la palabra clave OF, la base de
datos bloquear todas las filas identificadas en todas las tablas incluidas en la clusula FROM.
La siguiente sentencia slo bloquea las filas de la tabla EMPLOYEES con ST_CLERK ubicado en
LOCATION_ID 1500. No se bloquea ninguna fila en la tabla DEPARTMENTS:
SELECT e.employee_id, e.salary, e.commission_pct
FROM employees e JOIN departments d
USING (department_id)
WHERE job_id = 'ST_CLERK' AND location_id = 1500
FOR UPDATE OF e.salary
ORDER BY e.employee_id;
Fundacin Proydesa
Clusula FOR UPDATE: Ejemplos (continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
En el siguiente ejemplo, se indica a la base de datos que espere cinco segundos hasta que la fila est
disponible y, a continuacin, se devuelve el control al usuario.
SELECT employee_id, salary, commission_pct, job_id
FROM employees
WHERE job_id = 'SA_REP'
FOR UPDATE WAIT 5
ORDER BY employee_id;
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Las siguientes sentencias producen los mismos resultados:
DELETE FROM copy_emp;
TRUNCATE TABLE copy_emp;
1. Verdadero
2. Falso
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 2
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin debe haber aprendido a utilizar las siguientes
sentencias:
Funcin
Descripcin
INSERT
UPDATE
DELETE
TRUNCATE
a
s
a
)h
SAVEPOINT
g
r
o e
a
s
de Guid
ROLLBACK
y
Descarta todos los cambios de datos pendientes.
o
t
pr eSELECT.
n
@
Bloquea las filas identificadas n
por
la consulta
Clusula FOR
o
tud
i
S
UPDATE en SELECT
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r
I haber
En esta leccin,
debe
a manipular datos en Oracle Database mediante las sentencias
eaprendido
f
s
AC aDELETE
INSERT,D
UPDATE,
y
TRUNCATE,
as como a controlar los cambios de datos mediante las
n
r
N
t
- SAVEPOINT y ROLLBACK. Tambin ha aprendido a utilizar la clusula FOR
sentencias
U COMMIT,
n
F
o
n
UPDATE de la sentencia SELECT para bloquear filas slo para sus cambios.
COMMIT
Recuerde que el servidor de Oracle garantiza una vista consistente de los datos en todo momento.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 9: Visin General
le
N
b
a
O
En esta prctica, Iagregar e
r a la tabla MY_EMPLOYEE, actualizar y suprimir datos de la tabla y
C nsf filas
Atransacciones.
controlarDlas
Ejecute un script para crear la tabla MY_EMPLOYEE.
a
r
N
t
FU non-
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Clasificar los principales objetos de base de datos
Revisar la estructura de la tabla
Mostrar los tipos de dato disponibles para columnas
Crear una tabla simple
Explicar cmo crear restricciones en el momento de la
creacin de la tabla
)
Describir el funcionamiento de los objetos de esquema
org
a
s
a
h
e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
I ofrecefuna
En esta leccin,
se
er introduccin a las sentencias de lenguaje de definicin de datos (DDL).
C
s
A
Aprender
crear tablas simples, modificarlas y eliminarlas. Se muestran los
Dlos fundamentos
an en para
r
Ndato
t
tipos
de
disponibles
DDL
y se ofrece una introduccin sobre los conceptos de esquema. Las
U
n
F
o
n
restricciones se tratarn en esta leccin. Se muestran y explican los mensajes de excepcin generados
por las restricciones de violacin durante las operaciones DML.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una tabla mediante una subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objeto
Descripcin
Tabla
Vista
Secuencia
ndice
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetos de Base de Datos
le
N
b
a
O
Ipuede contener
Oracle Database
er varias estructuras de datos. Cada estructura se debe describir en el
C
f
s
A
diseo deD
la base deadatos
n para que se pueda crear durante la fase de creacin del desarrollo de la
r
Ndatos.
t
base
de
U
n
F Tabla:
noalmacena
datos.
Sinnimo
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Reglas de Nomenclatura
Los nombres de tabla y de columna deben:
Empezar por una letra
Tener entre 1 y 30 caracteres
Contener slo AZ, az, 09, _, $ y #
No deben ser un duplicado de otro nombre de objeto
propiedad del mismo usuario
No debe ser una palabra reservada del servidor de Oracle
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Reglas de Nomenclatura
le
N
b
a
O
r de datos se deben nombrar segn las reglas estndar de
I deflaebase
Las tablas y columnas
C
s
A
nomenclatura
de objetos
Database:
antabladeyOracle
r
ND
t
Los
nombres
de
de
columna
deben comenzar por una letra y tener entre 1 y 30 caracteres.
U
F Los nombres
non slo deben contener los caracteres AZ, az, 09, _ (subrayado), $ y # (caracteres
vlidos, pero cuyo uso no es aconsejable).
Los nombres no deben ser un duplicado de otro nombre de objeto propiedad del mismo usuario
del servidor de Oracle.
Los nombres no deben ser una palabra reservada del servidor de Oracle.
- Puede utilizar identificadores entre comillas para representar el nombre de un objeto. Un
identificador entre comillas empieza y finaliza con comillas dobles (""). Si asigna un
nombre a un objeto de esquema mediante un identificador entre comillas, debe utilizar las
comillas dobles cuando haga referencia a dicho objeto. Los identificadores entre comillas
pueden ser palabras reservadas, aunque no se recomienda.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Reglas de Nomenclatura (continuacin)
Directrices de Nomenclatura
Utilice nombres descriptivos para las tablas y otros objetos de la base de datos.
Nota: los nombres no son sensibles a maysculas/minsculas. Por ejemplo, EMPLOYEES se
considera el mismo nombre que eMPloyees o eMpLOYEES. Sin embargo, los identificadores entre
comillas son sensibles a maysculas/minsculas.
Para obtener ms informacin, consulte la seccin sobre nombres de objeto de esquema y
cualificadores en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de
Oracle Database) para la base de datos 10g u 11g.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una tabla mediante una subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Debe tener:
El privilegio CREATE TABLE
Un rea de almacenamiento
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
Debe especificar:
El nombre de tabla
El nombre de columna, tipo de dato de columna y tamao de s
columna
) ha
rg
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Sentencia CREATE TABLE
P
N rabl datos ejecutando la sentencia SQL CREATE TABLE. Esta
O
Puede crear tablas
para almacenar
I
C nssentencias
fe DDL, que son un subjuego de sentencias SQL que se utilizan para
sentenciaD
esA
una dealas
N n-otreliminar estructuras de Oracle Database. Estas sentencias tienen un efecto
crear,
Umodificar
F
o la base de datos y registran informacin en el diccionario de datos.
inmediatonen
Para crear una tabla, un usuario debe tener el privilegio CREATE TABLE y un rea de
almacenamiento en la que crear los objetos. El administrador de la base de datos (DBA) utiliza
sentencias de lenguaje de control de datos (DCL) para otorgar privilegios a los usuarios.
En la sintaxis:
schema
es el mismo nombre que el del propietario
table
es el nombre de la tabla
DEFAULT expr
especifica un valor por defecto si se omite un valor en la sentencia
INSERT
column
es el nombre de la columna
datatype
es el tipo de dato y la longitud de la columna
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
USERA
USERB
a
s
de Guid
y
SELECT *
SELECT *
o
pr ent
FROM userB.employees;
FROM userA.employees;
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Referencia a Tablas de Otro Usuario
le
N
b
a
O
I recopilacin
Un esquema esCuna
er de estructuras lgicas de datos u objetos de esquema. Un esquema
f
s
A
es propiedad
un a
usuario
n de base de datos y tiene el mismo nombre que el usuario. Cada usuario es
r
NDdede
t
propietario
un
nico
esquema.
U
F non
Los objetos de esquema se pueden crear y manipular con SQL e incluyen tablas, vistas, sinnimos,
secuencias, procedimientos almacenados, ndices, clusters y enlaces de base de datos.
Si una tabla no pertenece al usuario, el nombre del propietario se debe anteponer a la tabla. Por
ejemplo, dados los esquemas USERA y USERB y ambos contienen la tabla EMPLOYEES, si USERA
desea acceder a la tabla EMPLOYEES que pertenece a USERB, USERA debe anteponer el nombre del
esquema al nombre de la tabla:
SELECT *
FROM
userb.employees;
Si USERB desea acceder a la tabla EMPLOYEES propiedad de USERA, USERB debe anteponer el
nombre del esquema al nombre de la tabla:
SELECT *
FROM
usera.employees;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Opcin DEFAULT
a
s
a
)h
g
r
o e
a
s
CREATE TABLE hire_dates
de Guid
y
o
(id
NUMBER(8),
pr ent
@
hire_date DATE DEFAULT SYSDATE);
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Opcin DEFAULT
P
N especificar
bl que se proporcione un valor por defecto a una columna
a
r
IOpuede
Al definir una C
tabla,
fe Esta opcin evita que se introduzcan valores nulos en las columnas si
s
medianteD
la A
opcin DEFAULT.
n
a un valor para la columna. El valor por defecto puede ser un literal, una
trsin
seFinserta
fila
UN una
n
expresinnoouna funcin SQL (como SYSDATE o USER), pero el valor no puede ser el nombre de
otra columna o una pseudocolumna (como NEXTVAL o CURRVAL). La expresin por defecto debe
coincidir con el tipo de dato de la columna.
Considere los siguientes ejemplos:
INSERT INTO hire_dates values(45, NULL);
La sentencia anterior insertar el valor nulo en lugar del valor por defecto.
INSERT INTO hire_dates(id) values(35);
La sentencia anterior insertar SYSDATE para la columna HIRE_DATE.
Nota:en SQL Developer, haga clic en el icono Run Script o pulse [F5] para ejecutar las sentencias
DDL. Los comentarios se mostrarn en la pgina con separadores Script Output.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de Tablas
NUMBER(2),
VARCHAR2(14),
VARCHAR2(13),
DATE DEFAULT SYSDATE);
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Tablas
le
N
b
a
O
El ejemplo de la Idiapositiva
la tabla DEPT, con cuatro columnas: DEPTNO, DNAME, LOC y
C La n
fercrea
s
A
CREATE_DATE.
columna
CREATE_DATE
tiene un valor por defecto. Si no se proporciona
D tra
N
ningn
para
n- una sentencia INSERT, se inserta automticamente la fecha del sistema.
FU valor
o
n
Para confirmar que se ha creado la tabla, ejecute el comando DESCRIBE.
DESCRIBE dept
Puesto que la creacin de una tabla constituye una sentencia DDL, se realiza una confirmacin
automtica al ejecutar esta sentencia.
Nota: puede ver la lista de las tablas que posee consultando el diccionario de datos. Por ejemplo:
select table_name from user_tables
Mediante las vista de diccionario de datos, puede obtener informacin sobre otros objetos de base de
datos como vistas, ndices, etc. Los diccionarios de datos se explican en detalle en el curso Oracle
Database: Conceptos Fundamentales de SQL II.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una tabla mediante una subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Tipos de Dato
Tipo de Dato
Descripcin
NUMBER(p,s)
DATE
LONG
CLOB
s
a
h
g)
r
o
BLOB
Datos binarios (hasta 4 GB)
sa ide
e
d
BFILE
Datos binarios almacenados en un archivo externo
Gu4 GB)
roy nt(hasta
p
ROWID
Sistema numrico de base -64 que @
dlae direccin nica
n representa
u
o
t
i
de una fila en su tabla correspondiente.
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tipos de Dato
le
N
b
a
O
r una tabla, debe proporcionar un tipo de dato para la columna. Hay
I columnafepara
Al identificar una
C
s
A
varios tipos
n
radisponibles:
ND dendato
t
U
FTipo denDato
Descripcin
o
RAW and LONG
RAW
VARCHAR2(size)
CHAR [(size)]
NUMBER [(p,s)]
DATE
LONG
CLOB
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Descripcin
RAW(size)
LONG RAW
BLOB
BFILE
ROWID
Instrucciones
Las columnas LONG no se copian al crear una tabla mediante una subconsulta.
Las columnas LONG no se pueden incluir en una clusula GROUP BYu ORDER BY.
Slo se puede utilizar una columna LONG por tabla.
No se pueden definir restricciones en las columnas LONG.
Puede que desee utilizar una columna CLOB en lugar de una columna LONG.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Descripcin
TIMESTAMP
INTERVAL YEAR TO
MONTH
INTERVAL DAY TO
SECOND
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tipos de Dato de Fecha y Horale
N rDescripcin
b
a
Tipo de Dato IO
e
C
A ansf Permite almacenar los datos de tiempo como fecha con segundos
TIMESTAMP
D
r
N
fraccionarios. Almacena los valores de ao, mes, da, hora, y segundos
FU non-t
del tipo de dato DATE, as como el valor para segundos fraccionarios.
INTERVAL YEAR TO
MONTH
INTERVAL DAY TO
SECOND
Nota: estos tipos de dato de fecha y hora estn disponibles con las versiones Oracle9i y posteriores.
Los tipos de dato de fecha y hora se tratan ms detalladamente en la leccin sobre gestin de datos
situados en distintas zonas horarias del curso Oracle Database: Conceptos Fundamentales de
SQL II.
Adems, para obtener ms informacin sobre los tipos de dato de fecha y hora, consulte las secciones
sobre tipo de de dato TIMESTAMP, tipo de dato INTERVAL YEAR TO MONTH y tipo de dato
INTERVAL DAY TO SECOND en Oracle Database SQL Language Reference (Referencia sobre
Lenguaje SQL de Oracle Database) para la base de datos 10g u 11g.
Oracle Database: Conceptos Fundamentales de SQL I 10-15
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una Tabla mediante una Subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Inclusin de Restricciones
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Restricciones
le
N
b
a
O
I utiliza
El servidor de C
Oracle
errestricciones para evitar la introduccin de datos no vlidos en las tablas.
f
s
A
Puede utilizar
D restricciones
an para realizar lo siguiente:
r
N
t
U
reglas a los datos de la tabla cuando se inserta, actualiza o suprime una fila de la misma.
F Aplicar
non se debe cumplir para que la operacin sea correcta.
La restriccin
Evitar la supresin de una tabla si hay dependencias de otras tablas.
Proporcionar reglas para las herramientas de Oracle, como Oracle Developer.
Restricciones de Integridad de Datos
Restriccin
Descripcin
Especifica que la columna no puede contener un valor nulo.
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Instrucciones de Restriccin
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Instrucciones de Restriccin le
rab en el diccionario de datos. Es fcil hacer referencia a las
IONsefe
Todas las restricciones
almacenan
C
restricciones
ns un nombre significativo. Los nombres de las restricciones deben seguir las
DAsi lestrasigna
a
N
reglas
de objetos estndar, excepto que el nombre no puede ser el mismo que el de
U de nomenclatura
nF
o
n
otro objeto propiedad del mismo usuario. Si no asigna ningn nombre a la restriccin, el servidor de
Oracle genera un nombre con el formato SYS_Cn, donde n es un entero para que el nombre de la
restriccin sea nico.
Las restricciones se pueden definir en el momento de la creacin de la tabla o despus de haberla
creado. Puede definir una restriccin a nivel de columna o de tabla. Funcionalmente, una restriccin
a nivel de tabla es la mismo que una restriccin a nivel de columna.
Para obtener ms informacin, consulte la seccin sobre funciones de restricciones en Oracle
Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la
base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Definicin de Restricciones
Sintaxis:
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
a
s
a
Sintaxis de restriccin a nivel de tabla:
)h
g
r
o e
a
columna,...
s
de Guid
[CONSTRAINT constraint_name] constraint_type
y
o
pr ent
(column, ...),
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Definicin de Restricciones le
N rabla sintaxis para la definicin de restricciones al crear una tabla.
Oproporciona
En la diapositiva Ise
C
fe a nivel de columna o de tabla. Las restricciones definidas a nivel de
s
Alas restricciones
Puede crear
n
D
ra al definir la columna. Las restricciones a nivel de tabla se definen al final de la
N se incluyen
t
columna
U
n
F ndeo tabla y debe hacer referencia a la columna o las columnas a las que pertenece la
definicin
restriccin en un juego de parntesis. Se trata principalmente de la sintaxis que diferencia a las dos;
de lo contrario, funcionalmente, una restriccin a nivel de columna es lo mismo que una restriccin a
nivel de tabla.
Las restricciones NOT NULL se deben definir a nivel de columna.
Las restricciones que se aplican a ms de una columna se deben definir a nivel de tabla.
En la sintaxis:
schema
es el mismo nombre que el del propietario
table
es el nombre de la tabla
DEFAULT expr
especifica un valor por defecto para utilizarlo si se omite un valor en
la sentencia INSERT
column
es el nombre de la columna
datatype
es el tipo de dato y la longitud de la columna
column_constraint es una restriccin de integridad como parte de la definicin de
columna
table_constraint es una restriccin de integridad como parte de la definicin de tabla
Oracle Database: Conceptos Fundamentales de SQL I 10-19
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Definicin de Restricciones
s
a
h
rg)
o
sa 2 ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Definicin de Restricciones (continuacin)
le
N
b
a
O
r
Ise creanfenormalmente
Las restricciones
al mismo tiempo que la tabla. Las restricciones se pueden
C
s
A
agregar aD
una tablaa
despus
n de su creacin y se pueden desactivar temporalmente.
r
N
t
U
Ambos
diapositiva crean una restriccin de clave primaria en la columna
F ejemplos
non dede lala tabla
EMPLOYEE_ID
EMPLOYEES.
1. En el primer ejemplo se utiliza la sintaxis de nivel de columna para definir la restriccin.
2. En el segundo ejemplo se utiliza la sintaxis de nivel de tabla para definir la restriccin.
Encontrar ms informacin sobre la restriccin de clave primaria ms adelante en esta leccin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
t
prNOT NULL
n
Ausencia de la restriccin
e
@
dun valor
Restriccin NOT NULL
n contener
u
(Cualquier fila ipuede
o
t
S
(La clave primaria aplica
c
NOT NULL nulo para esta
a columna.)
is
d
la restriccin NOT NULL.)
restriccin
h
n
t
u
f
(
se
u
A
Copyright 2010, Oracle
to Todos los derechos reservados.
ESy/o sussefiliales.
D
OY licen
R
Restriccin NOT NULL P
le
N
b
a
O
La restriccin NOT
NULL e
garantiza
que la columna no contiene ningn valor nulo. Las columnas sin
r
CI NULL
f
s
A
la restriccin
NOT
pueden
contener
valores nulos por defecto. Las restricciones NOT NULL se
D tran
N
deben
U definirona -nivel de columna. En la tabla EMPLOYEES, la columna EMPLOYEE_ID hereda una
F
nNOT NULL como se define en la clave primaria. De lo contrario, las columnas
restriccin
LAST_NAME, EMAIL, HIRE_DATE y JOB_ID tienen la restriccin NOT NULL aplicada.
Nota: la restriccin de clave primaria se trata con detalle ms adelante en esta misma leccin.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Restriccin UNIQUE
EMPLOYEES
Restriccin UNIQUE
a
s
a
)h
Permitido
g
r
o
No permitido: ya existesa
e uide
d
y
ro nt G
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O
ce
Restriccin UNIQUE PR le li
N radebclave UNIQUE necesita que todos los valores de una columna o
Una restriccin de
IOintegridad
C
sfesean nicos; es decir, que dos filas de una tabla no pueden tener valores
A a(clave)
juego de D
columnas
n
-trcolumna o juego de columnas concreto. La columna (o juego de columnas)
duplicados
UN oennuna
F
n la definicin de la restriccin de clave UNIQUE se denomina clave nica. Si la restriccin
incluida en
INSERT INTO
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Restriccin UNIQUE
Definida a nivel de tabla o de columna:
CREATE TABLE employees(
employee_id NUMBER(6),
last_name
VARCHAR2(25) NOT NULL,
email
VARCHAR2(25),
salary
NUMBER(8,2),
commission_pct
NUMBER(2,2),
hire_date
DATE NOT NULL,
...
CONSTRAINT emp_email_uk UNIQUE(email));
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Restriccin UNIQUE (continuacin)
P
l
N
bpueden
a
O
Las restricciones
UNIQUE
se
definir a nivel de tabla o de columna. Defina la restriccin a
r
I
e
C
f
s
A
nivel de tabla
desea
una clave nica compuesta. Una clave compuesta se define si no hay un
ancrear
rpueda
ND nsique
t
nico
atributo
identificar
de forma nica una fila. En ese caso, puede tener una clave nica
U
F
o
n
compuesta de dos o ms columnas, el valor combinado de ambas es siempre nico y puede
identificar filas.
En el ejemplo de la diapositiva se aplica la restriccin UNIQUE a la columna EMAIL de la tabla
EMPLOYEES. El nombre de la restriccin es EMP_EMAIL_UK.
Nota: el servidor de Oracle aplica la restriccin UNIQUE mediante la creacin implcita de un ndice
nico en la columna o columnas nicas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
DEPARTMENTS
PRIMARY KEY
a
s
a
INSERT INTO
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
No permitido
i
c
a his
(ya existen 50)
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Restriccin PRIMARY KEY
P
N KEYracrea
bl una clave primaria para la tabla. Slo se puede crear una clave
O
La restriccin PRIMARY
I
C tabla.
fLae restriccin PRIMARY KEY es una columna o juego de columnas que
s
Acada
primaria D
para
n
ranica cada fila de tabla. Esta restriccin aplica la unicidad de la columna o
N de forma
t
identifica
U
n
F no de columnas y garantiza que ninguna columna que forme parte de la clave contenga un
combinacin
No permitido
(valor nulo)
valor nulo.
Nota: puesto que la unicidad forma parte de la definicin de restriccin de clave primaria, el servidor
de Oracle aplica la unicidad mediante la creacin implcita de un ndice nico en la columna o
columnas de clave primaria.
Fundacin Proydesa
DEPARTMENTS
PRIMARY
KEY
EMPLOYEES
FOREIGN
KEY
s
a
h
rg)
o
sa ide
e
d
INSERT INTO
No
permitido
Gu
ro(9y nonexisten)
t
p
de
n@ tuPermitido
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Restriccin FOREIGN KEY
P
l
N KEYra(obintegridad
O
La restriccin FOREIGN
referencial) designa una columna o combinacin de
I
e
C
f
s
A
columnasD
clave
anajena y establece una relacin entre una clave primaria o nica en la misma
r
Nen como
t
tabla
o
otra
diferente.
U
F non
En el ejemplo
de la diapositiva, DEPARTMENT_ID se ha definido como clave ajena en la tabla
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R(continuacin)
Restriccin FOREIGN KEY
P
le
N
b
a
O
Las restricciones
I FOREIGN
er KEY se pueden definir a nivel de restriccin de columna o de tabla.
C
f
s
A
Las claves
se deben crear mediante la definicin a nivel de tabla.
Dajenastrcompuestas
an
N
U
En
de la diapositiva se define una restriccin FOREIGN KEY en la columna
Fel ejemplo
non de la tabla EMPLOYEES, mediante la sintaxis a nivel de tabla. El nombre de la
DEPARTMENT_ID
restriccin es EMP_DEPT_FK.
La clave ajena se puede definir tambin a nivel de columna, siempre que la restriccin est basada en
una sola columna. La sintaxis difiere en que las palabras clave FOREIGN KEY no aparecen. Por
ejemplo:
CREATE TABLE employees
(...
department_id NUMBER(4) CONSTRAINT emp_deptid_fk
REFERENCES departments(department_id),
...
)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
rg
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
RPalabras
Restriccin FOREIGN KEY:
P
e Clave
l
N
b
O enfelaratabla secundaria y la tabla que contiene la columna a la que se hace
La clave ajenaC
seIdefine
s
referenciaDesAla tabla
La clave ajena se define mediante una combinacin de las siguientes
nprincipal.
a
r
N
t
palabras
clave:
U
F FOREIGN
non KEY se utiliza para definir la columna en la tabla secundaria a nivel de restriccin de
tabla.
REFERENCES identifica la tabla y la columna en la tabla principal.
ON DELETE CASCADE indica que al suprimir una fila de la tabla principal, tambin se suprimen
las filas dependientes de la tabla secundaria.
ON DELETE SET NULL indica que al suprimir una fila de la tabla principal, los valores de clave
ajena se definen como nulos.
El comportamiento por defecto se denomina regla estricta, que no permite la actualizacin o
supresin de los datos a los que se hace referencia.
Sin las opciones ON DELETE CASCADE u ON DELETE SET NULL, la fila de la tabla principal no se
puede suprimir si hace referencia a la misma en la tabla secundaria.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Restriccin CHECK
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Restriccin CHECK
P
Ndefineraunablcondicin que debe cumplir cada fila. La condicin puede utilizar
O
La restriccin CHECK
I
AC ansfeque las condiciones de consulta, con las siguientes excepciones:
las mismas
construcciones
D
N n-tarlas pseudocolumnas CURRVAL, NEXTVAL, LEVEL y ROWNUM
F UReferencias
no a las funciones SYSDATE, UID, USER y USERENV
Llamadas
Consultas que hagan referencia a otros valores en otras filas
Una sola columna puede tener varias restricciones CHECK que hagan referencia a la columna en su
definicin. No hay ningn lmite en cuanto al nmero de restricciones CHECK que puede definir en
una columna.
Las restricciones CHECK se pueden definir a nivel de tabla o de columna.
CREATE TABLE employees
(...
salary NUMBER(8,2) CONSTRAINT emp_salary_min
CHECK (salary > 0),
...
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
REjemplo
Sentencia CREATE TABLE:
P
le
N
b
a
O
El ejemplo de la Idiapositiva
rmuestra la sentencia que se utiliza para crear la tabla EMPLOYEES en el
AC ansfe
esquema D
HR.
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Violacin de Restricciones
El departamento 55 no existe.
UPDATE employees
SET
department_id = 55
WHERE department_id = 110;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Violacin de Restricciones le
b
a
r
ION
Si tiene restricciones
en lugar
de columnas, recibir un error si intenta violar la regla de restriccin.
e
C
sf
Asi intenta
Por ejemplo,
actualizar
un registro con un valor ligado a una restriccin de integridad, se
n
D
a
r
N un error.
t
devuelve
U
F non
En el ejemplo
de la diapositiva, el departamento 55 no existe en la tabla principal, DEPARTMENTS y,
por lo tanto, recibir la violacin de clave principal no encontrada ORA-02291.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Violacin de Restricciones
No puede suprimir una fila que contenga una clave primaria
que se utilice como clave ajena en otra tabla.
DELETE FROM departments
WHERE department_id = 60;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Violacin de Restricciones (continuacin)
le
N
b
a
O
I suprimir
Por ejemplo, siC
intenta
er un registro con un valor ligado a una restriccin de integridad, se
f
s
A
devuelveD
un error. an
N
-tlar diapositiva, se intenta suprimir el departamento 60 de la tabla DEPARTMENTS,
U
En
de
n
Fel ejemplo
o
n un error porque ese nmero de departamento se utiliza como clave ajena en la tabla
pero se produce
EMPLOYEES. Si el registro principal que intenta suprimir tiene registros secundarios, recibir la
violacin de registro secundario encontrado ORA-02292.
La siguiente sentencia funciona porque no hay ningn empleado en el departamento 70:
DELETE FROM departments
WHERE department_id = 70;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una Tabla mediante una Subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de una Tabla mediante
le una Subconsulta
N
b
a
O
Un segundo mtodo
para
crear
tablas
es aplicar la clusula AS subquery, que crea la tabla e inserta
r
I
e
C
f
A adenlassubconsulta.
las filas desvueltas
D
N
En la
sintaxis:n-tr
U
F
table no
es el nombre de la tabla
column
subquery
Instrucciones
La tabla se crea con los nombres de columna especificados y las filas recuperadas por la sentencia
SELECT se insertan en la tabla.
La definicin de columna slo puede contener el nombre de la columna y el valor por defecto.
Si se proporcionan especificaciones de columna, el nmero de columnas debe ser igual al nmero
de columnas de la lista SELECT de la subconsulta.
Si no se proporcionan especificaciones de columna, los nombres de columna de la tabla son los
mismos que los de la subconsulta.
Las definiciones de tipo de dato de columna y de la restriccin NOT NULL se transfieren a la
nueva tabla. Tenga en cuenta que slo la restriccin explcita NOT NULL se heredar. La columna
PRIMARY KEY no transferir la funcin NOT NULL a la nueva columna. Las dems reglas de
restriccin no se transfieren a la nueva tabla. Sin embargo, puede agregar restricciones en la
definicin de columna.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
DESCRIBE dept80
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de una Tabla mediante
le una Subconsulta (continuacin)
N
b
a
O
En el ejemplo de Ila diapositiva,
er se crea una tabla denominada DEPT80, que contiene los detalles de
C
f
s
A
todos losD
n trabajan en el departamento 80. Tenga en cuenta que los datos de la tabla
adeque
r
N empleados
t
DEPT80
proceden
la tabla EMPLOYEES.
U
F non
Puede verificar la existencia de una tabla de base de datos y comprobar las definiciones de columna
mediante el comando DESCRIBE.
Sin embargo, asegrese de proporcionar un alias de columna al seleccionar una expresin. La
expresin SALARY*12 recibe el alias ANNSAL. Sin el alias, se genera el siguiente error:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una tabla mediante una subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
Sentencia ALTER TABLE
P
Ntabla, puede
bl que necesite cambiar la estructura de la tabla por cualquiera de las
a
O
r
I
Despus de crear
una
AC ansfe
siguientesDrazones:
Nomitido
tr columna.
-una
n
F UHa
o
Debencambiar la definicin de columna o su nombre.
Debe eliminar columnas.
Desea definir la tabla en modo de slo lectura.
Para ello, puede utilizar la sentencia ALTER TABLE.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
ALTER TABLE employees READ WRITE;
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Tablas de Slo Lectura
le
N
b
a
O
Con Oracle Database
11g,e
puede
r especificar READ ONLY para definir una tabla en modo de slo
ClaI tabla
f
s
A
lectura. Cuando
est
D tran en modo READ-ONLY, no puede ejecutar ninguna sentencia DML que
N
afecte
U a la tabla
n-o a cualquier sentencia SELECT ... FOR UPDATE. Puede ejecutar las sentencias
F
o
n
DDL siempre y cuando no modifique los datos de la tabla. Se permiten operaciones sobre ndices
asociados a la tabla cuando la tabla est en modo READ ONLY.
Especifique READ/WRITE para volver a definir una tabla de slo lectura en modo de
lectura/escritura.
Nota: si es necesario puede borrar una tabla con modo READ ONLY. El comando DROP se ejecuta
slo en el diccionario de datos, por lo que no es necesario el acceso al contenido de la tabla. El
espacio utilizado por la tabla no se reclamar hasta que el tablespace se vuelva a definir en
lectura/escritura y, a continuacin, los cambios necesarios se podrn realizar en las cabeceras de
segmento de bloque, etc.
Para obtener ms informacin sobre la sentencia ALTER TABLE, consulte el curso titulado Oracle
Database: Conceptos Fundamentales de SQL II.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
Reglas de nomenclatura
Sentencia CREATE TABLE:
Acceso a otras tablas de usuario
Opcin DEFAULT
Tipos de dato
Visin general de restricciones: Restricciones NOT NULL,
UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
s
a
h
Creacin de una tabla mediante una subconsulta
rg)
o
ALTER TABLE
sa ide
e
d
Tablas de slo lectura
roy nt Gu
p
n@ tude
Sentencia DROP TABLE
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Borrado de una Tabla
le
N
b
a
O
La sentencia DROP
TABLE
a la papelera de reciclaje o elimina la tabla y todos sus
ermueve una tabla
CdeI datos
f
s
A
datos de la
base
completamente.
A
menos
que especifique la clusula PURGE, la sentencia
n a liberar espacio en los tablespaces
D notrvuelve
a
N
DROP
TABLE
para que lo utilicen otros objetos y el
U
n
F
o
espacio sigue
n contando en la cuota de espacio del usuario. El borrado de una tabla invalida objetos
dependientes y elimina privilegios de objeto en la tabla.
Al borrar una tabla, la base de datos pierde todos los datos de la tabla y los ndices asociados
a los mismos.
Sintaxis
DROP TABLE table [PURGE]
En la sintaxis, table es el nombre de la tabla.
Instrucciones
Se suprimen todos los datos de la tabla.
Se mantienen las vistas y los sinnimos, pero no son vlidos.
Se confirman las transacciones pendientes.
Slo el creador de la tabla o un usuario con el privilegio DROP ANY TABLE puede eliminar una
tabla.
Nota: utilice la sentencia FLASHBACK TABLE para restaurar una tabla borrada de la papelera de
reciclaje. Esto se trata con ms detalle en el curso titulado Oracle Database: Conceptos
Fundamentales de SQL II.
Oracle Database: Conceptos Fundamentales de SQL I 10-39
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Puede utilizar restricciones para realizar lo siguiente:
1. Aplicar reglas a los datos de la tabla cuando se inserta,
actualiza o suprime una fila de dicha tabla.
2. Evitar la supresin de una tabla.
3. Evitar la creacin de una tabla.
4. Evitar la creacin de datos en una tabla.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 1, 2, 4
le
N
b
a
O
CI nsfer
A
ND n-tra
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido a utilizar la sentencia
CREATE TABLE para crear una tabla e incluir restricciones.
e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r
I haberfeaprendido
En esta leccinCdebe
a realizar lo siguiente:
s
A
CREATED
TABLE ran
N
-t
U
la
sentencia
CREATE TABLE para crear una tabla e incluir restricciones.
n
F Utilizar
o
n
Crear una tabla basada en otra tabla mediante una subconsulta.
DROP TABLE
Eliminar filas y la estructura de una tabla.
Una vez ejecutada, no se puede realizar un rollback de esta sentencia.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 10: Visin General le
N rlaabsentencia CREATE TABLE. Confirme que la nueva tabla se ha
Cree nuevas tablas
IOmediante
C
sfe Tambin aprender a definir el estado de una tabla como READ ONLY y,
Abase adendatos.
agregadoD
a la
N
tr a READ/WRITE.
a continuacin,
FU non-revertir
Nota: para todas las sentencias DDL y DML, haga clic en el icono Run Script (o pulse [F5]) para
ejecutar la consulta en SQL Developer. De esta forma, ve los mensajes de comentarios en la pgina
con separadores Script Output. Para consultas SELECT, siga haciendo clic en el icono Execute
Statement o pulse [F9] para obtener la salida con formato en la pgina con separadores Results.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo
siguiente:
Crear vistas simples y complejas
Recuperar datos de las vistas
Crear, mantener y utilizar secuencias
Crear y mantener ndices
Crear sinnimos privados y pblicos
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetivos
le
N
b
a
O
I ofrecefuna
En esta leccin,
se
er introduccin a los objetos de vista, secuencia, sinnimo e ndice.
C
s
A
Aprender
ran bsicos de la creacin y el uso de vistas, secuencias e ndices.
NDlosnconceptos
t
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
g)
r
o
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Objeto
Descripcin
Tabla
Vista
Secuencia
s
a
h
rg)
o
Sinnimo
Ofrece nombres alternativos para los objetos. sa
e
e
d
i
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Objetos de Base de Datos
le
N
b
a
O
r de datos adems de las tablas.
Existen otros objetos
CI nenslafebase
A
D puede
Con las
a presentar y ocultar datos de las tablas.
r
Nvistas,
t
U
F aplicaciones
Muchas
on exigen el uso de nmeros nicos como valores de clave primaria. Puede crear
n
cdigo en la aplicacin para cumplir este requisito o utilizar una secuencia para generar nmeros
ndice
nicos.
Si desea mejorar el rendimiento de las consultas de recuperacin de datos, debe crear un ndice.
Tambin puede utilizar ndices para reforzar la unicidad en una columna o recopilacin de columnas.
Puede proporcionar nombres alternativos para los objetos mediante sinnimos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Qu es una Vista?
Tabla EMPLOYEES
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Qu es una Vista?
le
N
b
a
O
I combinaciones
Puede representar
er de datos o subjuegos lgicos mediante la creacin de vistas de
C
f
s
A
tablas. Una
esauna
n tabla lgica basada en una tabla o en otra vista. Una vista no contiene ningn
r
ND vista
t
dato
propio,
sino
que
se trata de una ventana a travs de la que se pueden visualizar o cambiar los
U
n
F
o
n
datos de las tablas. Las tablas en las que se basa la vista se denominan tablas base. Las vista se
almacena como una sentencia SELECT en el diccionario de datos.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Para restringir
el acceso a los
datos
Para facilitar
consultas complejas
a
s
a
)h
g
Para
presentar
r
Para mejorar la
ode e
a
diferentes vistas
s
independencia
id
de datos
u
los mismos
y
de los datos
G
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Ventajas de las Vistas
le
N
b
a
O
I
Las vistasC
restringen
el
eracceso a los datos porque muestra las columnas seleccionadas de la
f
s
A
tabla.D
an utilizar para crear consultas simples para recuperar los resultados de
Nvistasnse-trpueden
Las
U
F consultas
no complicadas. Por ejemplo, las vistas se pueden utilizar para consultar informacin de
varias tablas sin que el usuario sepa cmo escribir una sentencia de unin.
Las vistas proporcionan independencia de los datos para usuarios ad-hoc y programas de
aplicacin. Las vistas se pueden utilizar para recuperar datos de varias tablas.
Las vistas proporcionan a los grupos de usuarios acceso a los datos segn sus criterios concretos.
Para obtener ms informacin, consulte la seccin sobre CREATE VIEW en Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la base de datos 10g
u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funcin
Vistas Simples
Vistas Complejas
Nmero de tablas
Una
Una o ms
Contienen funciones
No
No
No siempre
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Vistas Simples y Complejas le
rablas vistas: simples y complejas.. La principal diferencia est
ION fepara
Existen dos clasificaciones
C
relacionada
operaciones
(INSERT, UPDATE y DELETE).
ns
DAcon las
a
r
N
t
F ULas- vistas
onsimples:
nDerivan
datos de una sola tabla.
- No contienen funciones ni grupos de datos.
- Pueden realizar operaciones DML a travs de la vista.
Las vistas complejas:
- Derivan datos de varias tablas.
- Contienen funciones o grupos de datos.
- No siempre permiten operaciones DML a travs de la vista.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de Vistas
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Vistas
le
N
b
a
O
Para crear una vista,
una subconsulta en la sentencia CREATE VIEW.
r
eembeber
CI puede
f
s
A
En la sintaxis:
D tran
N
U
OR
REPLACEnvuelve a crear la vista si ya existe.
F
o
FORCE n
crea la vista independientemente de si existen o no las tablas base.
crea la vista slo si existen las tablas base (opcin por defecto).
es el nombre de la vista.
especifica los nombre de las expresiones seleccionadas por la consulta de la
vista. (El numero de alias debe coincidir con el nmero de expresiones
seleccionadas por la vista).
subquery
Es una sentencia SELECT completa (Puede utilizar alias para las
columnas de la lista SELECT).
WITH CHECK OPTION
especifica que slo las filas accesibles para la vista se puedan
insertar o actualizar.
constraint
es el nombre asignado a la restriccin CHECK OPTION.
WITH READ ONLY
garantiza que no se pueda realizar ninguna operacin DML en esta
vista.
Nota: en SQL Developer, haga clic en el icono Run Script o pulse [F5] para ejecutar las sentencias
de lenguaje de definicin de datos (DLL). Los comentarios se mostrarn en la pgina con
separadores Script Output.
NOFORCE
view
alias
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de Vistas
a
s
a
)h
g
r
DESCRIBE empvu80
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Vistas (continuacin)
le
N
b
a
O
En el ejemplo C
deIla diapositiva
er se crea una vista que contiene el nmero de empleado, el apellido y el
f
s
A
salario deD
cada empleado
an del departamento 80.
r
N
t
U
Puede
la estructura de la vista mediante el comando DESCRIBE.
F visualizar
non
Instrucciones
La subconsulta que define una vista puede contener la sintaxis compleja SELECT, incluidas
uniones, grupos y subconsultas.
Si no especifica un nombre de restriccin para la vista creada con WITH CHECK OPTION, el
sistema asigna un nombre por defecto con el formato SYS_Cn.
Puede utilizar la opcin OR REPLACE para cambiar la definicin de la vista sin borrarla y
volver a crearla o sin necesidad de volver a otorgarle los privilegios de objeto otorgados
previamente.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de Vistas
e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Vistas (continuacin)
le
N
b
a
O
I nombres
Puede controlar
erde columna incluyendo alias de columna en la subconsulta.
Clos
f
s
A
El ejemplo
Dde la tdiapositiva
an crea una vista que contiene el nmero de empleado (EMPLOYEE_ID)
r
N
U
con
ID_NUMBER,
el nombre (LAST_NAME) con el alias NAME y el salario anual (SALARY)
n
F el alias
noANN_SALARY
con el alias
para cada empleado del departamento 50.
Como alternativa, puede utilizar un alias despus de la sentencia CREATE y antes de la subconsulta
SELECT. El numero de alias mostrado debe coincidir con el nmero de expresiones seleccionadas en
la vista).
CREATE OR REPLACE VIEW
salvu50 (ID_NUMBER, NAME, ANN_SALARY)
AS SELECT employee_id, last_name, salary*12
FROM
employees
WHERE
department_id = 50;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
SELECT *
FROM
salvu50;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Recuperacin de Datos de unale
Vista
N
b
a
O
I defuna
Puede recuperar
datos
er vista al igual que de una tabla. Puede visualizar el contenido de toda la
C
s
A
vista o slo
rayncolumnas especficas.
ND denfilas
t
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Modificacin de Vistas
s
a
h
rg)
o
sa ide
Los alias de columna de la clusula CREATE OR
REPLACE
e
d
u de
G
oy columnas
VIEW se muestran en el mismo orden que
rlas
t
p
en
@
d
n
la subconsulta.
u
t
io
S
c
a
s
i
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Modificacin de Vistas
le
N
b
a
O
Con la opcin ORI REPLACE,
er se puede crear una vista incluso si ya existe otra con este nombre,
C
f
s
A
sustituyendo
n la antigua versin de la vista para su propietario. Esto significa que la
D de esta
aforma
r
Npuede
t
vista
se
modificar
sin borrar, volver a crear y volver a otorgar los privilegios de objeto.
U
F non
Nota: al asignar alias de columna en la clusula CREATE OR REPLACE VIEW, recuerde que los
alias se muestran en el mismo orden que las columnas de la subconsulta.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de Vistas Complejasle
N rabse crea una vista compleja de nombres de departamento, salarios
Odiapositiva
En el ejemplo C
de Ila
sfepor departamento. Tenga en cuenta que se han especificado nombres
A amedios
mnimos D
y salarios
n
-tlar vista. ste es un requisito necesario si alguna de las columnas de la vista se
alternativos
UN opara
n
F
deriva den
una funcin o expresin.
Puede visualizar la estructura de la vista mediante el comando DESCRIBE. Para visualizar el
contenido de la vista, emita una sentencia SELECT.
SELECT *
FROM
dept_sum_vu;
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Funciones de grupo
Una clusula GROUP BY
La palabra clave DISTINCT
La palabra clave ROWNUM de pseudocolumna
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Reglas para Realizar Operaciones
le DML en una Vista
N
b
a
O
I operaciones
Puede realizar
er DML en los datos a travs de una vista si dichas operaciones siguen
C
f
s
A
ciertas
reglas. an
NDeliminar
tr una fila de una vista a menos que contenga alguna de las siguientes opciones:
Puede
U
F - nFunciones
on- de
grupo
- Una clusula GROUP BY
- La palabra clave DISTINCT
- La palabra clave ROWNUM de pseudocolumna
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Reglas para Realizar Operaciones
le DML en una Vista (continuacin)
N
b
a
O
Idatos a travs
Puede modificar
er de una vista a menos que contenga cualquiera de las condiciones
C
f
s
A
mencionadas
en la a
anterior o columnas definidas por expresiones (por ejemplo,
n
rdiapositiva
ND* n12).
t
SALARY
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Reglas para Realizar Operaciones
le DML en una Vista (continuacin)
N
b
a
O
I a travs
Puede agregarC
datos
de una vista a menos que contenga cualquiera de los elementos
erNo
f
s
A
mostrados
en
la
diapositiva.
puede agregar datos a una vista si sta contiene columnas NOT NULL
D tran
N
sin
valores
en la tabla base. Todos los valores necesarios deben estar presentes en la
U oporndefecto
F
n
vista. Recuerde que va a agregar valores directamente a la tabla subyacente a travs de la vista.
Para obtener ms informacin, consulte la seccin sobre CREATE VIEW en Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la base de datos 10g
u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
h
Cualquier intento de ejecutar INSERT con una fila conrg)
o
a
department_id distinto de 20, o ejecutar UPDATE
en d
ele
s
e
i
d
u
nmero de departamento para cualquier fila
vista
G
royde la
t
p
n
eOPTION.
@
fallar porque viola la restriccin WITH
CHECK
d
n
u
t
io
S
c
a
s
i
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
Uso de la Clusula WITH
CHECKeOPTION
P
N rabl de integridad referencial a travs de las vistas. Tambin puede
O
Es posible realizar
comprobaciones
I
aplicar restricciones
sfede base de datos. La vista se puede utilizar para proteger la integridad de
AC aannivel
D
N peronsu-truso es muy limitado.
los datos,
U
F
La clusula
noWITH CHECK OPTION especifica que las operaciones INSERT y UPDATE realizadas a
travs de la vista no pueden crear filas que no pueda seleccionar la vista. Por lo tanto, permite aplicar
restricciones de integridad y comprobaciones de validacin de datos en los datos que se van a insertar
o actualizar. Si se intenta realizar operaciones DML en filas que no haya seleccionado la vista, se
muestra un error, junto con el nombre de la restriccin si se ha especificado.
UPDATE empvu20
SET
department_id = 10
WHERE employee_id = 201;
causa:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Denegacin de Operaciones DML
le
N
b
a
O
Puede asegurarseIde que no
ninguna operacin DML en la vista, crela con la opcin WITH
ersederealice
C
f
s
A
READ ONLY.
En
el
ejemplo
la
siguiente
diapositiva se modifica la vista EMPVU10 para evitar
D tran
N
operaciones
n- en la vista.
FU noDML
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Denegacin de Operaciones DML
le (continuacin)
N
b
a
O
Ide eliminar
Cualquier intento
er una fila de una vista con una restriccin de slo lectura provocar un
C
f
s
A
error: D
N n-tran
U
F no
DELETE FROM empvu10
WHERE
employee_number = 200;
Igualmente, cualquier intento de insertar o modificar una fila mediante una vista con una restriccin
de slo lectura provocar el mismo error.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Eliminacin de Vistas
Puede eliminar una vista sin perder los datos, ya que las vistas
se basan en tablas subyacentes de la base de datos.
DROP VIEW view;
DROP VIEW empvu80;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Eliminacin de Vistas
le
N
b
a
O
Puede utilizar la sentencia
r VIEW para eliminar una vista. La sentencia elimina la definicin de
I
eDROP
C
f
s
A
vista de laDbase de datos.
embargo, el borrado de vistas no tiene ningn efecto en las tablas en las
an PorSinotro
r
N
t
que
se
basan
las
vistas.
lado, las vistas y otras aplicaciones basadas en las vistas suprimidas
U
n
F
o
n
se convierten en no vlidas. Slo el creador o un usuario con el privilegio DROP ANY VIEW puede
eliminar una vista.
En la sintaxis, view es el nombre de la vista.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 11: Visin General dele
la Parte 1
N
b
a
O
r leccin ofrece varios ejercicios de creacin, uso y eliminacin de
I
La Parte 1 de la
prctica
deeesta
C
f
s
A
vistas. Complete
de la 1 a la 6 al final de esta leccin.
n
rapreguntas
ND n-tlas
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Visin general de ndices
rg)
o
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Secuencias
Objeto
Descripcin
Tabla
Vista
Secuencia
ndice
s
a
h
Sinnimo
Ofrece nombres alternativos para los objetos.
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Secuencias
le
N
b
a
O
r base de datos que crea valores enteros. Puede crear secuencias y, a
Una secuenciaC
esIun objetoede
f
s
A
continuacin,
ran para generar nmeros.
ND nutilizarlas
t
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Secuencias
Una secuencia:
Puede generar automticamente nmeros nicos
Es un objeto que se puede compartir
Se puede utilizar para crear un valor de clave primaria
Sustituye el cdigo de aplicacin
Acelera la eficacia del acceso a los valores de secuencia
cuando estn almacenados en cach
s
a
h
rg)
o
a de
2
4
6
8
10 es
i
d
u
y
G
o
1
3
5
7
pr9 ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Secuencias (continuacin)
le
N
b
a
O
r base de datos creado por el usuario que pueden compartir varios
Una secuenciaC
esIun objetoede
f
s
A
usuarios para
D generar
anenteros.
r
N
t
U
Puede
nuna secuencia para generar valores nicos o reciclar y volver a utilizar los mismos
F definir
o
n
nmeros.
El uso normal de las secuencias es la creacin de un valor de clave primaria, que debe ser nico para
cada fila. Una secuencia se genera y aumenta (o disminuye) mediante una rutina interna de Oracle.
ste puede ser un objeto de ahorro de tiempo, ya que reduce la cantidad de cdigo de aplicacin
necesario para escribir una rutina de generacin de secuencia.
Los nmeros de secuencia se almacenan y generan independientemente de las tablas. Por lo tanto, la
misma secuencia se puede utilizar para varias tablas.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
i
RO Sintaxis
l
Sentencia CREATE SEQUENCE:
P
le
N
b
a
O
Genera nmeros Isecuenciales
C nsfer automticamente mediante la sentencia CREATE SEQUENCE.
A
D tra
En la sintaxis:
N
U
es el nombre del generador de secuencias.
nFsequence
o
n
INCREMENT BY n
especifica el intervalo entre nmeros de secuencia, donde
START WITH n
MAXVALUE n
NOMAXVALUE
MINVALUE n
NOMINVALUE
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de Secuencias
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de una Secuencia (continuacin)
le
N
b
a
O
CYCLE | NOCYCLE
si la secuencia sigue generando
CI nsfer especifica
A
valores despus de alcanzar su valor mximo o mnimo
ND n-tra
(NOCYCLE es la opcin por defecto).
U
FCACHEnno | NOCACHE
especifica cuntos valores preasigna el servidor de Oracle
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
ce
i
RO
l
Pseudocolumnas NEXTVAL
y CURRVAL
P
le
N
b
a
O
r se generan nmeros secuenciales para utilizarlos en las tablas. Haga
Despus de crear
esecuencia
CIla secuencia,
f
s
referenciaDaA
los valores
de
mediante las pseudocolumnas NEXTVAL y CURRVAL.
n
a
r
N
t
U on- NEXTVAL se utiliza para extraer nmeros de secuencia sucesivos de una
La
Fpseudocolumna
secuencianespecificada. Debe cualificar a NEXTVAL con el nombre de secuencia. Al hacer referencia
a sequence.NEXTVAL, se genera un nuevo nmero de secuencia y el actual se sustituye en
CURRVAL.
La pseudocolumna CURRVAL se utiliza para hacer referencia al nmero de secuencia que acaba de
generar el usuario actual. Sin embargo, NEXTVAL se debe utilizar para generar un nmero de
secuencia en la sesin del usuario actual antes de que se pueda hacer referencia a CURRVAL. Debe
cualificar a CURRVAL con el nombre de secuencia. Al hacer referencia a sequence.CURRVAL, se
muestra el ltimo valor devuelto al proceso de ese usuario.
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Fundacin Proydesa
Pseudocolumnas NEXTVAL y CURRVAL (continuacin)
Reglas para el Uso de NEXTVAL y CURRVAL
Puede utilizar NEXTVAL y CURRVAL en los siguientes contextos:
La lista SELECT de una sentencia SELECT que no forme parte de una subconsulta
La lista SELECT de una subconsulta de la sentencia INSERT
La clusula VALUES de una sentencia INSERT
La clusula SET de la sentencia UPDATE
Puede utilizar NEXTVAL y CURRVAL en los siguientes contextos:
La lista SELECT de una vista
Una sentencia SELECT con la palabra clave DISTINCT
Una sentencia SELECT con las clusulas GROUP BY, HAVING o ORDER BY
Una subconsulta en una sentencia SELECT, DELETE o UPDATE
La expresin DEFAULT en una sentencia CREATE TABLE o ALTER TABLE
Para obtener ms informacin, consulte las secciones sobre pseudocolumnas y sobre CREATE
SEQUENCE en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de
Oracle Database) para la base de datos 10g u 11g.
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
SA to u
E
D nse
Y
RO e lice
P
N rabl
O
I
AC ansfe
D
r
N
FU non-t
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
SELECT
dept_deptid_seq.CURRVAL
s
de Guid
FROM
dual;
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Uso de una Secuencia
le
N
b
a
O
En el ejemplo de Ila diapositiva
un nuevo departamento en la tabla DEPARTMENTS. Utiliza
C nsfer se inserta
A
la secuencia
DEPT_DEPTID_SEQ
para
generar
un nuevo nmero de departamento como se muestra
D tra
N
aF
continuacin.
U onn el valor actual de la secuencia mediante sequence_name.CURRVAL, se muestra en
Puede visualizar
Supongamos que ahora desea contratar empleados para el nuevo departamento. La sentencia
INSERT que se debe ejecutar para los nuevos empleados puede incluir el siguiente cdigo:
INSERT INTO employees (employee_id, department_id, ...)
VALUES (employees_seq.NEXTVAL, dept_deptid_seq .CURRVAL, ...);
Nota: en el ejemplo anterior, se asume que la secuencia denominada EMPLOYEE_SEQ ya se ha
creado para generar los nmeros de los nuevos empleados.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Almacenamiento en Cach de llos
e Valores de Secuencia
N
b
a
O
Ilas secuencias
Puede almacenar
er en cach en la memoria para proporcionar un acceso ms rpido a
C
f
s
A
los valores
de dichas
La cach se rellena la primera vez que hace referencia a la
ansecuencias.
r
NDLas
t
secuencia.
solicitudes
del
siguiente
valor de secuencia se recuperan de la secuencia almacenada
U
n
F
o
n
en cach. Despus de utilizar el ltimo valor de secuencia, la siguiente solicitud de la secuencia
introduce otra cach de secuencias en la memoria.
Intervalos en la Secuencia
Aunque los generadores de secuencias emiten nmeros secuenciales sin intervalos, esta accin se
realiza independientemente de que se realice una confirmacin o un rollback. Por lo tanto, si realiza
un rollback de una sentencia que contiene una secuencia, se pierde el nmero.
Otro evento que puede provocar intervalos en la secuencia es un fallo del sistema. Si la secuencia
almacena los valores en cach en la memoria, estos valores se pierden si se produce un fallo del
sistema.
Puesto que las secuencias no estn ligadas directamente a las tablas, se puede utilizar la misma
secuencia para varias tablas. Si lo hace as, cada tabla puede contener intervalos en los nmeros
secuenciales.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Modificacin de una Secuencia
le
N
b
a
O
Si alcanza el lmite
r para la secuencia, no se asignan valores adicionales de la secuencia y
I MAXVALUE
eque
Cque
f
s
A
recibir un
error
indica
la secuencia excede el valor MAXVALUE. Para seguir utilizando la
D tran
N
secuencia,
n- modificarla mediante la sentencia ALTER SEQUENCE.
FU npuede
o
Sintaxis
ALTER
SEQUENCE
secuencia
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Instrucciones para Modificar una
le Secuencia
N
b
a
O
Debe ser el propietario
el privilegio ALTER para la secuencia si desea modificarla. Debe
I
feor eltener
AC anostener
ser elDpropietario
privilegio DROP ANY SEQUENCE para eliminarla.
r
N se ven
-tafectados
Slo
por la sentencia ALTER SEQUENCE los nmeros de secuencia futuros.
n
F ULa
o
n
opcin START WITH no se puede cambiar mediante ALTER SEQUENCE. La secuencia se
DROP SEQUENCE dept_deptid_seq;
El error:
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Visin general de ndices
rg)
o
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
ndices
Objeto
Descripcin
Tabla
Vista
Secuencia
ndice
s
a
h
Sinnimo
Ofrece nombres alternativos para los objetos.
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
ndices
le
N
b
a
O
r de datos que puede crear para mejorar el rendimiento de algunas
I defebase
Los ndices son
objetos
C
s
A
consultas.DLos ndices
ntambin los puede crear automticamente el servidor al crear una restriccin
anica.
r
t
deFclave
o
UNprimaria
non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
ndices
Un ndice:
Es un objeto de esquema
Lo puede utilizar el servidor de Oracle para acelerar la
recuperacin de filas mediante un puntero
Puede reducir la entrada/salida (E/S) de disco mediante
un mtodo de ruta de acceso rpido para buscar datos
de forma rpida
Es independiente de la tabla que indexa
s
a
h
Lo utiliza y mantiene automticamente
rg)
o
el servidor de Oracle
sa
e
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
ndices (continuacin)
le
N
b
a
O
I de fOracle
Un ndice de servidor
er es un esquema de objeto que puede acelerar la recuperacin de filas
C
s
A
medianteD
se pueden crear explcita o automticamente. Si no hay un ndice
anLos ndices
r
N un puntero.
t
enFlaUcolumna,
se
produce
una
exploracin
de tabla completa.
n
o
n
Un ndice proporciona acceso directo y rpido a las filas de una tabla. Su finalidad es reducir la E/S
de disco mediante una ruta de acceso indexada para buscar datos de forma rpida. Un ndice lo utiliza
y mantiene automticamente el servidor de Oracle. Despus de crear un ndice, no ser necesaria
ninguna intervencin directa por parte del usuario.
Los ndices son lgica y fsicamente independientes de la tabla que indexan. Esto significa que se
pueden crear o borrar en cualquier momento sin que afecten a las tablas base o a otros ndices.
Nota: al borrar una tabla, se borran tambin los ndices correspondientes.
Para obtener ms informacin, consulte la seccin sobre objetos de esquema: ndices en Oracle
Database Concepts (Conceptos de Oracle Database) para la base de datos 10g u 11g.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Cmo se Crean los ndices? le
b
a
r
IONde ndices.
Puede crear dos
tipos
e
C
sf de Oracle crea automticamente este ndice al definir una columna en
A
ndice
nico: a
eln
servidor
D
r una restriccin PRIMARY KEY o UNIQUE. El nombre del ndice es el nombre
Ntabla para
-ttener
n
FUlaproporcionado
o
n
a la restriccin.
ndice no nico: se trata de un ndice que puede crear el usuario. Por ejemplo, puede crear un
ndice de columna FOREIGN KEY para una unin en una consulta para mejorar la velocidad de
recuperacin.
Nota: puede crear manualmente un ndice nico, pero se recomienda crear una restriccin nica, que
implcitamente crea el ndice nico.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Creacin de ndices
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de ndices
le
N
b
a
O
Para crear un ndice
CI ennsuna
feor ms columnas, emita la sentencia CREATE INDEX.
A
D tra
En la sintaxis:
N
U
n- es el nombre del ndice.
F index
o
n
table
es el nombre de la tabla.
column
es el nombre de la columna de la tabla que se debe rellenar.
Especifique UNIQUE para indicar que el valor de la columna (o columnas) en la que se basa el ndice
debe ser nico. Especifique BITMAP para indicar que el ndice se debe crear con un bitmap para
cada clave distinta, en lugar de indexar cada fila por separado. Los ndices de bitmap almacenan los
rowids asociados con un valor de clave como bitmap.
Para obtener ms informacin, consulte la seccin sobre CREATE INDEX en Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
La tabla es pequea o se espera que la mayora de las consultas
o
realizar el servidor de Oracle para actualizar todos los ndices despus de la operacin DML.
Cundo Crear un ndice
Por lo tanto, slo debe crear ndices si:
La columna contiene una amplia variedad de valores
La columna contiene un gran nmero de valores nulos
Una o ms columnas se utilizan con frecuencia en conjunto en una clusula WHERE o una
condicin de unin
La tabla es grande y se espera que la mayora de las consultas recuperen menos del 2% al 4% de
las filas
Recuerde que si desea reforzar la unicidad, debe definir una restriccin nica en la definicin de
tabla. En ese caso, se crea un ndice nico automticamente.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Eliminacin de ndices
a
s
a
)o h
g
Para borrar un ndice, debe ser el propietario del mismo
r
o e
a
tener el privilegio DROP ANY INDEX.
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Eliminacin de ndices
le
N
b
a
O
No puede modificar
ndices.
er Para cambiar un ndice, debe borrarlo y volver a crearlo.
CI los
f
s
A
Eliminar D
una definicin
an de ndice del diccionario de datos mediante la emisin de la sentencia DROP
r
N
t
U
INDEX.
F Paraonborrar un ndice, debe ser el propietario del mismo o tener el privilegio DROP ANY
INDEX. n
En la sintaxis, ndice es el nombre del ndice.
Nota: si borra una tabla, los ndices y restricciones se borran automticamente, pero permanecen las
vistas y secuencias.
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Agenda
s
a
h
Visin general de ndices
rg)
o
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Sinnimos
Objeto
Descripcin
Tabla
Vista
Secuencia
a
s
a
Sinnimo
Ofrece nombres alternativos para los objetos.
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Sinnimos
le
N
b
a
O
I objetosfeder base de datos que permiten llamar a una tabla por otro nombre. Puede
Los sinnimosC
son
s
A
crear sinnimos
un nombre alternativo a la tabla.
nproporcionar
D para
a
r
N
t
U
F non
ndice
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin de un Sinnimo parale
un Objeto
N
b
a
O
r propiedad de otro usuario, debe anteponer al nombre de la tabla el
I a unafetabla
Para hacer referencia
C
s
A
nombre del
usuarioaque
n la haya creado, seguido de un punto. Con la creacin de un sinnimo se
r
NlaDnecesidad
t
elimina
U
n de cualificar el nombre del objeto con el esquema y se ofrece nombres
F
o
n
alternativos para tablas, vistas, secuencias, procedimientos u otros objetos. Este mtodo es
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Borrar un sinnimo:
DROP SYNONYM d_sum;
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Creacin y Eliminacin de Sinnimos
le
N
b
a
O
Creacin de Sinnimos
CI nsfer
A
En la diapositiva
D tdel
aejemplo se crea un sinnimo para la vista DEPT_SUM_VU para una referencia
r
N
U
ms
F rpida.
on
n
El administrador de la base de datos puede crear un sinnimo pblico al que puedan acceder todos
los usuarios. En el siguiente ejemplo se crea un sinnimo pblico con el nombre DEPT para la tabla
DEPARTMENTS de Alice:
CREATE PUBLIC SYNONYM dept
FOR
alice.departments;
Eliminacin de Sinnimos
Para eliminar un sinnimo, utilice la sentencia DROP SYNONYM. Slo el administrador de la base de
datos puede borrar un sinnimo pblico.
DROP PUBLIC SYNONYM
dept;
Para obtener ms informacin, consulte la seccin sobre DROP SYNONYM en Oracle Database SQL
Language Reference (Referencia sobre Lenguaje SQL de Oracle Database) para la base de datos 10g
u 11g.
Oracle Database: Conceptos Fundamentales de SQL I 11-43
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Prueba
Los ndices se deben crear manualmente y sirven para
acelerar el acceso a las filas de la tabla.
1. Verdadero
2. Falso
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Respuesta: 2
le
N
b
a
O
Ise disean
Nota: los ndices
erpara acelerar el rendimiento de las consultas. Sin embargo, no todos los
C
f
s
A
ndices seD
manualmente.
El servidor de Oracle crea automticamente este ndice al definir una
n
rapara
N encrean
t
columna
lantabla
tener una restriccin PRIMARY KEY o UNIQUE.
U
F no
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
Resumen
En esta leccin, debe haber aprendido lo siguiente:
Crear, utilizar y eliminar vistas
Generar nmeros de secuencia automticamente con el
generador de secuencias
Crear ndices para mejorar la velocidad de recuperacin
de las consultas
Utilizar sinnimos para proporcionar nombres alternativos
para los objetos
s
a
h
rg)
o
sa ide
e
d
roy nt Gu
p
n@ tude
o
i
c is S
a
d
fun se th
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Resumen
le
N
b
a
O
r
I haber
En esta leccin,
debe
acerca de los objetos de base de datos como las vistas,
eaprendido
C
f
s
A
secuencias,
ay nsinnimos.
r
ND ndices
t
U
F non
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2013, Oracle and/or its affiliates
a
s
a
)h
g
r
o e
a
s
de Guid
y
o
pr ent
@
on Stud
i
c
a his
d
n
fu se t
(
u
Sy/oAsus filiales.
o
Copyright 2010, Oracle
Todos los derechos reservados.
t
E
D nse
Y
O lice
R
P
Prctica 11: Visin General dele
la Parte 2
N
b
a
O
r leccin ofrece varios ejercicios de creacin y uso de una secuencia,
I
La Parte 2 de la
prctica
deeesta
C
f
s
A
un ndiceD
y un sinnimo.
an
r
N
t
U
Complete
F nlasonpreguntas de la 7 a la 10 al final de esta leccin.