Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Lenguaje de consulta estructurado
SUBQUERIES OPERADORES DE COMPARACIÓN
2
Introducción Un subquery es una expresión select-from-where que se encuentra anidada en otro query. En las cláusulas WHERE y HAVING el uso de subqueries es permitido cuando se espera un valor. En este caso el valor debe obtenerse evaluando el subquery primero.
3
Comparaciones: > Supongamos que queremos conocer todos los peces que pesan más que el pez llamado fran, pero no podemos saber fácilmente cuanto pesa fran. SELECT fnombre, fpeso FROM fish WHERE fpeso > (SELECT fpeso FROM fish WHERE fnombre = 'fran');
4
Comparaciones: = Encontrar los nombres de los peces cuyo color sea igual al de flipper. select f.fnombre, fcolor from fish f where f.fcolor = (select f.fcolor where f.fnombre = 'flipper');
5
from species s, fish f, tank t where s.snum=f.snum and f.tnum=t.tnum
OBTENER NOMBRE DE ESPECIE y NUM DE TANQUE DE LOS QUE NADAN EN UN TANQUE ROJO (ES UN EJEMPLO DEMOSTRATIVO, se puede sin subqueries) select s.snombre, t.tnum from species s, fish f, tank t where s.snum=f.snum and f.tnum=t.tnum and t.tnum = (select t.tnum from tank t where tcolor= 'rojo' );
6
Comparaciones continuación
Además de los operadores relacionales, en la cláusula WHERE podemos utilizar la comparación >some(all), <some(all), <=some(all), >=some(all) y <> . Por ejemplo: obtener los nombres de los peces del tanque 38 que pesen más que alguno de los peces del tanque 55: En el tanque 38 están jill de 28 y keiko de 580 En el tanque 55 están albert de 45, fran de 61 y kilroy de 49. Solo keiko cumple con esta condición
7
SELECT fnombre FROM fish WHERE tnum = 38 and fpeso > SOME
(SELECT fpeso FROM fish WHERE tnum = 55); fnombre keiko (1 fila)
8
UPDATE fish SET fpeso=46 WHERE fnombre = 'jill';
Hacer un UPDATE y cambiarle el peso a jill de 28 a 46. Ahora si, jill pesa más que alguno de los peses del 55 (albert pesa 45) UPDATE fish SET fpeso=46 WHERE fnombre = 'jill'; Volver a hacer el query anterior SELECT fnombre FROM fish WHERE tnum = 38 AND fpeso > SOME (SELECT fpeso FROM fish WHERE tnum = 55); fnombre keiko jill (2 filas) -Volver a dejar a jill en 28 en fpeso, (UPDATE).
9
ALTER y UPDATE ALTER TABLE instructor ADD COLUMN qsueldo NUMERIC(7,1);
\d instructor UPDATE instructor SET qsueldo= ; UPDATE 5
10
tinestri=> SELECT * FROM instructor;
inum | inombre | cid | qsueldo 2 | Karen | usa | 3 | Giny | fra | 4 | Bill | usa | 5 | Roy | mex | 1 | Carlos | mex | (5 filas)
11
Tipo de dato: numeric(precision, scale)
El tipo de dato numeric tiene dos parámetros: precision: es el número total de dígitos que puede tener la cantidad scale: dígitos a la derecha del punto decimal En el ejemplo redondea el salario a un dígito
12
ALTER TABLE: para cambiar el tipo de dato o para eliminar una columna
ALTER TABLE instructor ALTER COLUMN qsueldo type numeric(7,2); ALTER TABLE Si queremos borrar la columna completa: ALTER TABLE instructor DROP COLUMN qsueldo;
13
Podemos actualizar cada registro para que guarde el salario correspondiente
UPDATE instructor SET qsueldo= WHERE inum=1; UPDATE instructor SET qsueldo= WHERE inum=2; UPDATE instructor SET qsueldo= WHERE inum=3; UPDATE instructor SET qsueldo= WHERE inum=4; UPDATE instructor SET qsueldo= WHERE inum=5; tinestri=> select * from instructor; Probemos esta instrucción UPDATE instructor SET qsueldo= WHERE inum=5; ERROR: numeric field overflow DETAIL: A field with precision 7, scale 2 must round to an absolute value less than 10^5. (100,000.00) Ahora probemos con: UPDATE instructor SET qsueldo= WHERE inum=5; UPDATE 1
14
Eliminar una columna de la cual dependen otra(s) columna(s)
En el ejercicio anterior pudimos borrar una columna con ALTER TABLE, esto fue posible debido a que no se trataba de una llave primaria de la cual dependa una llave foránea, Tratemos la siguiente instrucción ALTER TABLE species DROP column snum; ERROR: cannot drop table species column snum because other objects depend on it
15
Eliminar un renglón en una tabla
No podemos eliminar un renglón cuya llave primaria está referenciada por una llave foránea en otra tabla DELETE FROM tank WHERE tnum=55; ERROR: update or delete on table "tank" violates foreign key constraint "fish_tnum_fkey" on table "fish" DETAIL: Key (tnum)=(55) is still referenced from table "fish". Pero por ejemplo si insertamos: INSERT INTO tank VALUES(200, 'alberca', 'azul', 550); Tratemos de borrar este renglón DELETE FROM tank WHERE tnum=200; ¿Porque este renglón de la misma table tank si lo borró?
16
En las funciones de agregación no pueden formarse funciones compuestas (anidadas). Por ejemplo, no podemos usar max(avg(…)). En estos casos una de las funciones de agregación se pone en el query “superior” y la otra en el query “anidado” y ambos se ligan con >some, >all, >, etc.
17
Actividad 1.- Obtener el peso máximo del pez de entre los peces que nadan en los tanques llamados río, pero que a su vez, el peso sea menor que el peso promedio de los peces del tanque charco. Antes de hacer el query, viendo las tablas: ¿Cuál es el promedio de los peces que nadan en charco? (51.67). ¿Cuál es el resultado del query?. 2. El mismo que este ejercicio pero obteniendo el nombre y el peso.
18
SELECT MAX(fpeso) FROM fish f, tank t WHERE f. tnum = t
SELECT MAX(fpeso) FROM fish f, tank t WHERE f.tnum = t.tnum AND tnombre = 'rio' AND fpeso < (SELECT AVG(fpeso) FROM fish f, tank t WHERE tnombre ='charco' AND f.tnum = t.tnum); max (1 fila) SELECT fnombre, fpeso FROM fish f WHERE fpeso = (SELECT MAX (fpeso) FROM fish f, tank t WHERE f.tnum = t.tnum AND tnombre = 'rio' AND fpeso < (SELECT AVG(fpeso) FROM fish f, tank t WHERE tnombre ='charco' AND f.tnum = t.tnum)); fnombre | fpeso bonnie | 51
19
Ejercicios 1.Cuales son los peces que pesan lo mismo que cory?
2.Obtener el salario de los entrenadores mexicanos que ganan más que el promedio de los entrenadores de estados unidos. 3.Obtener el sueldo del entrenador que gane más, pero que su sueldo sea menor que el de todos los entrenadores que entrenan a los peces del tanque playa 4.Obtener el sueldo del entrenador que gane más, pero que su sueldo sea menor que el de alguno de los entrenadores que entrenan a los peces del tanque playa 5. Cual es el nombre y el sueldo del entrenador que más gana 6. El número 4 pero obteniendo el nombre del entrenador y su sueldo….
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.