03 - ConsultasSQL Parte 1
03 - ConsultasSQL Parte 1
03 - ConsultasSQL Parte 1
Base de Datos 2
0
2
Tema 3: Consultas SQL - Parte 1 0
Lenguaje de Consulta SQL
✓ La sentencia del lenguaje empleada para la recuperación de los
datos a partir de las tablas cargadas en la base de datos es el
SELECT.
✓ La sentencia básica es:
● Por ejemplo:
SELECT mi_atributo
FROM mi_tabla;
DERE del Esquema de
Voluntarios
4
Consultas SQL Básicas
Selección de todas las columnas.
Ejemplo: selección de los datos completos de las
instituciones. SELECT * Se usa para
FROM esq_vol_institucion; especificar la
recuperación de
todos los datos de
la/s tabla/s
27 fila(s)
Tiempo total de
ejecución: en
milisegundos
SQL ejecutada.
Consultas SQL Básicas
Selección SÓLO de algunas columnas.
Ejemplo: seleccionar el código y el nombre de las
instituciones.
SELECT id_coordinador
FROM esq_vol_voluntario;
…
SELECT DISTINCT id_coordinador
FROM esq_vol_voluntario;
Eliminar Valores Repetidos
La cláusula DISTINCT se aplica a todas las
columnas de la lista en el SELECT
Ejemplo: Seleccionar los voluntarios
coordinadores y las distintas instituciones
de los empleados coordinados
9
Uso de operadores Aritméticos
✓ Una expresión aritmética puede contener nombres de
columnas, valores numéricos constantes y operadores
aritméticos
13
Restringir las Filas Recuperadas
SELECT * SELECT *
FROM voluntario FROM voluntario
WHERE id_tarea= 'ST_MAN'; WHERE id_tarea != 'ST_MAN';
Otros Operadores de
Comparación
✓ Además de los operadores de comparación está
disponible un operador especial [NOT] BETWEEN :
✓ BETWEEN trata a los valores de los extremos incluidos
dentro del rango.
• BETWEEN x AND y es equivalente a a >= x AND a <= y
• NOT BETWEEN x AND y es equivalente a a < x OR a > y
Ejemplo: Seleccionar las voluntarios cuyo número se
encuentra entre 100 y 120
20
Operador IS [NOT] NULL
✓ Si una columna en particular carece de un valor se dice que
contiene un NULL.
✓ NULL es un valor inaccesible, sin valor, desconocido o inaplicable.
✓ No representa ni un cero ni un espacio en blanco (el cero es un
número y el espacio en blanco es un carácter). SOLO testean
valores que son nulos.
Ejemplo: listar los datos completos de los voluntarios que no
tengan coordinador.
SELECT nro_voluntario,
apellido,
id_institucion,
id_coordinador
FROM voluntario
WHERE (id_coordinador=100
OR id_coordinador=124)
AND id_institucion=50;
Importante:
-Indentar las cláusulas
-Uso de paréntesis en las condiciones
Qué sucede si se eliminan ()?
...Al eliminar el ()
Estas filas no
corresponden a la
institución cuyo
identificador es 50!!
No es válida la
consulta sin los
paréntesis en la
condición!!!
Ejercicios 4
1. Cuales son los voluntarios nacidos entre 1988 y 1995?
2. Cuales son los voluntarios con nombre David o con
apellido Smith y que realicen la tarea SA_REP?
27
Orden de Presentación
de los Registros
● El orden de las filas listadas en una consulta es indefinido.
SELECT *
FROM voluntario
ORDER BY nro_voluntario
LIMIT 10;
LIMIT y OFFSET (POSTGRESQL)
SELECT *
FROM voluntario
ORDER BY nro_voluntario
LIMIT ALL
OFFSET 15;
Ejercicios 5
1. Cuales son los 10 voluntarios mayores?
2. En orden alfabético quienes son los 5 primeros
voluntarios de la institución 80?
33
¿Qué son Funciones de Grupo
o Agregación?
Estas funciones operan sobre conjuntos de filas para
proporcionar un resultado por grupo.
Cantidad de
horas aportadas
por todos los
voluntarios
…
Funciones de Grupo
Permiten resumir el resultado de una consulta:
•SUM( ) → sumatoria de la columna especificada
•AVG( ) → promedio de la columna especificada
•STDDEV() → desvío estándar de la columna especificada
•MAX( ) → valor máximo de la columna especificada
•MIN ( ) → valor mínimo de la columna especificada
•COUNT ( ) → cantidad de tuplas
SELECT COUNT(*)
FROM voluntario;
SELECT AVG(porcentaje) AS
porcentaje_promedio
FROM voluntario;
Funciones de Grupo y
Valores Nulos
La función COALESCE(columna, valor_reemplazo) en
POSTGRESQL fuerzan a las funciones de grupo a que
incluyan valores nulos, retornando un valor en ocurrencia de
un nulo.
¿Cuántos
voluntarios
tiene cada
Institución?
…
Sintaxis de la Cláusula
GROUP BY
Todas las columnas de la lista SELECT, excepto las
funciones de grupo, deben estar en la cláusula GROUP
BY
Ejemplo: liste las diferentes instituciones y el máximo de horas
aportadas a cada una de ellas
SELECT AVG(porcentaje)
FROM voluntario
GROUP BY id_institucion;
Ejercicios 6
45
Restringir los Resultados
de los Grupos
Se puede anexar la cláusula HAVING para restringir grupos
a. Las filas se agrupan por la/s columnas especificada/s
b. Se aplica la función de grupo
c. Se muestran los grupos que satisfacen la cláusula HAVING
Coordinadores
con más de 7
voluntarios
Funciones de Grupo NO Válidas
✓ No se puede utilizar la cláusula WHERE para restringir
grupos
✓ Se debe utilizar la cláusula HAVING para restingir grupos.
No se pueden utilizar funciones de grupo en la cláusula
WHERE
SELECT id_coordinador, COUNT(*) AS
cantidad_de_voluntarios
FROM voluntario
WHERE COUNT(*) >7
GROUP BY id_coordinador;
Sentencia NO VALIDA
47
Ejercicios 7
1. Cuales son las tareas que tienen más de 10
voluntarios?
2. Cual es el promedio de horas aportadas por tarea?
48
Para Recordar!!!!
● La sentencia SQL empleada para la recuperación de los
datos a partir de las tablas cargadas en la base de datos
es el SELECT