Aprende Oracle - Subconsultas

Páginas: 7 (1576 palabras) Publicado: 1 de agosto de 2014
Subconsultas
Una subconsulta (subquery) es una sentencia "select" anidada en otra sentencia "select", "insert", "update" o "delete" (o en otra subconsulta).
Las subconsultas se emplean cuando una consulta es muy compleja, entonces se la divide en varios pasos lógicos y se obtiene el resultado con una única instrucción y cuando la consulta depende de los resultados de otra consulta.Generalmente, una subconsulta se puede reemplazar por combinaciones y estas últimas son más eficientes.
Las subconsultas generalmente se incluyen entre paréntesis.
Puede haber subconsultas dentro de subconsultas.
Generalmente las subconsultas se colocan en la cláusula "where".
Una subconsulta puede retornar:
- un solo valor,
- una lista de valores de una sola columna,
- un conjunto de registrosde varios campos.
Podemos averiguar si un valor de la consulta externa pertenece o no al conjunto devuelto por una subconsulta ("in", "not in"), si es mayor, menor o igual a todos ("all") o a algunos valores ("some", "any") del conjunto devuelto.
Se pueden emplear subconsultas:
- en lugar de una expresión, siempre que devuelvan un solo valor o una lista de valores.
- que retornen un conjuntode registros de varios campos en lugar de una tabla o para obtener el mismo resultado que una combinación (join).
Hay varios tipos básicos de subconsultas:
- las que retornan un solo valor escalar que se utiliza con un operador de comparación o en lugar de una expresión.
- las que retornan una lista de valores, se combinan con "in", o los operadores "any", "some" y "all".
- los que testeanla existencia con "exists".


Subconsultas como expresion
Una subconsulta puede reemplazar una expresión. Dicha subconsulta debe devolver un valor escalar (o una lista de valores de un campo).
Las subconsultas que retornan un solo valor escalar se utiliza con un operador de comparación o en lugar de una expresión:
select CAMPOS
from TABLA
where CAMPO OPERADOR (SUBCONSULTA);select CAMPO OPERADOR (SUBCONSULTA)
from TABLA;
Si queremos saber el precio de un determinado libro y la diferencia con el precio del libro más costoso, anteriormente debíamos averiguar en una consulta el precio del libro más costoso y luego, en otra consulta, calcular la diferencia con el valor del libro que solicitamos. Podemos conseguirlo en una sola sentencia combinando dos consultas:select titulo,precio,
precio-(select max(precio) from libros) as diferencia
from libros
where titulo='Uno';
En el ejemplo anterior se muestra el título, el precio de un libro y la diferencia entre el precio del libro y el máximo valor de precio.
Queremos saber el título, autor y precio del libro más costoso:
select titulo,autor, precio
from libros
where precio=
(selectmax(precio) from libros);
Note que el campo del "where" de la consulta exterior es compatible con el valor retornado por la expresión de la subconsulta.
Se pueden emplear en "select", "insert", "update" y "delete".
Para actualizar un registro empleando subconsulta la sintaxis básica es la siguiente:
update TABLA set CAMPO=NUEVOVALOR
where CAMPO= (SUBCONSULTA);
Para eliminar registros empleandosubconsulta empleamos la siguiente sintaxis básica:
delete from TABLA
where CAMPO=(SUBCONSULTA);

Ejercicios
Problema:
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla y la creamos:
drop table libros;

create table libros(
codigo number(5),
titulo varchar2(40),
autor varchar2(30),
editorial varchar2(20),
precio number(5,2)
);
Ingresamos lossiguientes registros:
insert into libros values(1,'Alicia en el pais de las maravillas','Lewis Carroll','Emece',20.00);
insert into libros values(2,'Alicia en el pais de las maravillas','Lewis Carroll','Plaza',35.00);
insert into libros values(3,'Aprenda PHP','Mario Molina','Siglo XXI',40.00);
insert into libros values(4,'El aleph','Borges','Emece',10.00);
insert into libros...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • SUBCONSULTAS
  • Subconsultas
  • Resueltos Ejercicios Subconsulta Con Actualizar Y Eliminar Oracle
  • ORACLE
  • Oracle
  • Oracle
  • oracle
  • Oracle

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS