Informática Documental Consultas SQL SQL: Lenguaje de consulta (query) estructurado. Formato de una consulta de selección (SELECT): SELECT campos-seleccion FROM tablas; Cláusulas: 1. WHERE: Permite seleccionar únicamente las filas que cumplan una determinada condición. Formato: SELECT campos-seleccion FROM tablas WHERE condicion; Ejemplos: Mostrar los datos del alumno que tenga como DNI 78.901.234 en la tabla alumnos: SELECT * FROM alumnos WHERE DNI=’78901234’; Mostrar el nombre y apellido de los alumnos cuyo nombre comience por ‘Jon’: SELECT Nombre, Apellido FROM alumnos WHERE Nombre LIKE ’Jon%’; Operadores para condiciones: • • • • • • • • • • • = : igual <>: no igual > mayor, < menor, etc. OR, AND: para enlazar condiciones ( ): para agrupar condiciones y expresar el orden de evaluación IN: para establecer listas de valores BETWEEN: para establecer rangos de valores LIKE: para patrones especiales (con %, * o con _) DISTINCT: únicamente valores no repetidos NOT: niega la condición +, -, *, / : para establecer una condición calculada. Funciones de columna: • • • COUNT: da el número de valores, en lugar de los valores. SUM: da la suma de los valores (se tienen que poder sumar). AVG: da la media de los valores (se tiene que poder calcular). 1 • • MAX: da el valor máximo. MIN: da el valor mínimo. 2. ORDER BY: Permite especificar un determinado orden a la hora de mostrar los resultados de una consulta Formato: SELECT campos-selecccion FROM tablas WHERE condición ORDER BY campos-ordenacion {ASC|DESC}; Ejemplos: Mostrar una lista de los nombres y apellidos de los alumnos contenidos en la tabla “alumnos” ordenada por DNI de manera descendente: SELECT Nombre, Apellido FROM alumnos ORDER BY DNI DESC; Mostrar una lista de los alumnos que tengan un DNI superior a 70.000.000 contenidos en la tabla “alumnos” ordenada por DNI: SELECT * FROM alumnos WHERE DNI > 70000000 ORDER BY DNI; 3. GROUP BY / HAVING: Permite agrupar los resultados de una consulta en función de un conjunto de campos y finalmente seleccionar aquellos grupos que cumplan una determinada condición Formato: SELECT campos-selecccion FROM tablas WHERE condición GROUP BY campos-agrupacion HAVING condicion-agrupacion ORDER BY campo-ordenacion {ASC|DESC}; Ejemplo: Mostrar una lista, ordenada por DNI, del nombre y apellido y nota media de los alumnos almacenados en una base de datos: SELECT Nombre, Apellido, AVG(Nota) FROM alumnos, notas WHERE alumnos.DNI = notas.DNI GROUP BY DNI ORDER BY DNI DESC; Mostrar una lista ordenada de códigos de piezas de la tabla “piezas” de todas las piezas que tengan más de 1 proveedor: SELECT CodigoPieza FROM piezas GROUP BY CodigoProveedor HAVING COUNT(*) > 1 ORDER BY CodigoPieza; 2