Realizacion de Consultas
Realizacion de Consultas
Realizacion de Consultas
Índice
1. Introducción 2
2. Elementos componentes de una sentencia SQL 2
3. Valores nulos 3
4. Operaciones de comparación 3
5. La sentencia SELECT 2
6. Expresiones 7
7. Operadores 8
8. Funciones 9
9. Consultas con varias tablas 13
10. Consultas de unión 15
11. Combinaciones internas y externas 15
12. Subconsultas 17
13. Consultas correlacionadas 18
1
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
1. Introducción
Una vez creada la base de datos está lista para su explotación. En esta unidad
didáctica se estudia cómo acceder a la información almacenada en una base de datos:
obtener un listado de proveedores, clientes con facturas pendientes, teléfono de un
proveedor, correo electrónico de otro, productos bajo mínimos, importe de una
factura…
Cabe recordar que el lenguaje SQL está dividido en tres grupos de sentencias:
2
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Sea cual sea el tipo de dato asignado a un campo, éste puede o no permitir valores
nulos. Entendemos por nulo la ausencia de valor o bien el valor ”desconocido”. En un
campo de tipo numérico, no es lo mismo 0 que valor nulo, y en un campo de tipo
cadena o texto tampoco es lo mismo nulo que cadena vacía “”.
Como regla general, una operación con un valor nulo produce un resultado nulo.
Así, por ejemplo, si sumamos 200 a un valor nulo (desconocido) obtendremos nulo.
4. Operaciones de comparación
- Sólo se comparan valores cuando son del mismo tipo (o bien cuando el
sistema es capaz de convertir de un tipo a otro de forma implícita).
- Todos los datos de tipo numérico se pueden comparar unos con otros. Lo
mismo sucede con las cadenas. Además, no es necesario que tengan la
misma longitud.
- Al comparar cadenas, el sistema va comparando carácter a carácter de
izquierda a derecha. En realidad se compara el valor ASCII de cada uno de los
caracteres que la forman. Se considera menor la cadena (carácter) que
aparezca antes por orden alfabético.
- Si las dos cadenas son vacías se consideran iguales.
5. La sentencia SELECT
Se utiliza para consultar datos de una base de datos. En esta sentencia se indican
de qué tablas extraer los datos, como filtrarlos, ordenarlos, agruparlos y que cálculos
realizar con ellos.
Para probar los ejemplos utilizaremos los clientes modo texto y web
(phpMyAdmin).
3
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
[HAVING Condiciones]
Como puede observarse, sólo son obligatorias las cláusulas SELECT y FROM.
Tras SELECT debemos elegir entre asterisco, que hace referencia a todas las
columnas y lista de columnas/expresiones a mostrar, separadas por comas. Más tarde
aparece FROM con los nombres de las tablas de las que obtener los datos.
4
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Igual que se utilizan alias para columnas, existen alias para tablas. Generalmente
el alias de una tabla es un nombre más corto que se utiliza para agilizar la escritura o
bien, para indicar de qué tabla obtener un campo, cuando este campo repite nombre
en varias tablas.
Clausula WHERE. Los ejemplos vistos hasta ahora muestran todas las filas de la
tabla utilizada en FROM. Si es necesario mostrar las filas que cumplen una
determinada condición o condiciones se debe utilizar la cláusula WHERE.
El ejemplo siguiente mostrará todas las columnas de Opositores, pero sólo las filas
en las que la ciudad sea Zafra.
5
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Ejemplos:
- Muestra las notas del opositor con DNI 1173391 siempre que sean mayores
que 5.
Ejemplos:
6
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Cláusula LIMIT. Sin usar LIMIT se muestran todas las filas de la tabla que
cumplen la condición o condiciones. Con LIMIT podemos limitar el número de filas
mostradas en la consulta. Existen dos posibilidades:
Ejemplos:
- Mostrar los datos de los 20 opositores a partir del 50, ordenando por
nombre.
6. Expresiones.
Para los ejemplos con expresiones utilizaremos una nueva base de datos,
Departamentos. Puedes descargar el script desde el “Recurso 1. Scripts de bases de
datos”.
7
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
- Mostrar los datos de los trabajadores cuyo salario es mayor que el doble de su
comisión.
7. Operadores.
Finalmente, los operadores lógicos se utilizan para crear expresiones lógicas
complejas. El resultado de estas expresiones puede ser verdadero, falso o
desconocido (nulo). Son AND, OR y NOT.
8
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Between. Sirve para comprobar si un valor está comprendido entre otros dos,
ambos inclusive.
Ejemplo, mostrar los empleados cuyo salario está comprendido entre 1000 y 2000
euros.
Like. Sirve para buscar cadenas que coincidan o no con un patrón de búsqueda.
Para realizar estas búsquedas pueden utilizarse caracteres especiales o comodines.
El % que representa a un conjunto de caracteres (cero incluido) y _ (guión bajo),
representa a un carácter.
Ejemplos:
8. Funciones.
Una función representa un valor único que se obtiene aplicando unas determinadas
operaciones sobre un valor o conjunto de valores dados. Se especifican como una
palabra reservada seguida de unos paréntesis entre los que se escriben los
argumentos separados por comas si son varios.
9
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Las funciones escalares pueden ser usadas en cualquier lugar donde se espere
una columna, es decir, en SELECT, WHERE...
https://mariadb.com/kb/en/mariadb/functions-and-operators/
http://mysql.conclase.net/curso/index.php?cap=011#
- Funciones de fecha/hora.
o Curdate(). Devuelve la fecha actual del equipo.
o DayName(fecha). Devuelve el día de la semana de la fecha pasada
como parámetro.
o DateDiff(fecha1, fecha2). Devuelve la diferencia en días entre las dos
fechas. Fecha2 es la fecha más antigua.
o Year(fecha). Devuelve el año de la fecha pasada como parámetro.
o Month(fecha). Devuelve el mes de la fecha pasada como parámetro.
o Day(fecha). Devuelve el día del mes de la fecha pasada como
parámetro.
- Funciones de texto o cadena.
o Length(cadena). Devuelve el número de caracteres de la cadena
pasada como parámetro.
o Right(cadena, número). Extrae de la cadena tantos caracteres por la
derecha como indique número.
o Left(cadena, número). Igual pero por la izquierda.
o Concat(cadena1, cadena2). Concatena o une las dos cadenas en una
sola.
o Substring(cadena, posición, longitud). Extrae de la cadena pasada, otra
cadena a partir de la posición indicada y de tantos caracteres como se
indique en longitud.
- Funciones de control de flujo.
o IF (condición, valor1, valor2). Devuelve valor1 si la condición se cumple,
en caso contrario devuelve valor2.
o Ifnull(expresión1, expresión2). Si expresión1 es nulo devuelve
expresión2, en caso contrario devuelve expresión1.
o Nullif(expresión1, expresión2). Devuelve nulo si ambas expresiones son
iguales, en caso contrario devuelve expresión1.
- Funciones matemáticas.
o Truncate(expresión, número). Elimina decimales de la expresión. Sólo
muestra los indicados en número.
o Round(expresión). Redondea al entero más cercano.
10
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
El argumento suele ser una expresión formada en la mayoría de las ocasiones por
un único campo y se sitúan como columnas en la sentencia SELECT.
Ejemplos:
Algunas consideraciones:
Clausula GROUP BY. Las funciones colectivas suelen aplicarse a grupos de filas.
Por ejemplo, pueden calcular el salario medio por departamento, el número de
compras de cada cliente, la suma de unidades vendidas de cada artículo…
11
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Estudiemos varios ejemplos con la base de datos Oposiciones. Hasta ahora solo
se han estudiado consultas basadas en una tabla, de ahí que los ejemplos sigan este
patrón.
- Mostrar la nota media por cada examen. Dos columnas, código de examen y
media. En este caso los datos se obtienen de la tabla Notas. En la tabla
examen no se guardan las notas.
12
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Si quieren mostrarse los códigos de exámenes y su nota media, pero sólo aquellos
en los que la media es igual o superior a 5 debe escribirse una select como la
siguiente:
Pueden unirse tantas tablas como se desee y hacer referencia en SELECT a todas
las columnas de esas tablas. Si existen campos en varias tablas con el mismo nombre
deben calificarse, anteponiendo el nombre de la tabla al del campo. Ejemplo
departamentos.nombre.
El resultado sería:
13
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
SELECT NUMEROEMPLEADO,
EMPLEADOS.NOMBRE, SALARIO,
DEPARTAMENTOS.NOMBRE FROM EMPLEADOS,
DEPARTAMENTOS WHERE NUMERODEPARTAMENTO=DEPARTAMENTO AND
SALARIO > 1500
Se llaman así aquellas consultas cuyo resultado se obtiene uniendo en uno solo los
de otras dos, que a su vez también pueden ser compuestas.
Para unir dos SELECT se escribe UNION o UNION ALL entre ambas consultas. La
diferencia reside en que al escribir sólo UNION, si existen filas repetidas sólo se nos
muestra una de ellas, sin embargo con UNION ALL también se muestran las
repeticiones.
Al utilizar UNION, las tablas resultantes deben tener igual número de columnas y
las columnas que están en la misma posición relativa deben ser de igual tipo de datos.
14
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Sobre el resultado final no se pueden aplicar otras cláusulas como GROUP BY,
únicamente puede contener ORDER BY al final de la sentencia SELECT.
Un ejemplo:
Al trabajar con varias tablas en una consulta, podemos obtener, como se ha visto,
datos que están relacionados, pero en ningún momento podemos obtener filas de una
tabla que no tienen filas relacionadas en otras. A estas consultas que sólo muestran
datos relacionados se les llama combinaciones internas y pueden ser desarrolladas
con otras sintaxis:
Por otro lado, las combinaciones externas permiten extraer filas de una tabla que
no tienen relación con las filas de la otra tabla participante en la consulta. En el caso
de la base de datos “Departamentos” podríamos querer visualizar los empleados con
su número, nombre, salario y nombre del departamento al que pertenecen, si no tienen
departamento asignado que aparezca el valor null.
15
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
Ejemplo resuelto con LEFT y RIGHT JOIN. Visualizar los empleados con su número,
nombre, salario y nombre del departamento al que pertenecen. Si no tienen
departamento asignado, que aparezca el valor null.
12. Subconsultas
Una subconsulta o subselect es una consulta que se ejecuta dentro de otra y que
puede ser utilizada para obtener un valor necesario para la consulta principal.
Imaginemos que queremos obtener los empleados que tengan un salario superior
al de la media. Primero será necesario obtener el salario medio para más tarde
16
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
La sentencia quedaría:
En este caso la subselect devuelve un único valor, una sola fila y una sola
columna, por lo que podemos compararlo con el salario utilizando >, <, >=, etc.
Sin embargo puede darse el caso de que la subselect devuelva una lista de
valores, varias filas y una sola columna. En este caso serían necesarios los
operadores IN o NOT IN.
Un ejemplo para esta situación sería “mostrar los opositores que viven en la misma
ciudad que los opositores con DNI 1173391 y 76123215”. Ahora, la subselect debe
devolver las ciudades de estos dos opositores para ir comparando con las de los
demás. Como las ciudades pueden ser distintas (de hecho lo son en el ejemplo), debe
utilizarse IN.
Las subconsultas pueden anidarse de forma que en una de ellas aparezca otra
subconsulta.
Las consultas correlacionadas son un tipo especial de subselect que se evalúa una
vez por cada fila que cumpla los criterios de la consulta principal. Imagina que se
quiere obtener la lista de empleados que tienen un salario superior a la media de su
departamento. Como existen varios departamentos, esta media debe calcularse para
cada uno de ellos (de los empleados), por tanto la subselect que la calcula debe
ejecutarse varias veces.
17
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad didáctica 4. Realización de consultas
18