Consultas Avanzadas En Bases De Datos
ghost14125 de Octubre de 2012
7.836 Palabras (32 Páginas)5.734 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
)
WHERE codigo = “34908”;
Eliminar tuplas de una tabla
DELETE FROM empleado
WHERE salario > 10000;
DELETE FROM departamento
WHERE NOT EXISTS ( SELECT *
FROM empleado
WHERE código = dpto);
Subconsultas en la cláusula FROM
Las subconsultas son legales en la cláusula FROM de un comando SELECT. La sintaxis que vería es:
SELECT ... FROM (subquery) [AS] name ...
La cláusula [AS] name es obligatoria, ya que cada tabla en la cláusula FROM debe tener un nombre. Cualquier columna en la lista selecta de la subquery debe tener nombre único. Puede encontrar esta sintaxis descrita en este manual, dónde se usa el término “tablas derivadas.”
Asuma que tiene la tabla:
CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);
Aquí se muestra cómo usar una subconsulta en la cláusula FROM usando la tabla de ejemplo:
INSERT INTO t1 VALUES (1,'1',1.0);
INSERT INTO t1 VALUES (2,'2',2.0);
SELECT sb1,sb2,sb3
FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb
WHERE sb1 > 1;
Resultado: 2, '2', 4.0.
Aquí hay otro ejemplo: suponga que quiere conocer la media de un conjunto de sumas para una tabla agrupada. Esto no funcionaría:
SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1;
Sin embargo, esta consulta proporciona la información deseada:
SELECT AVG(sum_column1)
FROM (SELECT SUM(column1) AS sum_column1
FROM t1 GROUP BY column1) AS t1;
Tenga en cuenta que el nombre de columna usado dentro de la subconsultas (sum_column1) se reconoce en la consulta exterior.
Las subconsultas en la cláusula FROM pueden retornar un escalar, columna, registro o tabla. De momento, las subconsultas en la cláusula FROM no pueden ser subconsultas correladas.
Las subconsultas en la cláusula FROM se ejecutan incluso para el comando EXPLAIN (esto es, se construyen las tablas temporales derivadas). Esto ocurre porque las consultas de niveles superiores necesitan información acerca de todas las tablas durante la fase de optimización.
Eliminación de duplicados
Puede usar la eliminación de duplicados (recorte de duplicados) a los resultados de una consulta según el valor de una propiedad administrada determinada.
Esta característica también puede servir para contraer los aciertos en el conjunto de resultados mediante un identificador de grupo (includedid). Se aplica a: Microsoft FAST Search Server 2010 for SharePoint.
Especificación de criterios para el recorte de duplicados
En el caso del servicio web de consulta, los criterios para el recorte de duplicados se especifican mediante Elemento
...