1. TEÓRICO - PALABRAS RESERVADAS SQL
En SQL no trata a las relaciones como conjuntos, ya que puede haber tuplas repetidas en una
relación o en el resultado de una consulta.
¿Por qué SQL no elimina las tuplas repetidas?
• Es posible que el usuario desee ver las tuplas repetidas en el resultado de una
consulta.
• La eliminación de duplicados es una operación costosa, ya que se deben ordenar
primero las tuplas para después eliminar las que están repetidas.
• Cuando se aplica una función agregada a tuplas, en la mayoría de los casos no
querremos eliminar los resultados.
Si queremos eliminar las tuplas repetidas del resultado de una consulta SQL, se usará la
palabra reservada DISTINCT en la cláusula SELECT, para indicar que sólo se mantengan las
tuplas distintas en el resultado.
CONSULTA:
Obtener el salario de todos los empleados
SELECT SALARIO
FROM EMPLEADO
Si sólo nos interesan los valores de salario diferentes
SELECT DISTINCT SALARIO
FROM EMPLEADO
FUNCIONES AGREGADAS EN SQL
SUM (suma), MAX(máximo), MIN(mínimo), AVG(promedio) y COUNT(cuenta)
Las funciones SUM, MAX, MIN, AVG, se aplican a un conjunto o multiconjuntos de valores
numéricos y devuelven, respectivamente, la suma, el valor máximo, el valor mínimo y el
promedio de esos valores. Se utilizan en la clausula SELECT
CONSULTA:
Obtener la suma de los salarios de todos los empleados, el salario máximo, el salario mínimo
y el salario medio.
SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO), AVG(SALARIO)
FROM EMPLEADO
CONSULTA:
Obtener el total de empleados de la compañía
SELECT COUNT (*)
FROM EMPLEADO
Nota: El asterisco (*) se refiere a las filas (tuplas) así que COUNT(*), devuelve el número de
filas en el resultado de la consulta. También se puede hacer con columnas.
2. CONSULTA:
Contar el número de valores de salario de la base de datos
SELECT COUNT (SALARIO)
FROM EMPLEADO
Consultas anidadas
Es aquella que sirve para especificar una condición dentro de una nueva consulta que
quedará anidada con la primera.
CONSULTA:
Obtener los nombres de todos los empleados que tienen dos o más dependencias
SELECT APELLIDO, NOMBRE
FROM EMPLEADO
WHERE (SELECT COUNT(*)
FROM DEPENDIENTE
WHERE NSS=NSSE)>= 2