Consultas sql . Consultas sencillas
Enviado por franco villegas • 16 de Agosto de 2019 • Práctica o problema • 2.966 Palabras (12 Páginas) • 187 Visitas
Consultas SQL (SELECT)
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:
SELECT idCliente, nombre, descripcion FROM CLIENTES
Obviamente, al querer todos los campos, esto es innecesario y es por tanto más conveniente emplear el asterisco (*). También sería equivalente emplear la notación completa:
SELECT CLIENTES.idCliente, CLIENTES.nombre, CLIENTES.descripcion FROM CLIENTES
Al tener únicamente una tabla involucrada, podemos referirnos a los campos sin calificar, dado que no hay duda de a qué tabla se refiere. Cuando veamos consultas sobre varias tablas comprenderemos la necesidad de incluir esta notación calificada (TABLA.campo).
Devolver un subconjunto de los campos de una tabla (SELECT DISTINCT)
SELECT cp, ciudad FROM DIRECCION
Esta consulta devolverá únicamente los campos cp (código postal) y ciudad de la tabla DIRECCION. Al tener un subconjunto de los campos, éstos no tienen por qué incluir a la clave de la tabla, por lo que no tienen por qué ser únicos. Así, si tenemos muchos registros referidos a distintas calles y números de ese mismo código postal y ciudad, nos encontraremos muchos registros repetidos. Esto puede evitarse haciendo:
SELECT DISTINCT cp, ciudad FROM CLIENTES
Así se eliminan los registros repetidos, devolviendo únicamente una vez cada par cp, ciudad. Esta selección de un subconjunto de los datos de la tabla y excluyendo repetidos se denomina en álgebra relacional proyección.
Devolver un subconjunto de los registros de una tabla (WHERE)
SELECT numero, calle FROM DIRECCION
WHERE ciudad = ‘Sevilla’
Esta consulta devolvería el número y la dirección de todas las direcciones pertenecientes a la ciudad de Sevilla. Como vemos, con WHERE indicamos la condición que deben cumplir los registros de la tabla para ser devueltos en la consulta. En este caso tenemos una condición
simple dada por la comparación de igualdad (=) entre al campo (ciudad) y un literal de tipo cadena, entre comillas simples (‘Sevilla’).
SELECT calle, ciudad FROM DIRECCION
WHERE numero = 12
Esta otra consulta devolvería la calle y ciudad de todos los registros de la tabla con el número 12, en este caso un literal numérico. Las condiciones empleadas pueden ser mucho más complejas incluyendo otro tipo de operadores y combinaciones de los mismos.
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):
Operador | Significado |
< | Menor que |
> | Mayor que |
<> | Distinto de |
<= | Menor ó Igual que |
>= | Mayor ó Igual que |
= | Igual que |
SELECT nombre FROM CLIENTES
WHERE edad <= 32
Adicionalmente, disponemos de operadores de comparación adicionales, también devolviendo valores booleanos (lógicos) True o False según si se cumplen o no las condiciones:
BETWEEN: para indicar un intervalo de valores.
SELECT nombre FROM CLIENTES
WHERE edad BETWEEN 20 AND 35
LIKE: empleado para comparar patrones de texto pudiendo 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 |
[!lista caracteres] | Cualquier carácter que no esté en la lista |
SELECT num, calle, cp FROM DIRECCION
WHERE ciudad LIKE ‘Val%’
Esta consulta devolvería los datos de las direcciones de toda ciudad que comience por Val y siga por cualquier número de caracteres, incluyendo cero caracteres. Por ejemplo, Valladolid o
Valencia. En el enlace anterior sobre patrones de texto podemos practicar directamente desde la web.
IN: empleado para comparar con una lista de valores fijados de modo que devuelva True si el campo indicado pertenece a la lista.
SELECT num, calle, direccion FROM DIRECCION
WHERE ciudad IN (‘Sevilla’, ’Córdoba’, ‘Huelva’, ‘Cádiz’)
Operadores lógicos (AND, OR, NOT)
Los operadores lógicos nos sirven para componer expresiones de filtrado a partir de las anteriores:
Operador | Significado |
AND | Y lógico |
OR | O lógico |
NOT | Negación lógica |
La precedencia y asociatividad es la habitual definida en la Lógica. En cualquier caso, cuando incluya expresiones que empleen varios de estos operadores es recomendable usar paréntesis para evitar errores. Por ejemplo:
...