Tipos de Sentencias:
- SENTENCIAS SELECT
- SENTENCIAS AGGREGATE
- SENTENCIAS UPDATE
- SENTENCIAS DELETE
Seguimos aprendiendo sobre el resto de sentencias que podemos encontrarnos: Aggregate, Update y Delete
SENTENCIAS AGREGADAS
CLÁUSULA SELECT
Se pueden utilizar 5 funciones agregadas en la cláusula SELECT AVG, COUNT, MAX, MIN, and SUMAVG Calcula la media del valor de un campo sobre el grupo. El tipo del campo debe ser numérico y el resultado será un DoubleCOUNT sirve para contar cuantos elementos hay sobre el grupo. Puede añadirse la palabra reservada DISTINCT para que elimine los valores duplicados antes de contar
SELECT e, COUNT(p), COUNT(DISTINCT p.type)MAX Calcula el valor máximo de un campo sobre el grupoMIN Calcula el valor mínimo de un campo sobre el grupo
FROM Employee e JOIN e.phones p
GROUP BY e
SUM Calcula la suma de valores de un campo sobre el grupo
CLÁUSULA GROUP BY
Define la expresión de agrupación sobre la cual los resultados serán agregados.Debe ser una expresión de valor único como un campo o una entidadSELECT d.name, COUNT(e)
FROM Department d JOIN d.employees e
GROUP BY d.name
Se pueden aplicar varias agregaciones en la misma consulta
SELECT d.name, COUNT(e), AVG(e.salary)
FROM Department d JOIN d.employees e
GROUP BY d.name
CLÁUSULA HAVING
Define un filtro que será aplicado después de que los resultados de la consulta han sido agrupados. Se puede considerar como una segunda cláusula de filtro que permite a su vez el uso de funciones agregadas
SELECT e, COUNT(p)
FROM Employee e JOIN e.projects p
GROUP BY e
HAVING COUNT(p) >= 2
El ejemplo recupera todos los empleados asignados a 2 o más proyectos
SENTENCIAS UPDATE
Son equivalentes a los SQL Update y las usaremos para actualizar las propiedades de nuestras entidades.La cláusula WHERE es equivalente a la de las consultas SELECTSe pueden actualizar varias propiedades en una única sentenciaSu estructura es la siguiente:UPDATE entity_name [[AS] identification_variable]
SET update_statement {, update_statement}*
[WHERE conditional_expression]
UPDATE Phone p
SET p.number = CONCAT('288', SUBSTRING(p.number, LOCATE(p.number, '-'), 4)),
p.type = 'Business'
WHERE p.employee.address.city = 'Ottawa' AND
p.type = 'Office'
La anterior sentencia modifica los números de teléfono y tipo de los empleados de la ciudad de Otawa
SENTENCIAS DELETE
Son equivalentes a los SQL DELETE y las usaremos para eliminar entidades. Su estructura es la siguiente:DELETE FROM entity_name [[AS] identification_variable]
[WHERE condition]
DELETE FROM Employee e
WHERE e.department IS NULL
La cláusula WHERE es equivalente a la de las consultas SELECT. Sino se especifica todas las entidades del tipo indicado serán eliminadas