5. Pruebas para relaciones vacías
La construcción EXISTS devuelve el valor TRUE si
la subconsulta del argumento no esta vacía, y la construcción NOT EXISTS devuelve TRUE si la
consulta es vacía.
Ejemplo 5.1 : encontrar todos los nombre y apellidos de la
relación persona si es que
en la relación jugadores existe un jugador con el numero
de dni 27128055
SELECT nombre, apellido
FROM persona
WHERE EXISTS
(SELECT dni
FROM jugadores
WHERE dni = 27128055 )
|
ANSWER |
NOMBRE |
APELLIDO |
Como el dni = 27128055 no existe en la relación jugadores, la condición es FALSE y por lo tanto la respuesta es vacía
6. Ordenación de la presentación de tuplas
SQL ofrece al usuario cierto control sobre el
orden en el que se va a presentar las tuplas en una
relación. La cláusula ORDER BY hace que las tupla
en el resultado dé una consulta en un orden
especifico.
Por omisión SQL lista los
elementos en orden ascendente. Para especificar el tipo de
ordenación, podemos especificar DESC para orden
descendente o ASC para orden ascendente.
También es posible ordenar los resultados por mas de una
atributo
Ejemplo 6.1 : encontrar todos los nombres y apellido de la
relación persona y ordenar los resultados por apellido y
nombre en forma descendente
SELECT apellido, nombre
FROM persona
ORDER BY apellido DESC, nombre DESC
|
ANSWER |
APELLIDO |
NOMBRE |
|
1 |
SERRAT |
JUAN |
|
2 |
SANCHEZ |
ROBERTO |
|
3 |
MUSACHEGUI |
BETANIA |
|
4 |
MICHELLI |
SOLEDAD |
|
5 |
MARQUESI |
PABLO |
|
6 |
MARQUESI |
MARTIN |
|
7 |
GUISSINI |
ESTEFANIA |
|
8 |
BRITTE |
SANDRA |
|
9 |
ARDUL |
MELISA |
|
10 |
ALEGRATO |
RUBEN |
Funciones de agregación
SQL ofrece la
posibilidad de calcular funciones en
grupos de
tuplas usando la cláusula GROUP BY, también incluye
funciones para
calcular
Para los próximos ejemplos incorporamos una nueva relación llamada PRO que representara los jugadores profesionales de fútbol, sus atributos serán dni, años_pro, club, valor_actual. Y los valores son los siguientes:
|
PRO |
DNI |
AÑOS_PRO |
CLUB |
VALOR_ACTUAL |
|
1 |
26125988 |
5 |
ALL BOY'S |
1000 |
|
2 |
25485699 |
2 |
ALL BOY'S |
2500 |
|
3 |
27126045 |
3 |
LANUS |
12000 |
|
4 |
26958644 |
4 |
LANUS |
6500 |
|
5 |
29120791 |
1 |
LANUS |
450 |
Ejemplo 6.2: determinar el valor total en
jugadores así como también la cantidad de jugadores
de cada club en la relación pro
SELECT club, SUM(valor_actual) AS VALOR_TOTAL,
COUNT(club) AS NRO_JUGADORES
FROM pro
GROUP BY CLUB
|
ANSWER |
CLUB |
VALOR_TOTAL |
NRO_JUGADORES |
|
1 |
ALL BOY'S |
3.500,00 |
2 |
|
2 |
LANUS |
18.950,00 |
3 |
Ejemplo 6.3: Determinar por cada club cual es el valor_actual del jugador mas caro de la relación pro
SELECT club, MAX(valor_actual) AS JUG_MAS_CARO
FROM pro
GROUP BY CLUB
|
ANSWER |
CLUB |
JUG_MAS_CARO |
|
1 |
ALL BOY'S |
2500 |
|
2 |
LANUS |
12000 |
Hay ocasiones en la que los duplicados deben eliminarse
antes de calcular una agregación. Cuando queremos eliminar
los duplicados del calculo usamos la palabra clave DISTINCT
antepuesto al atributo de agregación que queremos
calcular, como por ejemplo COUNT(DISTINCT club).
Hay ocasiones en las que es útil declara condiciones que
se aplican a los grupos mas que a
las tuplas. Para esto usamos la cláusula HAVING de
SQL.
Ejemplo 6.4: Determinar por cada club cual es el valor_actual del
jugador mas caro, pero con la condición de que este sea
mayor a 10000 de la relación pro
SELECT club, MAX(valor_actual) AS JUG_MAS_CARO
FROM pro
GROUP BY CLUB
HAVING MAX(valor_actual) > 10000
|
ANSWER |
CLUB |
JUG_MAS_CARO |
|
1 |
LANUS |
12000 |
Si en la misma consulta aparece una cláusula WHERE y una cláusula HAVING, primero se aplica el predicado de la cláusula WHERE, las tupla que satisfacen el predicado WHERE son colocadas en grupos por la cláusula GROUP BY. Después se aplica la cláusula HAVING a cada grupo.
7. Modificación de la base de datos
Eliminación
Una solicitud de eliminación se expresa casi de igual
forma que una consulta. Podemos suprimir solamente tuplas
completas, no podemos suprimir valores solo
de atributos.
DELETE FROM r
WHERE P
Donde P presenta un predicado y r representa una relación.
Las tuplas t en r para las cuales P(t) es verdadero, son
eliminadas
de r.
Si omitimos la cláusula WHERE se eliminan todas las tuplas
de la relación r ( un buen sistema
debería buscar confirmación del usuario antes de
ejecutar una acción tan devastadora )
Ejemplo 7.1 : Eliminar todas las tuplas de la relación
persona en donde apellido sea igual a "BRITTE"
DELETE FROM persona
WHERE apellido = "BRITTE"
|
deleted |
NOMBRE |
APELLIDO |
DNI |
|
1 |
SANDRA |
BRITTE |
25483669 |
Inserción
Para insertar datos en una
relación, especificamos una tupla que se va a insertar o
escribimos una consulta cuyo resultado es un conjunto de tuplas
que se van a insertar. La inserción de tuplas la
realizamos mediante las sentencias
INSERT INTO r1
VALUES (v1,v2,...,v)
Ejemplo 7.2 : Insertar una tupla con los mismos valores de la
tupla eliminada en el ejemplo anterior en la relación
persona.
INSERT INTO persona
VALUES ("SANDRA","BRITTE",25483669)
|
inserted |
NOMBRE |
APELLIDO |
DNI |
|
1 |
SANDRA |
BRITTE |
25483669 |
En este ejemplo, los valores se
especifican en el orden en que se listan los atributos
correspondientes en el esquema de relación. Para poder ingresar
los datos en un orden
diferente podríamos haber escrito
INSERT INTO persona(DNI, NOMBRE, APELLIDO)
VALUES (25483669,"SANDRA","BRITTE")
Actualizaciones
En ciertas ocasiones podemos desear cambiar los valores de una
tupla sin cambiar todos los valores en dicha tupla. Para este
propósito usamos la sentencia
UPDATE r1
SET A1 = V1, A2 = V2,...,An = Vn
WHERE P
Donde r1 es la relación Ai el atributo a modificar Vi el
valor que se le asignara a Ai y P es el predicado.
Ejemplo 7.3 : En la relación jugadores actualizar la
posición de los jugadores que posean la camiseta numero 5
y asignarles la camiseta numero 7.
UPDATE jugadores
SET nro_camiseta = 7
WHERE nro_camiseta = 5
|
updated |
DNI |
PUESTO |
NRO_CAMISETA |
|
1 |
25485699 |
MEDIO |
5 |
8. Valores nulos
Es posible que para las tuplas insertadas se den valores
únicamente a algunos atributos del esquema. El resto de
los atributos son asignados a valores nulos representados por
NULL. Para esto colocamos la palabra reservada NULL como valor
del atributo.
Ejemplo 7.4 : Insertar en la relación jugadores un jugador
con dni = 26356312, puesto = defensor, y al cual aun no le han
asignado un nro_camiseta.
INSERT INTO jugadores
VALUES(26356312,"DEFENSOR", NULL)
|
inserted |
DNI |
PUESTO |
NRO_CAMISETA |
|
1 |
26356312 |
DEFENSOR |
Creación
Una relación en SQL se define usando la orden
CREATE TABLE r(A1 D1, A2 D3,...,An Dn)
Donde r es el nombre de la relación, cada Ai es el nombre
de un atributo del esquema de la relación r y Di es el
tipo de dato de Ai. Una relación recién creada esta
vacía. La orden INSERT puede usarse para cargar la
relación
Ejemplo 9.1 : crear la relación lesionado con los
atributos nombre, apellido ambos de tipo char y tiempo_inhabilit
de tipo entero
CREATE TABLE "lesionado.db" (
NOMBRE CHAR(20),
APELLIDO CHAR(20),
TIEMPO_INHABILT INTEGER)
|
lesionado |
NOMBRE |
APELLIDO |
TIEMPO_INHABILT |
Eliminación
Para eliminar una relación usamos la orden DROP TABLE r,
esta orden elimina toda la información sobre la relación sacada
de la base de datos,
esta orden es mas fuerte que DELET FROM r ya que esta ultima
elimina todas las tuplas pero no destruye la relación,
mientras que la primera si.
Ejemplo 9.2 : eliminar la relación persona
DROP TABLE persona
Actualizacion
La orden ALTER TABLE se usa para añadir atributos a una
relación existente. A todas las tuplas en la
relación se les asigna NULL como valor de atributo. La
sintaxis de ALTER TABLE es la siguiente:
ALTER TABLE r1 ADD A1 D1
Ejemplo 9.3 : agregar los atributos de tipo char nombre y
apellido a la relación jugadores
ALTER TABLE jugadores ADD NOMBRE CHAR(20)
ALTER TABLE jugadores ADD APELLIDO CHAR(20)
Autor:
Página anterior | ![]() Volver al principio del trabajo | Página siguiente ![]() |
Trabajos relacionados
Ver mas trabajos de Programacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.
Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.
Ingrese el e-mail y contraseña con el que está registrado en Monografias.com