Plantilla:PHP/SQL select
De WikiEducator
Revisión a fecha de 22:17 14 may 2018; ManuelRomero (Discusión | contribuciones)
Contenido
SELECT
- Esta es una claúsula especial a la que le vamos a dedicar bastante tiempo.
- Consiste en hacer consultas de nuestro conjunto de datos y poder recuperarlos.
- La cantidad de consultas que se pueden realizar es muy grande y variado, siempre que se pueda establecer la consulta y la lógica matemática de su resolución, va a haber una sentencia SQL que permita implementarla.
Esta sentencia que empieza por la claúsual SELECT va a terner hasta 5 posibles claúsulas, de las cuales solo son obligatorias las dos primeras
SELECT FROM
Las 5 posibles que estudaremos son
SELECT FROM WHERE GROUP BY HAVING (ORDER BY)
|
- Usando el álgebra relacional y permite recuperar un subconjunto de los datos de la base de datos.
- Esta sentencia devuelve un conjunto de tuplas como resultado de ejecutar la consulta.
- Las operaciones del algebra relacional son
- Proyecciones
- Selecciones
- Producto cartesiano
- Join
Claúsula Select
- Uso de funciones
- Podemos usar funciones sobre todas las filas y obtener el resultado.
- Algunas funciones típicas son
- Funciones de carácter
- Descripción de las funciones
- Ejemplos
- Funciones con valores numércios
- Funciones con fechas
Funciones de agregación o grupo
- Son funciones que se aplican a un conjunto de valores de diferentes filas
- Nos darán como resultado un sólo valor
- Conviene renombrar la columna
From
- Esta es una operación de un producto cartesiano
- El producto cartesiano consiste en juntar todas las tuplas de una relación con cada una de las tuplas de otra
- Genera gran cantidad de información, por ese motivo los gestores de bases de datos intentan hacerlo lo último
- En el from además de una relación o tabla, puede ir cualquier cosa que me devuelva una relación, incluso una consulta
Where
- La claúsura where establece la operación de selección.
- Es decir de todas las filas, indica cuales son las que queremos seleccionar.
- En esta claúsura, utiliza operadores de comparación para establecer el criterio de las filas seleccionadas
Ejercicios de agrupación
SELECT d.department_id, d.department_name, d.location_id, COUNT(e.employee_id) FROM employees e RIGHT OUTER JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_id, d.department_name, d.location_id; SELECT e.job_id, COUNT(e.job_id) FREQUENCY FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name IN ('Administration', 'Executive') GROUP BY e.job_id ORDER BY FREQUENCY DESC; SELECT d.department_id, d.department_name, COUNT(e1.employee_id) employees, NVL(TO_CHAR(AVG(e1.salary), '99999.99'), 'No average') avg_sal, e2.last_name, e2.salary, e2.job_id FROM departments d RIGHT OUTER JOIN employees e1 ON d.department_id = e1.department_id RIGHT OUTER JOIN employees e2 ON d.department_id = e2.department_id GROUP BY d.department_id, d.department_name, e2.last_name, e2.salary, e2.job_id ORDER BY d.department_id, employees;
SELECT d.department_id, d.department_name, COUNT(*) FROM departments d JOIN employees e ON d.department_id = e.department_id GROUP BY d.department_id, d.department_name HAVING COUNT(*) < 3;
SELECT d.department_id, d.department_name, COUNT(*) FROM departments d JOIN employees e ON d.department_id = e.department_id GROUP BY d.department_id, d.department_name HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM employees GROUP BY department_id);
SELECT d.department_id, d.department_name, COUNT(*) FROM departments d JOIN employees e ON d.department_id = e.department_id GROUP BY d.department_id, d.department_name HAVING COUNT(*) = (SELECT MIN(COUNT(*)) FROM employees GROUP BY department_id); SELECT e.employee_id, e.last_name, e.department_id, e.salary, AVG(s.salary) FROM employees e JOIN employees s ON e.department_id = s.department_id GROUP BY e.employee_id, e.last_name, e.department_id, e.salary;
|
Ejercicios con subconsultas
{{{1}}}
|