Select
El SELECT de SQL es una instrucción que se utiliza para seleccionar datos de una base de datos. Los datos devueltos se almacenan en una tabla de resultados, denominada conjunto de resultados.
Funciona dependiendo del DBMS que se esté utilizando, pero para estos ejemplos de consulta, se utilizará Microsoft SQL Server. Donde las unica diferencia que tiene con otros DBMS es que se utiliza el operador + para concatenar cadenas de texto, en lugar de || que se utiliza en otros DBMS.
Funcionamiento básico
La estructura básica de una consulta SELECT es la siguiente:
SELECT column1, column2, ...FROM table_name;Donde column1, column2, ... son los nombres de las columnas que se desean seleccionar y table_name es el nombre de la tabla de la que se desean seleccionar los datos.
Suponiendo que poseemos la siguiente tabla Employees:
| EmployeeID | LastName | FirstName | Title | TitleOfCourtesy | BirthDate | HireDate | Address | City | Region | PostalCode | Country | HomePhone | Extension | Photo | Notes | ReportsTo | PhotoPath |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Davolio | Nancy | Sales Representative | Ms. | 1948-12-08 | 1992-05-01 | 507 - 20th Ave. E. Apt. 2A | Seattle | WA | 98122 | USA | (206) 555-9857 | 5467 | Education includes a BA in psychology from Colorado State University in 1970. | 2 | http://accweb/emmployees/davolio.bmp |
Para seleccionar todos los datos de la tabla Employees, se puede utilizar la siguiente consulta:
SELECT *FROM Employees;Seleccionar columnas específicas
Para seleccionar columnas específicas de una tabla, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_name;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees, se puede utilizar la siguiente consulta:
SELECT LastName, FirstName, TitleFROM Employees;Selecciones con alias
Para seleccionar columnas con un alias, se puede utilizar la siguiente consulta:
SELECT column1 AS alias1, column2 AS alias2, ...FROM table_name;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT LastName AS Apellido, FirstName AS Nombre, Title AS CargoFROM Employees;Selecciones con expresiones
Para seleccionar columnas con expresiones, se puede utilizar la siguiente consulta:
SELECT expression1, expression2, ...FROM table_name;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT LastName + ', ' + FirstName AS NombreCompleto, Title AS CargoFROM Employees;Selecciones con funciones
Para seleccionar columnas con funciones, se puede utilizar la siguiente consulta:
SELECT function1(column1), function2(column2), ...FROM table_name;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT UPPER(LastName) AS Apellido, LOWER(FirstName) AS Nombre, Title AS CargoFROM Employees;Selecciones con filtros
Para seleccionar columnas con filtros, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_nameWHERE condition;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT LastName, FirstName, TitleFROM EmployeesWHERE Country = 'USA';Selecciones con ordenamiento
Para seleccionar columnas con ordenamiento, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_nameORDER BY column1, column2, ... ASC|DESC;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT LastName, FirstName, TitleFROM EmployeesORDER BY LastName ASC, FirstName ASC;Selecciones con agrupamiento
Para seleccionar columnas con agrupamiento, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_nameGROUP BY column1, column2, ...;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT Country, COUNT(*)FROM EmployeesGROUP BY Country;Selecciones con agrupamiento y filtros
Para seleccionar columnas con agrupamiento y filtros, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_nameWHERE conditionGROUP BY column1, column2, ...;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT Country, COUNT(*)FROM EmployeesWHERE Country = 'USA'GROUP BY Country;Selecciones con agrupamiento, filtros y ordenamiento
Para seleccionar columnas con agrupamiento, filtros y ordenamiento, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_nameWHERE conditionGROUP BY column1, column2, ...ORDER BY column1, column2, ... ASC|DESC;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT Country, COUNT(*)FROM EmployeesWHERE Country = 'USA'GROUP BY CountryORDER BY Country ASC;Selecciones con agrupamiento, filtros, ordenamiento y límites
Para seleccionar columnas con agrupamiento, filtros, ordenamiento y límites, se puede utilizar la siguiente consulta:
SELECT column1, column2, ...FROM table_nameWHERE conditionGROUP BY column1, column2, ...ORDER BY column1, column2, ... ASC|DESCLIMIT number;Por ejemplo, para seleccionar solo las columnas LastName, FirstName y Title de la tabla Employees con un alias, se puede utilizar la siguiente consulta:
SELECT Country, COUNT(*)FROM EmployeesWHERE Country = 'USA'GROUP BY CountryORDER BY Country ASCLIMIT 10;