Esenciales de SQL Server: Uso de SQL SELECT y las cláusulas WHERE y HAVING para recuperar datos

En este artículo, cubriré los fundamentos del uso de la instrucción SQL SELECT para recuperar datos de una o más tablas de SQL Server. También detallaré cómo recuperar columnas seleccionadas, así como cómo usar las cláusulas SQL WHERE y HAVING para filtrar filas.

Los ejemplos de este artículo utilizan la base de datos de muestra AdventureWorksLT2019. En el artículo anterior de esta serie, expliqué cómo rellenar tablas de SQL Server utilizando las instrucciones INSERT, UPDATE y DELETE. Estas instrucciones de lenguaje de consulta estructurado (SQL) modifican el contenido de una tabla, pero la instrucción SQL SELECT tiene un propósito diferente.

Anuncio

 

Cómo usar una instrucción SQL SELECT simple

La instrucción SQL SELECT se utiliza para consultar datos de una tabla. El siguiente código ilustra la sintaxis más básica de la instrucción SELECT.

SELECT columns FROM schema_name.table_name;

Como deberías saber, los datos de la tabla se organizan en un formato de filas y columnas. Cada fila representa un registro único en una tabla, y cada columna representa un campo en el conjunto de datos.

El primer acuerdo de la instrucción SELECT es una lista de los nombres de columna que se van a recuperar. Aquí, especificas una lista de columnas separadas por comas de las cuales deseas recuperar datos.

Publicidad

A continuación, la cláusula FROM especifica la tabla fuente y su nombre de esquema si es necesario. SQL Server utiliza esquemas para agrupar lógicamente tablas y otros objetos de base de datos. El esquema predeterminado para cada base de datos es dbo, y como es el esquema que se está utilizando aquí, se puede omitir.

La siguiente lista muestra un ejemplo de una simple instrucción SELECT:

  • El primer comando USE establece la base de datos actual en AdventureWorksLT2019.
  • La instrucción SELECT proporciona una lista de columnas para el conjunto de resultados que se recuperará de la tabla SalesLT.Customer.
  • En este caso, la base de datos de ejemplo AdventureWorksLT2019 utiliza el nombre de esquema ‘SalesLT’ (entre otros), por lo que debes incluir el nombre del esquema, un punto y luego el nombre de la tabla, que es ‘Customers’.
  • Las columnas ‘FirstName’ y ‘LastName’ recuperan el nombre y el apellido del cliente.
USE AdventureWorksLT2019
SELECT FirstName, LastName from SalesLT.Customer
An example of a simple SQL SELECT statement (Image credit: Petri/Michael Otey)

Como abreviatura, puedes usar un asterisco (*) para recuperar todas las columnas de la tabla independientemente del número de columnas. Puedes ver un ejemplo de eso a continuación:

USE AdventureWorksLT2019
SELECT * from SalesLT.Customer
You can use an asterisk (*) to retrieve all of the columns in the table (Image credit: Petri/Michael Otey)

La instrucción SELECT * es útil para consultas ad-hoc o para examinar las columnas y los datos de una tabla con la que no estás familiarizado. Sin embargo, no debes usar esta instrucción para código de producción, ya que típicamente recupera más datos de los necesarios para tu aplicación, y no quieres aumentar la carga de trabajo de tu servidor SQL.

Anuncio

Cómo filtrar filas con la cláusula WHERE de SQL

El verdadero poder de la instrucción SELECT se encuentra en sus capacidades de filtrado y unión. La consulta SELECT puede usar una cláusula opcional WHERE para filtrar los datos que se devolverán.

La cláusula WHERE utiliza una o más condiciones booleanas para seleccionar los datos de tabla deseados. La cláusula WHERE siempre viene después de la cláusula FROM y antes de las cláusulas GROUP BY, HAVING y ORDER BY.

Puedes ver un ejemplo de cómo usar la cláusula WHERE de SQL a continuación. Aquí, la cláusula WHERE se utiliza para filtrar una lista selecta que contiene las columnas ‘FirstName’, ‘LastName’, ‘Phone’ y ‘CompanyName’ de las filas que contienen el valor ‘Sharp Bikes’ en la columna ‘CompanyName’.

USE AdventureWorksLT2019
SELECT FirstName, LastName, Phone, CompanyName FROM SalesLT.Customer WHERE CompanyName = 'Sharp Bikes';
Using the WHERE clause to filter data that will be returned (Image credit: Petri/Michael Otey)

Filtrar las filas que contienen un valor como parte de una cadena

El poder de usar la cláusula WHERE con la declaración SELECT radica en su flexibilidad. La cláusula WHERE va mucho más allá de la simple igualdad, “mayor que” y “menor que” operadores de comparación. Vamos a echar un vistazo más de cerca a algunas de las cosas que puedes hacer con la cláusula WHERE, comenzando con el uso del operador SQL LIKE.

El operador LIKE se utiliza para determinar si una cadena de caracteres específica coincide con un patrón especificado. En el ejemplo siguiente, recuperamos todas las filas de la tabla Customer que contienen la palabra ‘Bike’ en cualquier lugar de la columna ‘CompanyName’. Aquí, necesitamos utilizar el carácter comodín % tanto antes como después de la palabra ‘Bike’.

USE AdventureWorksLT2019
SELECT SalesPerson, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE('%Bike%');
Using the WHERE clause with the LIKE operator (Image credit: Petri/Michael Otey)

Filtrar filas que cumplan con cualquiera de tres condiciones

También puedes utilizar la cláusula WHERE para filtrar filas basadas en múltiples valores diferentes. El siguiente código muestra cómo utilizar la instrucción SELECT con una cláusula WHERE para seleccionar tres valores diferentes de la tabla Product. En este ejemplo, la cláusula WHERE se usa con el operador OR para seleccionar filas donde ‘ProductID’ es igual a 680, 711, o 722.

USE AdventureWorksLT2019
SELECT Name, ProductID, ProductNumber FROM SalesLT.Product
 WHERE ProductID = 680 OR ProductID = 711 OR ProductID = 722; 
Filtering rows that meet different conditions with the WHERE clause (Image credit: Petri/Michael Otey)

Filtrar filas que están en una lista de valores

Del mismo modo, puedes utilizar la cláusula WHERE para seleccionar filas que están contenidas en una lista definida mediante el uso del operador IN. En el siguiente ejemplo, la sentencia SELECT devolverá las filas que contienen los valores ‘Bothell’, ‘Bellevue’ o ‘Renton’ en la columna ‘City’ de la tabla SalesLT.Address.

USE AdventureWorksLT2019
SELECT AddressID, AddressLine1, City FROM SalesLT.Address
WHERE City IN ('Bothell', 'Bellevue', 'Renton');
Filtering rows that are in a list of values with the IN operator (Image credit: Petri/Michael Otey)

Filtrar filas que tienen un valor entre dos valores

También puedes utilizar la cláusula WHERE de la sentencia SELECT con el operador BETWEEN para seleccionar valores de fila que caen dentro de un rango predefinido en una columna específica. El siguiente ejemplo muestra cómo puedes utilizar BETWEEN para devolver solo las filas en la tabla Product que tienen un valor en la columna ‘ListPrice’ que es mayor que 10 y menor que 50.

USE AdventureWorksLT2019
SELECT ProductID, Name  FROM SalesLT.Product  WHERE ListPrice Between 10 AND 50; 
Filtering rows that have a value between two values (Image credit: Petri/Michael Otey)

Filtrar filas con la cláusula HAVING

También puede filtrar filas en un conjunto de resultados usando la cláusula HAVING. La cláusula HAVING se agregó a SQL Server porque la palabra clave WHERE no se puede usar con funciones de agregado como GROUP BY. Se utiliza para especificar una condición de búsqueda para un grupo o un agregado que incluye una o más condiciones que son verdaderas para diferentes grupos de registros.

La cláusula HAVING siempre viene después de la cláusula GROUP BY y antes de la cláusula ORDER BY, como se puede ver en la siguiente instrucción SQL. En este ejemplo, el conjunto de resultados consta del ‘SalesOrderID’ y del alias de columna ‘SubTotal’. El orden es asc (ascendente) y las filas son agregados agrupados por el ‘SalesOrderID’.

USE AdventureWorksLT2019 ; 
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal 
FROM SalesLT.SalesOrderDetail  GROUP BY SalesOrderID 
HAVING SUM(LineTotal) > 5000.00 
ORDER BY SalesOrderID ;
Filtering rows with the HAVING clause (Image credit: Petri/Michael Otey)

Resumen

En este tutorial, expliqué los conceptos básicos de cómo utilizar la instrucción SELECT de T-SQL para filtrar filas de diversas maneras. La cláusula WHERE proporciona un conjunto extremadamente flexible de operadores que te permiten seleccionar filas basadas en diferentes condiciones. De manera similar, la cláusula HAVING te permite seleccionar grupos de filas que cumplen con cierta condición. Gracias por leer y mantente atento a mi próximo artículo en esta serie esencial de SQL Server.

Artículo relacionado:

Source:
https://petri.com/sql-select-where-clause/