Você está na página 1de 6

INTRODUCCIN

El tema que a continuacin 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
bsicas para poder entender las consultas avanzadas.
De las consultas avanzadas se derivan otros temas importantes que iremos desarrollando cmo lo son las
Consultas que producen valores escalares, condiciones que involucran relaciones, Condiciones que involucran
tuplas, Sub-Consultas en clausuras FROM; As como tambin Eliminacin de duplicado, Agrupacin y
agregacin en SQL, Clausuras HAVING.
Tambin hablaremos sobre los Tipos de datos, Definicin de tablas, Modificacin de relaciones en el esquema,
Valores por defecto,
ndices, Seleccin con ndices. Por otro lado conoceremos como Declarar claves primarias, UNIQUE,
Restricciones sobre claves, Declaracin de retracciones de integridad referencial, Mantenimiento de integridad
referencial, Chequeo diferido de restricciones. Tambin conoceremos la Insercin, Eliminacin y Actualizacin
y para finalizar se realizara declaracin de vistas, Consultas sobre vistas, Modificacin de vistas, Consultas que
involucran vistas.
De acuerdo a todo lo que se desarrolle en relacin al tema, se aspira obtener conocimientos que nos puedan ser
tiles en el futuro a la hora de desempearnos como profesionales en el futuro.
CONSULTAS
Las consultas son objetos que vamos a utilizar para visualizar parte de la informacin contenida en nuestras
bases de datos desde una perspectiva ms detallada y ms adaptada a las necesidades concretas a una situacin
puntual, en contraposicin 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 tambin en
forma de tabla.
SUB-CONSULTAS
Una subconsulta, o una consulta dentro de una consulta, pueden ponerse dentro de la clusula WHERE de una
consulta. Esto produce una expansin de las capacidades de una clusula WHERE.
La consulta que incluye a esta subconsulta se llama consulta externa (outer query) o consulta principal. La
subconsulta puede ejecutarse lgicamente antes de que alguna fila sea examinada por la consulta principal. En
cierto sentido, la subconsulta es independiente de la consulta principal. Esta podra ejecutarse como una
consulta propiamente dicha. Se dice que esta clase de subconsulta no est correlacionada con la consulta
principal. Las subconsultas pudieran tambin estar correlacionadas.
Cmo utilizar sub-consultas
Cuando decida utilizar sub-consultas, tenga en cuenta los siguientes hechos e instrucciones:

Las sub-consultas se deben incluir entre parntesis.


Se pueden utilizar sub-consultas en lugar de una expresin 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 funcin que una combinacin.
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 anidacin de hasta 32 niveles. El lmite vara
segn la cantidad de memoria disponible y la complejidad de las otras expresiones de la consulta. Las consultas
individuales pueden no admitir una anidacin de hasta 32 niveles.
Sub-Consultas que producen valores escalares:
Un valor escalar puede ser entendido como un valor numrico, aunque tambin 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 tambin llamada sub consulta
escalar. El valor de una expresin en una sub consulta escalar es el valor del elemento de la lista seleccionado
de la sub consulta.
Ejemplo: Empleados que ganan ms 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
condicin. Compara un valor escalar con los valores de un campo y devuelven "true" si la comparacin con
cada valor de la lista de la subconsulta es verdadera, sino "false". El tipo de datos que se comparan deben ser
compatibles.
ALL: Tambin 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 lgicos son vlidos. 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 informtica, o concretamente en el contexto de una base de datos relacional, un registro (tambin llamado
fila o tupla) representa un objeto nico de datos implcitamente estructurados en una tabla. En trminos 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
posicin.

CLAUSULA HAVING
As como la clusula "where" permite seleccionar (o rechazar) registros individuales; la clusula "having"
permite seleccionar (o rechazar) un grupo de registros.
Si queremos saber la cantidad de libros agrupados por editorial usamos la siguiente instruccin ya aprendida:
select editorial, count(*)
from libros
group by editorial;

Si queremos saber la cantidad de libros agrupados por editorial pero considerando slo algunos grupos, por
ejemplo, los que devuelvan un valor mayor a 2, usamos la siguiente instruccin:
select editorial, count(*) from libros
group by editorial
having count(*)>2;

Se utiliza "having", seguido de la condicin de bsqueda, para seleccionar ciertas filas retornadas por la
clusula "group by".
Veamos otros ejemplos. Queremos el promedio de los precios de los libros agrupados por editorial, pero
solamente de aquellos grupos cuyo promedio supere los 25 pesos:
select editorial, avg(precio) from libros
group by editorial
having avg(precio)>25;

En algunos casos es posible confundir las clusulas "where" y "having". Queremos contar los registros
agrupados por editorial sin tener en cuenta a la editorial "Planeta".
Analicemos las siguientes sentencias:
select editorial, count(*) from libros
where editorial<>'Planeta'
group by editorial;
select editorial, count(*) from libros
group by editorial
having editorial<>'Planeta';

Ambas devuelven el mismo resultado, pero son diferentes. La primera, selecciona todos los registros
rechazando los de editorial "Planeta" y luego los agrupa para contarlos. La segunda, selecciona todos los
registros, los agrupa para contarlos y finalmente rechaza fila con la cuenta correspondiente a la editorial
"Planeta".

No debemos confundir la clusula "where" con la clusula "having"; la primera establece condiciones para la
seleccin de registros de un "select"; la segunda establece condiciones para la seleccin de registros de una
salida "group by".
Veamos otros ejemplos combinando "where" y "having". Queremos la cantidad de libros, sin considerar los que
tienen precio nulo, agrupados por editorial, sin considerar la editorial "Planeta":

TIPOS DE DATO
Tipo de dato es un concepto propio de la informtica, presente en cualquier lenguaje de programacin, donde
cada entorno de programacin tiene su modo particular de definirlos. Los hay muy diversos, clasificados por
grupos, definidos por el usuario... pero para lo que aqu nos ocupa vamos a considerar solamente estos cuatro
tipos de dato:

Cadena (cadena de texto o alfanumrica)

Nmero entero (sin decimales)

Nmero decimal (parte entera + parte decimal)

Fecha

DEFINICION DE TABLAS
Las Tablas son objetos de la base de datos que contienen la informacin de los usuarios, estos datos estn
organizados en filas y columnas, similar al de una hoja de clculo. Cada columna representa un dato aislado y
en bruto que por s solo no brinda informacin, por lo tanto estas columnas se deben agrupar y formar una fila
para obtener conocimiento acerca del objeto tratado en la tabla. Por ejemplo, puede definir una tabla que
contenga los datos de los productos ofertados por una tienda, cada producto estara representado por una fila
mientras que las columnas podran identificar los detalles como el cdigo del producto, la descripcin, el precio,
las unidades en stock, etc.
MODIFICACION DE RELACION EN EL ESQUEMA

Modificacin de Esquemas:
En la introduccin a este punto observamos que los tipos de modificacin que pueden hacerse en un esquema de
base de datos relacional son bastantes simples:

Crear o quitar una relacin.

Aadir o eliminar atributos de un esquema de relaciones.

Esta simplicidad no se cumple en los esquemas de bases de datos orientadas a objetos.


Fuentes:

1. Cambios Complejos: los tipos de modificacin que pueden hacerse en un esquema orientado a objetos
son ms complejos que los que pueden hacerse en un esquema de base de datos relacional.
2. Cambios Frecuentes: las aplicaciones que motivan el uso del modelo orientado a objetos requieren
cambios de esquema frecuentes, las aplicaciones de diseo a menudo implican: la alteracin de la
estructura del elemento que se est diseando, mientras en el ejemplo bancario, los datos descriptivos
que se requieren para prstamos, cuentas, etc., cambian relativamente poco.
Tipos:
a. Adicin de una Nueva Clase: esta adicin en una base de datos orientada a objetos implica ms de lo
que implicaba la adicin de un esquema de relaciones en una base de datos relacional, la nueva clase
debe colocarse en la jerarqua de Clase / Subclase o D. A. G., y deben resolverse los problemas de
herencia. Si la nueva clase no es un nodo hoja en la jerarqua o el D. A. G., puede que las subclases de la
nueva clase necesita heredar variables o mtodos de la nueva clase, lo mismo se aplica a las subclases y
as sucesivamente.
b. Eliminacin de una Clase: la eliminacin en una base de datos orientada a objetos requiere varias
operaciones, las variables y los mtodos que heredan las subclases se deben volver a eliminar. Cualquier
cambio en una subclase puede que necesite propagarse a las subclases, y as sucesivamente; las
instancias de las clases eliminadas deben hacerse instancias de otra clase, generalmente un padre de la
clase eliminada.
c. Modificacin de una Definicin de Clase: puede definirse una nueva o variable o mtodo o puede
eliminarse una definicin de una variable o un mtodo, como en los casos anteriores, la definicin de las
subclases puede verse afectada.
d. Reposicin de Clases de la Jerarqua o el D. A. G.: toda reestructuracin tiene consecuencias en la
herencia de las antiguas y nuevas subclases de la clase reposicionada.
VALORES POR DEFECTO, INDICES, SELECCIN DE INDICES
Hemos visto que si al insertar registros no se especifica un valor para un campo que admite valores nulos, se
ingresa automaticamente "null" y si el campo est declarado "identity", se inserta el siguiente de la secuencia. A
estos valores se les denomina valores por defecto o predeterminados.
Un valor por defecto se inserta cuando no est presente al ingresar un registro y en algunos casos en que el dato
ingresado es invlido.
Para campos de cualquier tipo no declarados "not null", es decir, que admiten valores nulos, el valor por defecto
es "null". Para campos declarados "not null", no existe valor por defecto, a menos que se declare explcitamente
con la clusula "default".
Para todos los tipos, excepto los declarados "identity", se pueden explicitar valores por defecto con la clusula
"default".
Podemos establecer valores por defecto para los campos cuando creamos la tabla. Para ello utilizamos "default"
al definir el campo. Por ejemplo, queremos que el valor por defecto del campo "autor" de la tabla "libros" sea
"Desconocido" y el valor por defecto del campo "cantidad" sea "0":

create table libros(


codigo int identity,
titulo varchar(40),
autor varchar(30) not null default 'Desconocido',
editorial varchar(20),
precio decimal(5,2),
cantidad tinyint default 0
);

Definicin de ndice
Un ndice es una estructura de datos definida sobre una columna de tabla (o varias) y que permite localizar de
forma rpida las filas de la tabla en base a su contenido en la columna indexada adems de permitir recuperar
las filas de la tabla ordenadas por esa misma columna.
Funciona de forma parecida al ndice de un libro donde tenemos el ttulo del captulo y la pgina donde empieza
dicho captulo, en un ndice definido sobre una determinada columna tenemos el contenido de la columna y la
posicin de la fila que contiene dicho valor dentro de la tabla.
La definicin de los ndices de la base de datos es tarea del administrador de la base de datos, los
administradores ms experimentados pueden disear un buen conjunto de ndices, pero esta tarea es muy
compleja, consume mucho tiempo y est sujeta a errores, incluso con cargas de trabajo y bases de datos con un
grado de complejidad no excesivo.

Você também pode gostar