Consulta SQL SELECT

Tutorial de introducción a cómo crear consultas SQL básicas para recuperar información de una base de datos.

consultas sql sql where sql select

Bienvenido al tutorial definitivo para principiantes dirigido a aprender a crear consultas SQL SELECT. En este tutorial voy a transmitirte, de forma sencilla y directa, cuales son las partes más importantes de una consulta SELECT en SQL, para qué sirven y cómo se utilizan.

También encontrarás varios ejemplos sencillos de SELECT SQL relacionados con los distintos puntos del artículo. Entre otros ejemplos, encontrarás, ejemplos sencillos de consultas de recuperación de registros en SQL y ejemplos de consultas sql con filtrado básico de datos.

¿Qué es una consulta SQL?

Una consulta SELECT SQL es una pregunta a una base de datos usando la sentencia SELECT perteneciente al lenguaje SQL.  La consulta extrae información de la base de datos en un formato legible para el usuario de esta.

Por ejemplo, si tienes una tabla con la información de los empleados de una empresa, puedes lanzar una consulta SQL que recupere la información de los empleados que más cobran. Esta consulta para recuperar información útil de los empleados es una consulta típica de las que realizarás normalmente en una base de datos.

La información recuperada por una consulta siempre se compone de registros (también llamados tuplas) que podrían definirse como las "filas" de las tablas, ya que las "columnas" son los campos independientes de cada fila o registro.

¿Cuáles son las partes de una consulta SELECT SQL?

Una consulta SQL se compone de varias partes, siendo unas opcionales y otras obligatorias.

Las partes opcionales son 2:

  1. SELECT
  2. FROM

Y las partes opcionales de las consultas SQL son:

  • WHERE
  • GROUP BY
  • ORDER BY
  • LIMIT
  • OFFSET

Partes mínimas de una consulta SQL

Cómo obligatorias encontramos 2 partes para cualquier consulta SQL pueda ejecutarse:

  1. SELECT, esta sentencia se encarga de configurar que campos (columnas) o datos vamos a recuperar y cómo se tiene que llamar. Por ejemplo podríamos realizar un SELECT que recupere el nombre y apellidos: SELECT nombre, apellidos.
  2. FROM, esta sentencia le dice a la base de datos de dónde se va a recuperar la información, es decir, a que tablas se refiere la consulta. Siguiendo con el ejemplo del punto anterior, podríamos indicar que queremos recuperar las columnas nombreapellidos de la tabla empleados: SELECT nombre, apellidos FROM empleados.

A continuación puedes ver varios ejemplos para que acabes de entender estos conceptos:

1. Consulta que recupera la marca, el año de fabricación, el modelo y el precio de todos los coches de una base de datos:

SELECT marca, anyo_fabricacion, modelo, precio
FROM coches;

2. Consulta que recupera la información de los profesores de una tabla profesores:

SELECT nombre, apellidos, dni, direccion, telefono, titulacion
FROM profesores;

3. Consulta SQL que recupera todas las columnas de alumnos de una tabla alumnos:

SELECT *
FROM alumnos;

Partes opcionales de consultas básicas SQL SELECT

Cómo en este tutorial tan solo quiero explicar consultas sencillas, no voy a explicar todas las partes opcionales que existen. Sin embargo, voy a centrarme en explicarte la sentencia que añade filtrado a los registros que queremos recuperar. Esta parte de la consulta es el WHERE, qué, cómo su nombre indica en inglés, se refiere a dónde, pero no un "dónde" de lugar, sino de CONDICIÓN.

Mira el siguiente ejemplo para entender mejor esta sentencia WHERE sql:

SELECT nombre, apellidos
FROM trabajadores
WHERE salario > 3000;

Esta consulta se leería de la siguiente forma: Selecciona el nombre y los apellidos DE la tabla trabajadores DÓNDE su salario sea mayor que 3000.

Cómo has visto este dónde se refiere a la condición de la consulta. Sí sabes programar, sería como un IF que se comprueba antes de recuperar la información del SELECT.

 

Ejemplos sencillos de consultas SQL con WHERE

A continación, y para finalizar este tutorial dirigido a nivel principiante, te dejo una serie de ejemplos sencillos de consultas en SQL con condiciones en WHERE.

1. Consulta SQL que recupera los alumnos que nacieron después del año 90:

SELECT *
FROM alumnos
WHERE fecha_nacimiento > '1989-12-31';

2. Consulta SELECT en SQL para recuperar con WHERE solo los conductores que tienen los 12 puntos en el carnét de conducir:

SELECT nombre, apellidos, dni, fecha_nacimiento AS nacimiento, puntos 
FROM conductores
WHERE puntos = 12;

3. Query (consulta) en SQL para seleccionar todos los alumnos que no tienen hermanos:

SELECT *
FROM alumnos
WHERE hermanos = 0;

Consultas sql con varias condiciones en WHERE

Para terminar este tutorial básico vamos a ver las condiciones múltiples, que sirven para añadir un poco de complejidad a nuestras consultas SQL. 

De forma general podemos decir que hay dos formas de añadir condiciones a una consulta SQL:

  • AND (intersección de dos condiciones): esta sentencia permite encadenar dos condiciones de forma que se tenga que cumplir la condición a Y b. Por ejemplo podríamos realizar una consulta de que seleccione todos los alumnos menores de 18 años y que no tienen hermanos:

 

SELECT nombre, apellidos, dni
FROM alumnos
WHERE edad < 18 AND hermanos = 1;
  • OR (unión): con esta sentencia podemos unir dos condiciones que se evaluarán a verdadero sí una de las dos es cierta. En este caso podríamos seleccionar a todas las personas menores de edad o jubiladas:
SELECT nombre, apellidos, dirección
FROM personas
WHERE edad < 18 OR edad > = 65;

Debes saber que podemos utilizar tantas condiciones como queramos, eso sí, tan solo se utiliza un clausua WHERE por consulta. 

Ahora vamos a ver varios ejemplos uniendo varias condiciones. Para cada caso te dejaré una breve explicación de cuáles serían los resultados si las ejecutases en una base de datos adecuada.

Ejemplos sencillos de consultas con varias condiciones

1. Consulta que recupera los registros de una tabla personas para aquellos que son menores de 18 y están trabajando o los que son jubilados que están trabajando. Para mayor claridad utilizaré paréntesis, que es cómo te recomiendo que compongas las consultas con condición múltiple.

SELECT *
FROM personas
WHERE ( edad < 18 AND trabajando = 1 ) OR  ( edad >= 65 AND trabajando = 1 );

//forma alternativa de realizar la misma consulta

SELECT *
FROM personas
WHERE trabajando = 1 AND ( edad < 18 OR edad >= 65 );

2. Consulta sencilla con varios filtros en el WHERE que recupera  los jugadores de baloncesto que miden más de 2 metros y son pivot o los jugadores que son alero.

 

SELECT nombre, dorsal, equipo
FROM jugadores
WHERE ( altura > 200 AND posicion = 'PIVOT' ) OR posicion = 'ALERO';

3. En este último ejemplo, te muestro una consulta en SQL con dos condiciones que recupera los registros de los usuarios de una web, que la visitaron entre un periodo de 7 días y que utilizan el navegador chrome o aquellos que su IP empieza por 127.

SELECT ip, ultima_visita
FROM usuarios
WHERE ip LIKE '127%' OR ( navegador = 'chrome' AND ultima_visita BETWEEN '12-12-2017' AND '19-12-2017' );

SQL ORDER BY

Tras enseñarte con éxito la cláusula WHERE ahora debes aprender a ordenar los registros devueltos por las consultas SELECT SQL.

Para la ordenación existe la cláusula ORDER BY de SQL. Esta cláusula permite, de forma extremadamente sencilla, ordenar los registros devueltos según los valores de sus columnas.

Ejemplo de ORDER BY

En el siguiente ejemplo voy a ordenar las filas devueltas por el SELECT por la columna nombre:

SELECT nombre, apellidos, dni
FROM clientes
ORDER BY nombre;

Esta consulta devolverá las filas de los clientes ordenadas por su columna nombre. Por defecto siempre se ordenará el valor de la columna elegida de forma ASCENDENTE. 

En este caso, además, como es una columna de tipo texto, será un orden alfabético.

En una consulta con ORDER BY podremos decir si queremos el orden ascendente o descendente, para ello utilizaremos la palabra reservada ASC o DESC. Observa el siguiente ejemplo para mayor claridad:

SELECT nombre, apellidos, dni
FROM clientes
ORDER BY nombre DESC;

Ahora le he indicado que quiero el orden descendente con "DESC". Así que será un orden alfabético inverso (de la Z a la A).

También podemos indicar varias columnas de ordenación ¿Para qué? pues por si el dato de la columna a ordenar coincide que elija este otro criterio de ordenación.

Por ejemplo ahora voy a asegurarme un orden con 2 columnas:

SELECT nombre, apellidos, dni
FROM clientes
ORDER BY nombre ASC, apellidos ASC;

Con este último SELECT con GROUP BY le he indicado que, cuando el nombre coincida, ordene los resultados alfabéticamente por sus apellidos. El resultado de una consulta como esta podría ser:

nombre apellidos dni
Ana Fausto 123121212S
Ana García 125621212S
Javier Miñanbres 124121212S
Roberto López 123121212S
Roberto Zapatero 123121212S

Si te fijas, cuando el nombre coincide el orden se hace por el apellido.

Observaciones sobre ORDER BY

  1. La cláusula order by siempre se escribirá tras el WHERE, si no hay WHERE lo haremos tras el FROM
  2. Podemos especificar una o varias columnas como ordenación. Por defecto se realizará un orden ascendente.
  3. Se puede indicar el tipo de ordenación: ascendente con ASC o descendente con DESC.
  4. Las columnas indicadas en la cláusula ORDER BY se ordenarán según su TIPO. Es decir, las de tipo texto se ordenaran alfabéticamente o las de tipo númerico en orden numérico. También se detectan fechas y horas.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.