Partes: 1, 2

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

  • Promedios AVG
  • Mínimo MIN
  • Máximo MAX
  • Total SUM
  • Contar COUNT

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

 

9. Definición de datos

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:


Vargas Daniel Eduardo
daniedvargas[arroba]hotmail.com
Fundación de Computadoras Históricas
http://www.comsto.org

Partes: 1, 2


 Página anterior Volver al principio del trabajoPágina siguiente 

Comentarios


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.

Iniciar sesión

Ingrese el e-mail y contraseña con el que está registrado en Monografias.com

   
 

Regístrese gratis

¿Olvidó su contraseña?

Ayuda