Consultas Avanzadas En Bases De Datos
Enviado por ghost141 • 25 de Octubre de 2012 • 7.836 Palabras (32 Páginas) • 5.631 Visitas
INTRODUCCIÓN
El tema que a continuación se va a desarrollar trata sobre las consultas avanzadas. En primer lugar, vamos a ver qué es una consulta y para qué se utiliza o como se realiza, ya que es importante conocer a fondo las consultas básicas para poder entender las consultas avanzadas.
De las consultas avanzadas se derivan otros temas importantes que iremos desarrollando cómo lo son las Consultas que producen valores escalares, condiciones que involucran relaciones, Condiciones que involucran tuplas, Sub-Consultas en clausuras FROM; Así como también Eliminación de duplicado, Agrupación y agregación en SQL, Clausuras HAVING.
También hablaremos sobre los Tipos de datos, Definición de tablas, Modificación de relaciones en el esquema, Valores por defecto,
Índices, Selección con índices. Por otro lado conoceremos como Declarar claves primarias, UNIQUE, Restricciones sobre claves, Declaración de retracciones de integridad referencial, Mantenimiento de integridad referencial, Chequeo diferido de restricciones. También conoceremos la Inserción, Eliminación y Actualización y para finalizar se realizara declaración de vistas, Consultas sobre vistas, Modificación de vistas, Consultas que involucran vistas.
De acuerdo a todo lo que se desarrolle en relación al tema, se aspira obtener conocimientos que nos puedan ser útiles en el futuro a la hora de desempeñarnos como profesionales en el futuro.
CONSULTAS
Las consultas son objetos que vamos a utilizar para visualizar parte de la información contenida en nuestras bases de datos desde una perspectiva más detallada y más adaptada a las necesidades concretas a una situación puntual, en contraposición al contenido total de las tablas de nuestra base de datos.
Se pueden realizar sobre una o varias tablas relacionadas y el resultado que devuelven se muestran también en forma de tabla.
SUB-CONSULTAS
Una subconsulta, o una consulta dentro de una consulta, pueden ponerse dentro de la cláusula WHERE de una consulta. Esto produce una expansión de las capacidades de una cláusula WHERE.
La consulta que incluye a esta subconsulta se llama consulta externa (outer query) o consulta principal. La subconsulta puede ejecutarse lógicamente antes de que alguna fila sea examinada por la consulta principal. En cierto sentido, la subconsulta es independiente de la consulta principal. Esta podría ejecutarse como una consulta propiamente dicha. Se dice que esta clase de subconsulta no está correlacionada con la consulta principal. Las subconsultas pudieran también estar correlacionadas.
Cómo utilizar sub-consultas
Cuando decida utilizar sub-consultas, tenga en cuenta los siguientes hechos e instrucciones:
• Las sub-consultas se deben incluir entre paréntesis.
• Se pueden utilizar sub-consultas en lugar de una expresión siempre y cuando-se devuelva un solo valor o una lista de valores.
• Se pueden utilizar sub-consultas que devuelvan un conjunto de registros de varias columnas en-lugar de una tabla o para realizar la misma función que una combinación.
• No se pueden utilizar sub-consultas que recuperen columnas con tipos de datos Text e image
• .Puede tener sub-consultas dentro de sub-consultas, con una anidación de hasta 32 niveles. El límite varía según la cantidad de memoria disponible y la complejidad de las otras expresiones de la consulta. Las consultas individuales pueden no admitir una anidación de hasta 32 niveles.
Sub-Consultas que producen valores escalares:
Un valor escalar puede ser entendido como un valor numérico, aunque también se consideran escalares los caracteres o las cadenas de caracteres (considerando éstas como un tipo de datos elemental, no como un vector de caracteres).
Una sub consulta que obtiene exactamente un valor de una columna de una fila es también llamada sub consulta escalar. El valor de una expresión en una sub consulta escalar es el valor del elemento de la lista seleccionado de la sub consulta.
Ejemplo: Empleados que ganan más que el promedio de salarios pagados en el depto 20.
Condiciones que involucran relaciones:
ANY. Chequean si alguna fila de la lista resultado de una subconsulta se encuentra el valor especificado en la condición. Compara un valor escalar con los valores de un campo y devuelven "true" si la comparación con cada valor de la lista de la subconsulta es verdadera, sino "false". El tipo de datos que se comparan deben ser compatibles.
ALL: También compara un valor escalar con una serie de valores. Chequea si TODOS los valores de la lista de la consulta externa se encuentran en la lista de valores devuelta por la consulta interna.
EXITS: Cuando anidamos sentencias SELECT, todos los operadores lógicos son válidos. En suma, se puede usar el operador EXISTS. Este operador es frecuentemente usado en sub consultas relacionales para verificar cuando un valor recuperado por la consulta externa existe en el conjunto de resultados obtenidos por la consulta interna. Si la sub consulta obtiene al menos una fila, el operador obtiene el valor TRUE. Si el valor no existe, se obtiene el valor FALSE. Consecuentemente, NOT EXISTS verifica cuando un valor recuperado por la consulta externa no es parte del conjunto de resultados obtenidos por la consulta interna.
Ejemplo: Empleados con salario superior a todos los salarios del depto 10.
Condiciones que involucran tuplas:
En informática, o concretamente en el contexto de una base de datos relacional, un registro (también llamado fila o tupla) representa un objeto único de datos implícitamente estructurados en una tabla. En términos simples, una tabla de una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura. Las tuplas son estructuras de datos que constan de varios campos que pueden contener datos de tipos distintos. El acceso al contenido de los campos en las tuplas se hace utilizando el nombre de los campos en lugar de su posición.
Modificar tuplas de una tabla
UPDATE empleado
SET salario = salario * 1.1,
comision = nvl(comision, 0) * 1.2
WHERE depto = 30;
UPDATE empleado AS ext
SET salario = ( SELECT AVG(salario)
FROM empleado AS int
WHERE ext.dpto = int.dpto
)
...