Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sobre una tabla que contiene los datos de empleados podemos realizar consultas como, por ejemplo:
¿Qué empleados tienen un salario mayor a 1350?
La respuesta es simple: José y Carlos tiene un salario mayor a 1350, al tener solo 4 empleados es
sencillo obtener la respuesta, muy distinto es cuando la base de dato tiene un gran volumen de
información, allí es donde cobra importancia saber generar consultas de manera correcta para obtener
datos relevantes para una toma de decisión. El SQL nos permite responder estas preguntas de forma
rápida y fiable, salvo error al construir la consulta o errores en los propios datos.
Vamos a construir la consulta que nos permita responder a esta cuestión, para ello debemos
considerar:
Para nuestro caso, su uso en Informática Técnica Aplicada, sólo consideraremos las cláusulas marcada
con una flecha. De acuerdo a la gráfica, debemos para crear una consulta en SQL debemos responder
una serie de preguntas:
Preguntas de Construcción
Consultas sencillas
Devolver todos los campos de una tabla (SELECT *)
SELECT *
FROM CLIENTES
Con el * indicamos que queremos devolver todos los campos. Si CLIENTES dispone de los campos
idCliente, nombre y descripcion, lo anterior sería equivalente a:
*NOTACION CALIFICADA es indicar delante del campo, la tabla de donde se sacará la información.
EMPLEADO.apellido
Cuando utilizo números se escriben directamente al lado del operador, si es un texto se escribe entre
comillas: nombre=”Camila”
Operadores relacionales
Al margen del signo de igualdad empleado anteriormente, se pueden usar n las condiciones simples de
las consultas los operadores relacionales habituales, devolviendo siempre un valor booleano (lógico); o
sea si el resultado es VERDADEROo FALSO
Operador Significado
< Menor que
> Mayor que
<> Distinto de
<= Menor ó Igual
que
>= Mayor ó Igual
que
= Igual que
SELECT nombre
FROM CLIENTES
WHERE edad <= 32
LIKE: empleado para comparar patrones de textopudiendo incluir comodines como los siguientes:
Comodín Descripción
% Sustituto para cero o más caracteres.
_ Sustituto para exactamente un carácter
[lista caracteres] Cualquier carácter de la lista
[^lista caracteres] Cualquier carácter que no esté en la lista
TEORÍA SQL – INFORMÁTICA TÉCNICA APLICADA
IN: empleado para comparar con una lista de valores fijados de modo que devuelva True si el campo
indicado pertenece a la lista.
SELECTnum, calle, direccion
FROM DIRECCION
WHERE ciudad IN (‘Sevilla’, ’Córdoba’, ‘Huelva’, ‘Cádiz’)
SELECT *
FROM DIRECCION
WHERE ciudad = ‘Sevilla’ ANDcp= 41009 OR ciudad = ‘Córdoba’ AND NOTcp= 14010
Devuelve los registros pertenecientes a direcciones que tengan el código postal 41009 de Sevilla o bien
que no tengan el 14010 de Córdoba. La mayor precedencia la adopta el operador NOT sobre la
condición cp = 14010; a continuación los AND se aplican sobre ciudad = ‘Sevilla’ AND cp = 41009 y
ciudad = ‘Córdoba’ AND NOT cp = 14010; por último se aplica el OR sobre la fórmula completa. La
misma consulta se puede expresar de forma más clara con paréntesis: SELECT *
FROM DIRECCION
WHERE (ciudad = ‘Sevilla’ AND cp = 41009) OR
(ciudad = ‘Córdoba’ AND (NOTcp= 14010))
O bien si el NOT nos parece más evidente, podemos excluir el paréntesis interior, a nuestra gusto
siempre conservando el significado que queríamos dar la operación.
Ordenación
Ordenar según criterios (ORDER BY)
Podemos ordenar los registros devueltos por una consulta por el campo o campos que estimemos
oportunos:
TEORÍA SQL – INFORMÁTICA TÉCNICA APLICADA
SELECT *
FROM CIUDAD
ORDERBY provincia ASC, numhabitantesDESC
Esta consulta devolvería todas las ciudades ordenadas por provincia en orden ascendente, y dentro de
los de la misma provincia ordenaría las ciudades por orden descendente del número de habitantes. Si
no indicamos ASC ni DESC, el comportamiento por defecto será el orden ascendente (ASC).
Devolución de expresiones
Asignación de un alias a un dato devuelto (AS)
SELECT idClienteAS id, nombre AS cliente, descripcionASdescFROM CLIENTES
Ahora bien, podemos querer obtener información que no proviene de un registro individual sino de la
agrupación de información, como es el caso de contar el número de líneas de pedido, sumar el precio
de todas las líneas por cada pedido, etc. Para ello, debemos emplear funciones agregadas y en la
mayoría de los casos agrupar por algún campo.
Si por el contrario deseamos obtener el total de líneas por pedido, debemos indicar que agrupe por
idPedido, lo que contará todos los registros con el mismo idPedido y calculará su cuenta:
SELECT idPedido, COUNT(*)
FROM LINEAPEDIDO
GROUP BY idPedido
Lo mismo se puede aplicar a otras funciones como la suma, indicando en ese caso aparte de la
agrupación el campo que queremos sumar:
SELECT idPedido, SUM(precioLinea)
FROM LINEAPEDIDO
TEORÍA SQL – INFORMÁTICA TÉCNICA APLICADA
GROUP BY idPedido
¿Y si queremos hallar la media de los precios por cada pedido? En ese caso necesitamos de nuevo
agrupar (GROUP BY) por pedido.
SELECT idPedido, AVG(precioLinea)
FROM LINEAPEDIDO
GROUP BY idPedido
Igualmente, podríamos aplicar un redondeo (ROUND) sobre la media, para dejar 4 decimales, y
aplicarle un alias (AS) para el nombre del dato de salida. SELECT idPedido, ROUND(AVG(precioLinea),4)
AS media
FROM LINEAPEDIDO
GROUP BY idPedido
Function Usage
Calcula el valor promedio de una columna acorde a la
AVG(expression)
expresión
CLIENTE
podemos obtener una consulta que obtenga datos del cliente y de la venta. Por ejemplo, nombre,
apellidos, codcoche y color, mediante una consulta del tipo:
INNER JOIN
CARROS
MARCAS
PROCEDENCIA
PEDIDOS
CLIENTES
PRÁCTICA SQL – INFORMÁTICA TÉCNICA APLICADA
RESOLVER
Cláusula SELECT
1. Seleccionar todas las filas y columnas de la tabla PROCEDENCIA.
2. Seleccionar todos los nombres de las TIENDAS.
3. Seleccionar el nombre y teléfono de los CLIENTES.
4. Seleccionar el nombre de todas las MARCAS.
5. Listar los PEDIDOS.
6. Listar las tiendas que no tengan teléfonos.
Cláusula WHERE
7. Seleccionar el nombre de las MARCAS de los autos de color negro.
8. Mostrar el nombre de las tiendas que venden autos de color amarillo.
9. Mostrar el precio y nombre de la marca de los autos que valen menos de $22500.
10. Mostrar el país de procedencia de los autos cuya marca es POLO
11. Mostrar cuánto vale cada uno de los autos comprados por los clientes.
12. Mostrar todas las tiendas que venden autos entre $10000 y $50000
13. Indicar el nombre y apellido del cliente que compró el auto más caro.
14. Indicar la dirección de la tienda que vendió el auto más barato.
15. Indicar los clientes que viven sobre la calle Redmond.
16. Mostrar el código postal de las tiendas cuyos nombres comienzan con “amster”
17. Mostrar nombre y apellidos de los clientes que en su nombre apellido contengan una “f”
18. Mostrar las marcas de los autos que sean “Amarillos, negros, verdes”
19. Seleccionar carro_id de los autos que no fueron pedidos.
20. Seleccionar los países de origen que comiencen con “R” y terminen con “A”
21. Indicar precio, marca y nombre de la tienda que vende autos color negro.
22. Listar nombre y apellido de los clientes que compraron autos, la marca, color, precio y
tienda que se los vendió.
23. Contar cuántos autos se vendieron
24. Obtener el monto total recaudado de esa venta.
25. Contar cuántos países distintos venden autos.
Cláusula ORDER BY
26. Mostrar nombre y apellidos de los clientes ordenados por apellido de manera descendente
27. Mostrar el color y precio de los autos ordenados de más caro al más barato.
28. Mostrar un listado de países de origen ordenados de manera ascendente.
29. El nombre de las tiendas ordenados alfabéticamente.
30. Qué datos devuelve la siguiente consulta:
SELECT *
FROM carros, tiendas
WHERE tienda=tienda_id AND nombre LIKE ‘ams%’
ORDER By precio ASC