Queries importantes que debemos aprender en SQL

Queries importantes que debemos aprender en SQL

En una entrada anterior vimos qué son las bases de datos y algunos comandos importantes para conocer el mundo de SQL. Pero podemos hacer mucho más con los datos que tengamos: encontrar patrones que podamos analizar, filtrar, ordenar, etc. Empecemos.

Revisaremos principalmente cómo limitar, filtrar y ordenar los valores en las bases de datos, con los siguientes comandos:

  • LIMIT.
  • WHERE.
  • ORDER BY.

Para ello, nos apoyaremos en SQL Practice y así tener una base de datos de ejemplo que nos ayude a integrar mejor la información.

SQL Practice es bastante intuitiva a simple vista: tiene dos bases de datos para poder practicar, hospital.db y northwind.db. La primera contiene un listado de pacientes, datos generales y algunas tablas relacionadas, mientras que la segunda es un listado de productos y tablas relacionadas con la venta de los mismos. En este artículo, usaremos hospital.db, así que echemos un vistazo.

Del lado izquierdo, vemos información de la base de datos y algunos recursos que nos comparten. En el centro tenemos el espacio para escribir las consultas y donde se muestran indicaciones. Debajo, figura el resultado de las consultas, al tiempo que al lado derecho podemos ver cuáles son las preguntas a resolver, cambiar el nivel de dificultad y, eventualmente, cada pregunta junto a su resultado esperado.


LIMIT

Usamos este comando para obtener una cantidad exacta de filas en una consulta.

Para obtener los primeros 5 pacientes de hospital.db, insertamos siguiente:

SELECT *

FROM patients

LIMIT 5;

El resultado luciría así:


WHERE

Este comando sirve para filtrar filas en función de condiciones específicas. Se escribe después de FROM y podemos precisar valores como números, texto, fechas o booleans.

Filtrando valores numéricos

Aquí podemos hacer uso de operadores numéricos como = (igual a), > < (mayor, menor) >= <= (mayor o igual que, menor o igual que) y <> != (diferente a).

Si queremos mostrar los pacientes que miden menos de 150 cm:

SELECT

first_name,

last_name,

height

FROM patients

WHERE height < 150;

Debería verse así:

Pacientes cuyo id es distinto a 2:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE patient_id <> 2;

Encadenar condiciones con AND

Pacientes que midan más de 150 cm, pesen menos de 50 kg y que nacieron después de 2000:

SELECT

patient_id,

first_name,

last_name,

height,

weight,

birth_date

FROM patients

WHERE height > 150

AND weight < 50

AND birth_date > '2000-01-01';

Filtrando valores tipo texto

Los valores de texto que buscamos se deben escribir entre comillas simples o dobles.

Para saber los nombres y apellidos de los pacientes de género masculino, haremos esta consulta:

SELECT

first_name,

last_name,

gender

FROM patients

WHERE gender = 'M';


Filtramos a los pacientes de nombre Charles:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name = 'Charles';

Operador LIKE

Asimismo, podemos filtrar pacientes cuyo primer nombre empiece con C, usando el operador LIKE que permite buscar coincidencias con un patrón específico en una columna.

Usualmente, junto a LIKE se puede usar el símbolo de porcentaje %, un comodín que indica que queremos retornar los valores que tengan uno o más caracteres luego de la C:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name LIKE 'C%';

Pacientes cuyo nombre contiene las letras ‘ar’:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name LIKE '%ar%';

Existe otro comodín que nos especifica un solo caracter: el underscore _.

Filtramos los pacientes cuyo nombre inicie con cualquier caracter, contenga doble erre y le siga un solo caracter final.

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name LIKE '%rr_';

Filtrando valores tipo fecha

Recordemos que el formato de fecha en SQL es año-mes-día.

Pacientes que nacieron el 03/05/1948:

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date = '1948-05-03';

Operador BETWEEN

Si queremos saber los nombres de los pacientes que nacieron desde el año 1995 al 2000, podemos hacer uso de los operadores BETWEEN y AND, con los que incluimos los valores límites, en este caso, 1995-01-01 y 2000-01-01.

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date

BETWEEN '1995-01-01' AND '2000-01-01';

Obtenemos un total de 270 pacientes nacidos en estos años.

Operador NOT

Retorna valores opuestos a la condición especificada.

Pacientes cuyo nombre NO inicia con C:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name NOT LIKE 'C%';

Pacientes que no nacieron entre 1995 y 2000:

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date

NOT BETWEEN '1995-01-01' AND '2000-01-01';

ORDER BY

Todas las consultas hechas anteriormente las podemos ordenar como mejor nos parezca y optimizar nuestro análisis. ORDER BY organiza los resultados según la(s) columna(s) que le indiquemos. Por defecto, lo hace en forma ascendente ASC y se agrega el operador DESC para indicar un orden descendente.

Pacientes más antiguos en un rango de 1995 a 2000:

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date

BETWEEN '1995-01-01' AND '2000-01-01'

ORDER BY birth_date;

Ordenamos por id:

SELECT

patient_id,

first_name,

last_name

FROM patients

ORDER BY patient_id ;

Ordenamos de forma descendente a los pacientes más altos:

SELECT

patient_id,

first_name,

last_name,

height

FROM patients

WHERE height > 150

ORDER BY height DESC;

Conclusión

Con esta información, ya estamos listos para continuar practicando y mejorando nuestro manejo de SQL. Espero que SQL Practice te sirva para ello. Sin embargo, hay muchos recursos aquí mismo y en Internet que puedes aprovechar para fortalecer tus conocimientos.

¡Hasta luego!

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.