You are on page 1of 19

20/05/2010

UNIDAD 1.- PARTE 1


MANIPULACIN AVANZADA DE DATOS CON SQL.

BASES DE DATOS PARA APLICACIONES


Xochitl Clemente Parra
Armando Mndez Morales

Prctica preliminar

Crear la siguiente base de datos de prcticas en SQL Server.

20/05/2010

Estructura bsica de las consultas

La estructura bsica de una consulta consiste


en 3 clausulas:
Select:

corresponde a la operacin proyeccin del


algebra relacional. Se utiliza para listar los atributos
deseados del resultado de una consulta.
From: corresponde a la operacin producto
cartesiano del algebra relacional. Lista las relaciones
que deben ser analizadas en la evaluacin de la
expresin
Where: engloba los atributos de las relaciones que
aparecen en la clausula from.

Distinct

Id

Nombre

Direccion

Telefono

Juan Perez

Calle 3 No. 34

938-2343-322

Juan Lopez

2 pte nte 98

765-8356-224

Rosa Gmez

13 sur ote 383

675-4567-211

Juan Lopez

Calle Amapolas 10

978-5976-435

SQL permite duplicados en la relaciones, pero si se


quiere eliminar duplicados, se emplea la palabra clave
distinct despus del select.

Select distinct nombre from Datos

Select nombre from Datos

20/05/2010

All

Id

Nombre

Direccion

Telefono

Juan Perez

Calle 3 No. 34

938-2343-322

Juan Lopez

2 pte nte 98

765-8356-224

Rosa Gmez 13 sur ote 383

675-4567-211

Juan Lopez

978-5976-435

Calle Amapolas 10

Tambin se puede emplear la palabra all para especificar


explcitamente que no se eliminan duplicados.

Select all nombre from Datos

* y operadores

Id

Nombre

Direccin

Telfono

Salario

Juan Perez

Calle 3 No. 34

938-2343-322

4,500

Juan Lopez

2 pte nte 98

765-8356-224

6,500

Rosa Gmez

13 sur ote 383

675-4567-211

13,200

Juan Lopez

Calle Amapolas 10

978-5976-435

12,100

El smbolo * se puede utilizar para denotar todos los atributos.


tambin puede contener expresiones aritmticas que contengan
los operadores +, -, * y / operando sobre constantes o atributos de
las tuplas.

Select salario * 0.15 from Datos

20/05/2010

Prcticas

Escriba las siguiente consultas:


Seleccionar

a los alumnos que se encuentren inscritos


en el segundo ciclo.
Seleccionar el nombre y direccin de los alumnos,
concatenando la direccion con el siguiente formato:
direccion , Poblacion.
Seleccionar nombre y numero de hermanos de los
alumnos, agregando despus del numero del campo,
la palabra hermano(s).
Seleccione el tipo de materia, de la tabla materias,
mostrando nicamente los valores nicos.

where

Especifica una condicin de bsqueda para restringir el nmero de filas


devueltas.
Restringe el nmero de filas devueltas en el conjunto de resultados
mediante el uso de predicados.
Puede utilizar las conectivas and, or y not. Las expresiones que
contengan pueden tener operadores de comparacin.
Tambin se puede emplear el operador de comparacin between para
simplificar las clausulas where

select nombre,salario from Datos where


salario between 4000 and 6000

20/05/2010

Renombramiento

SQL proporciona un mecanismo para renombrar


tanto relaciones como atributos. Para ello utiliza la
clausula as
La clausula as puede aparecer tanto en el select
como en el from

select salario * 0.10 as ISR from Datos

select salario * 0.10 as ISR from Datos as


datitos where datitos.salario >6000

Operaciones sobre cadenas

SQL especifica las cadenas encerrndolas entre comilla simple.

La operacin mas empleada sobre cadenas es el encaje de patrones, para el que


se usa el operador like. Para la descripcin de patrones, se utilizan los 2
caracteres especiales:

% : encaja con cualquier subcadena

_ : encaja con cualquier carcter


select nombre from Datos where
nombre like 'Juan%'

select nombre from Datos where nombre like 'J_'

20/05/2010

Orden de la presentacin de tuplas

SQL ofrece control sobre el orden en que se presentan las


tuplas de una relacin utilizando la clausula order by.
Para especificar el tipo de ordenacin se puede incluir la
clausula desc para orden descendente y asc para
ascendente.
Adems, se puede ordenar con respecto a mas de un
atributo.
select nombre, salario from Datos where
select nombre, salario from Datos where
nombre like 'J%' order by nombre desc,salario
nombre like 'J%' order by nombre desc
desc

Prcticas

Seleccionar a los alumnos que tengan hermanos


Seleccionar a los alumnos que tengan hermanos y se encuentren en el primer
ciclo
Seleccionar a los alumnos que este cursando la materia de Dibujo.
Seleccionar las materias que sean de modalidad u optativas.
Seleccionar a los alumnos que no se encuentren en primer nivel
Seleccionar a los alumnos que tengan de 1 a 2 hermanos cursando el segundo
ciclo.
Seleccionar a los alumnos que tengan como apellido GARCA y que estn en el
nivel 1 del primer ciclo.
Mostrar a los alumnos del ejercicio anterior ordenados por poblacin de
forma descendente.
Seleccionar a los alumnos cuyo primer apellido comience con M del segundo
ciclo y que no tengan hermanos.
Seleccionar las materias optativas ordenadas de forma ascendente, indicando
el nombre de los alumnos inscritos.

20/05/2010

Operaciones sobre conjuntos

Las operaciones de SQL union, intersect y except


operan sobre relaciones y se corresponden con las
operaciones del algebra relacional.
Al igual que la unin, interseccin y la diferencia
del algebra relacional, las relaciones que participan
han de ser compatibles, es decir, deben tener el
mismo conjunto de atributos.

union

Nos permite unir los resultados de


varias consultas.
Elimina los valores duplicados.
Si se desean conservar todos los
duplicados, es necesario escribir union
all

select nombre from


datos
union
select nombre from
datosexternos

select nombre from


datos
union all
select nombre from
datosexternos

20/05/2010

intersect

Muestra los valores que se


encuentran en ambos lados de la
consulta.

select nombre from datos


intersect
select nombre from datosexternos

except

Muestra los valores que se


encuentran en la primera
consulta, pero no estn en
la segunda.

select nombre from datos


Except
select nombre from
datosexternos

20/05/2010

Funciones de agregacin

Son funciones que toman una coleccin (un conjunto o


multiconjunto) de valores de entrada y devuelven un
solo valor. Las 5 funciones de agregacin son:
Promedio (avg): aplicable a valores numricos, calcula el promedio
de los valores obtenidos
Mnimo (min): retorna el menor elemento no nulo dentro de las
tuplas para ese atributo
Mximo (max): retorna el mayor elemento no nulo dentro de las
tuplas para ese atributo
Total (sum): aplicable a valores numricos, realiza la suma
matemtica
Cuenta (count): cuenta las tuplas resultantes.

Avg,min,max

select avg(salario) from datos where salario>5000

select min(salario) from datos where salario>5000

select max(salario) from datos where salario>5000

20/05/2010

Sum, count

select sum(datos.salario)+ sum(datosexternos.salario)

from datos,datosexternos

where datos.nombre like 'Juan%' and datos.nombre=datosexternos.nombre

select nombre,count(salario) as NoSalarios


from datos
group by nombre

Group by, having

La clausula group by nos sirve para formar grupos de tuplas con el mismo valor.

Para establecer condiciones a las agrupaciones creadas con group by, utilizamos la clausula
having.

Si en la misma consulta aparecen where y having, primero se aplica el criterio de where y


sobre esas tuplas, se aplica el criterio de having.
select datos.nombre,sum(datos.salario)+ sum(datosexternos.salario)
from datos,datosexternos
where datos.nombre like 'Juan%' and datos.nombre=datosexternos.nombre
group by datos.nombre

select D.nombre, sum(D.salario)+ sum(DE.salario)


from Datos as D, DatosExternos as DE
where D.nombre=DE.nombre
group by D.nombre
having D.nombre not like '%Juan%'

10

20/05/2010

Valores nulos

SQL permite el uso de valores


nulos para indicar la ausencia
de valor.
Para hacer esto, emplea la
palabra null. El predicado is not
null comprueba la ausencia de
valores nulos.

select nombre, direccion


from Datos
where telefono is null

select nombre, salario


from Datos
where direccion is not null and salario<5000

Prcticas I

Seleccionar a todos los alumnos de primer ciclo y calcular el


promedio de cada uno de todas las materias.
Contar el numero de alumnos que hay inscritos por materia
Buscar a los alumnos que tienen mas materias cursadas.
Sumar el numero de hermanos que tienen todos los alumnos
Buscar al alumno con al ms bajo promedio del segundo ciclo
Buscar al alumno con el promedio mas alto de toda la
institucin.
Buscar a los alumnos con los promedios mas altos de cada nivel
Contar el numero de materias por tipo.
Listar los promedios de los alumnos del segundo ciclo del
promedio mas alto al mas bajo
Contar a los alumnos con la misma calificacin en informtica

11

20/05/2010

Prcticas II

Contar al numero de alumnos por turno

Promediar las calificaciones de los alumnos por turno

Listar los alumnos con promedio aprobatorio del nivel 2 en orden descendente

Contar a los alumnos reprobados y aprobados del nivel 3

Unir con una consulta a los alumnos de primer ciclo nivel 1, con los alumnos de
primer ciclo nivel2.

Seleccionar a los alumnos del primer ciclo que no estn cursando lenguas.

Contar a los alumnos que cursan dibujo, pero no cursan informtica.

Contar cuantos alumnos sin hermanos hay en toda la institucin, agrupndolos


por nivel.

Contar a los alumnos por poblacin de origen. Incluir el calculo de su promedio.

Calcular el promedio de los alumnos que tengan como en algn apellido Garca.

Subconsultas anidadas

Una sub consulta es una sentencia SELECT que es


incrustada en una clusula de otra sentencia SQL,
llamada sentencia padre.
La sub consulta (consulta interna) obtiene un valor
que es usado por la sentencia padre. Usar una sub
consulta anidada es equivalente a ejecutar dos
consultas secuenciales y utilizar el resultado de la
consulta interna como valor de bsqueda en la
consulta externa (consulta principal).

12

20/05/2010

Subconsultas anidadas

Las sub consultas pueden ser usadas para los siguientes propsitos:
Proveer valores para condiciones en clusulas WHERE, HAVING y
START WITH de sentencias SELECT
Definir el conjunto de filas a ser insertadas en una tabla de una
sentencia INSERT o CREATE TABLE
Definir el conjunto de filas a ser incluidas en una vista o snapshot en
una sentencia CREATE VIEW o CREATE SNAPSHOT
Definir uno o ms valores para ser asignados a filas existentes en una
sentencia UPDATE
Definir una tabla para ser operada por el contenido de una consulta.
(Esto se hace colocando la sub consulta en la clusula FROM. Esto
puede hacerse tambin en sentencias INSERT, UPDATE y DELETE.

Nota: Una sub consulta es evaluada en una ocasin para toda la


sentencia Padre.

Subconsultas anidadas

Se pueden construir sentencias poderosas utilizando sub consultas. Las sub


consultas pueden ser muy tiles cuando necesites seleccionar filas de una
tabla con una condicin que dependa de los datos de la misma u otra tabla.
Las sub consultas son muy tiles para escribir sentencias SQL que necesiten
valores de un o ms valores condicionales desconocidos.

Donde:
operator incluye un operador de comparacin como >, = o IN

Nota: los operadores de comparacin se encuentran en dos clases:


operadores de fila nica (>, =, >=, <, <>, <=) y operadores de mltiples filas
(IN, ANY, ALL)

Las sub consultas son a menudo referidas como sentencias SELECT anidadas,
sub-SELECT, o SELECT internos.

Las consultas internas y externas pueden recuperar datos de la misma tabla o


de tablas diferentes.

13

20/05/2010

Ejemplo de una subconsulta sencilla


Datos

Datos Externos

select nombre,salario
from Datos
where salario>(select min(salario)
from DatosExternos)

Subconsultas de mltiples columnas

El ejemplo anterior nos muestra una sub consultas de filas nicas


donde solo una columna es obtenida por la sentencia SELECT
interna y estas son usadas para evaluar la expresin en la
sentencia SELECT padre.
Si quieres comparar dos o ms columnas, debemos escribir una
clusula WHERE compuesta usando operadores lgicos. El uso de
subconsultas de mltiples columnas, puede combinar condiciones
WHERE duplicadas en una simple clusula WHERE.

14

20/05/2010

Subconsultas de mltiples columnas


Datos

Datos Externos

select nombre,direccion
from Datos
where nombre IN (select nombre
from DatosExternos
where nombre like '%J%')

Subconsultas con ANY, SOME,ALL

Los operadores de comparacin que presentan una subconsulta se


pueden modificar mediante las palabras clave ALL o ANY. SOME es un
equivalente del estndar de SQL-92 de ANY.

Las subconsultas presentadas con un operador de comparacin


modificado devuelven una lista de cero o ms valores. Pueden incluir
GROUP BY o HAVING.

Para que una fila de una subconsulta con >ALL satisfaga la condicin
especificada en la consulta externa, el valor de la columna que presenta
la subconsulta debe ser mayor que cada valor de la lista de los valores
devueltos por la subconsulta.

De forma parecida, >ANY significa que, para que una fila satisfaga la
condicin especificada en la consulta externa, el valor de la columna que
presenta la subconsulta debe ser mayor que, como mnimo, uno de los
valores de la lista devuelta por la subconsulta.

15

20/05/2010

Ejemplo

select nombre,salario
from datos
where id =any (select idusuario
from contactos
where origenusuario=0)

Ejemplo
Datos

Datos Externos

select Nombre,salario
from Datos
where salario >all(select salario
from DatosExternos
where salario<10000 )

16

20/05/2010

Subconsultas con EXISTS o NOT EXISTS

Cuando una subconsulta se especifica con la palabra


clave EXISTS, funciona como una prueba de existencia.
La clusula WHERE de la consulta externa comprueba
la existencia de las filas devueltas por la subconsulta.
En realidad, la subconsulta no produce ningn dato,
devuelve el valor TRUE o FALSE.
Una subconsulta que se especifica con EXISTS tiene la
sintaxis siguiente:
WHERE [NOT] EXISTS (subquery)

Ejemplo

select nombre from Datos


where exists (select contactos.idusuario
from Contactos,datos
where contactos.idusuario=3
and contactos.idusuario=datos.id)

select nombre from Datos


where exists (select
contactos.idusuario
from Contactos,datos
where contactos.idusuario=2
and contactos.idusuario=datos.id)

17

20/05/2010

Subconsultas usadas en lugar de una


expresin

En Transact-SQL, una subconsulta se


puede usar all donde se pueda usar una
expresin en las instrucciones SELECT,
UPDATE, INSERT y DELETE, excepto en
una lista ORDER BY.

Ejemplo
Datos

Datos Externos

select datos.nombre, salario - (select min(salario) from datosexternos)


as difSalarioMasPequeo
from datos

18

20/05/2010

Prcticas

Realice las prcticas de las diapositivas 22 y 23


utilizando los diferentes tipos de subconsultas
revisados.

19

You might also like