Tipos de Sentencias:
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 SUM
AVG Calcula la media del valor de un campo sobre el grupo. El tipo del campo debe ser numérico y el resultado será un Double
COUNT 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) FROM Employee e JOIN e.phones p GROUP BY e
MAX Calcula el valor máximo de un campo sobre el grupo
MIN Calcula el valor mínimo de un campo sobre el grupo
SUM Calcula la suma de valores de un campo sobre el grupo
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 entidad
SELECT 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
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 SELECT
Se pueden actualizar varias propiedades en una única sentencia
Su 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
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
Continua aprendiendo…
En el siguiente artículo aprenderás sobre el API Criteria de JPA que nos permitirá construir sentencias de un modo más sencillo y mantenible gracias a las características propias del lenguaje Java
No hay comentarios:
Publicar un comentario