Cómo crear una consulta en una base de datos de SQL Server 2017.
Una de las consultas más básicas que puede hacer es la siguiente:
SELECT * FROM TableName;
Esta consulta devuelve todos los datos de una tabla dada. TableName
es el nombre de la tabla que desea consultar. Todo lo que necesita hacer es reemplazarlo con el nombre de una tabla en su base de datos, ejecutar la consulta y se mostrará el contenido de esa tabla.
Nuestra base de datos consta de tres tablas. Cada uno contiene datos. Veamos qué hay en cada tabla.
Los Artists
mesa:
SELECT * FROM Artists;Result
ArtistId ArtistName ActiveFrom -------- ---------------------- ------------------------ 1 Iron Maiden 1975-12-25T00:00:00.000Z 2 AC/DC 1973-01-11T00:00:00.000Z 3 Allan Holdsworth 1969-01-01T00:00:00.000Z 4 Buddy Rich 1919-01-01T00:00:00.000Z 5 Devin Townsend 1993-01-01T00:00:00.000Z 6 Jim Reeves 1948-01-01T00:00:00.000Z 7 Tom Jones 1963-01-01T00:00:00.000Z 8 Maroon 5 1994-01-01T00:00:00.000Z 9 The Script 2001-01-01T00:00:00.000Z 10 Lit 1988-06-26T00:00:00.000Z 11 Black Sabbath 1968-01-01T00:00:00.000Z 12 Michael Learns to Rock 1988-03-15T00:00:00.000Z 13 Carabao 1981-01-01T00:00:00.000Z 14 Karnivool 1997-01-01T00:00:00.000Z 15 Birds of Tokyo 2004-01-01T00:00:00.000Z 16 Bodyjar 1990-01-01T00:00:00.000Z 16 row(s) returned Executed in 1 ms
Los Albums
mesa:
SELECT * FROM Albums;Result
AlbumId AlbumName ReleaseDate ArtistId GenreId ------- ------------------------ ------------------------ -------- ------- 1 Powerslave 1984-09-03T00:00:00.000Z 1 1 2 Powerage 1978-05-05T00:00:00.000Z 2 1 3 Singing Down the Lane 1956-01-01T00:00:00.000Z 6 3 4 Ziltoid the Omniscient 2007-05-21T00:00:00.000Z 5 1 5 Casualties of Cool 2014-05-14T00:00:00.000Z 5 1 6 Epicloud 2012-09-18T00:00:00.000Z 5 1 31 Somewhere in Time 1986-09-29T00:00:00.000Z 1 1 32 Piece of Mind 1983-05-16T00:00:00.000Z 1 1 33 Killers 1981-02-02T00:00:00.000Z 1 1 34 No Prayer for the Dying 1990-10-01T00:00:00.000Z 1 1 35 No Sound Without Silence 2014-09-12T00:00:00.000Z 9 4 36 Big Swing Face 1967-06-01T00:00:00.000Z 4 2 37 Blue Night 2000-11-01T00:00:00.000Z 12 4 38 Eternity 2008-10-27T00:00:00.000Z 12 4 39 Scandinavia 2012-06-11T00:00:00.000Z 12 4 40 Long Lost Suitcase 2015-10-09T00:00:00.000Z 7 4 41 Praise and Blame 2010-06-26T00:00:00.000Z 7 4 42 Along Came Jones 1965-05-21T00:00:00.000Z 7 4 43 All Night Wrong 2002-05-05T00:00:00.000Z 3 2 44 The Sixteen Men of Tain 2000-03-20T00:00:00.000Z 3 2 20 row(s) returned Executed in 1 ms
Los Genres
mesa:
SELECT * FROM Genres;Result
GenreId Genre ------- ------- 1 Rock 2 Jazz 3 Country 4 Pop 5 Blues 6 Hip Hop 7 Rap 8 Punk 8 row(s) returned Executed in 1 ms
En los tres casos, nuestra consulta fue la misma. Lo único que cambió fue el nombre de la tabla.
Esta es una de las consultas más básicas que podemos hacer. Simplemente devuelve todas las filas y todas las columnas de una sola tabla.
Podríamos modificar esta consulta de varias maneras para devolver solo los datos que deseamos ver. A continuación se muestran algunas formas comunes en las que podemos modificar una consulta para que arroje con precisión los resultados que necesitamos.
Especifique las columnas
En lugar de usar el asterisco (*
) para devolver todas las columnas, puede indicar explícitamente solo aquellas columnas que desea que se devuelvan.
SELECT AlbumId, AlbumName, ArtistId FROM Albums;Result
AlbumId AlbumName ArtistId ------- ------------------------ -------- 1 Powerslave 1 2 Powerage 2 3 Singing Down the Lane 6 4 Ziltoid the Omniscient 5 5 Casualties of Cool 5 6 Epicloud 5 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 35 No Sound Without Silence 9 36 Big Swing Face 4 37 Blue Night 12 38 Eternity 12 39 Scandinavia 12 40 Long Lost Suitcase 7 41 Praise and Blame 7 42 Along Came Jones 7 43 All Night Wrong 3 44 The Sixteen Men of Tain 3 20 row(s) returned Executed in 1 ms
Restringir los criterios
Puedes agregar un WHERE
cláusula para devolver solo aquellas filas que coincidan con un criterio proporcionado por usted.
SELECT AlbumId, AlbumName, ArtistId FROM Albums WHERE ArtistId = 1;Result
AlbumId AlbumName ArtistId ------- ----------------------- -------- 1 Powerslave 1 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 5 row(s) returned Executed in 1 ms
Únete a otra mesa
Puede usar una combinación para devolver resultados de varias tablas que comparten datos. De esto se tratan las relaciones. En particular, se suele utilizar una combinación cuando la clave externa de una tabla coincide con la clave principal de otra.
SELECT AlbumId, AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE ReleaseDate < '1980-01-01';Result
AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms
Verás que el WHERE
todavía funciona en columnas que no están realmente incluidas en la salida. En este caso, se aplicó a la ReleaseDate
columna, aunque no incluimos esa columna en los resultados.
También verá que calificamos los dos ArtistId
columnas con el nombre de la tabla (es decir, Albums.ArtistId
y Artists.ArtistId
). Debemos hacer esto para que SQL Server sepa a qué tabla nos referimos cuando hacemos referencia a esa columna. Algunos desarrolladores de bases de datos consideran una buena práctica calificar todos los nombres de columna en todas las consultas SQL, sin embargo, esto es más un caso de preferencia personal o convención de codificación específica del proyecto.
Añadir un Alias
También puede agregar alias de tabla a sus consultas para que el código sea más conciso. Por ejemplo, podría dar a Artists
un alias de ar
y Albums
un alias de al
(o cualquier otra cuerda que te guste).
Puede utilizar estos alias para calificar los nombres de las columnas. Esta es la misma consulta que la anterior, pero con todos los nombres de columna calificados con alias de tabla:
SELECT al.AlbumId, al.AlbumName, ar.ArtistName FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId WHERE al.ReleaseDate < '1980-01-01';Result
AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms
También puede asignar alias a las columnas (no solo a las tablas). Hacemos esto en el siguiente ejemplo.
Dar formato a la fecha
Hay muchas formas diferentes de tratar las fechas y las horas en las bases de datos. En SQL Server existen diferentes tipos de datos para almacenar fechas (como date
, time
, datetime
, smalldatetime
, etc) y hay muchas funciones diferentes para manejar fechas (por ejemplo, SYSDATETIME()
, GETDATE( )
, CURRENT_TIMESTAMP
, etc.).
En este ejemplo, usaremos el YEAR()
función para devolver solo la parte del año de la fecha.
SELECT AlbumName, YEAR(ReleaseDate) AS Year FROM Albums;Result
AlbumName Year ------------------------ ---- Powerslave 1984 Powerage 1978 Singing Down the Lane 1956 Ziltoid the Omniscient 2007 Casualties of Cool 2014 Epicloud 2012 Somewhere in Time 1986 Piece of Mind 1983 Killers 1981 No Prayer for the Dying 1990 No Sound Without Silence 2014 Big Swing Face 1967 Blue Night 2000 Eternity 2008 Scandinavia 2012 Long Lost Suitcase 2015 Praise and Blame 2010 Along Came Jones 1965 All Night Wrong 2002 The Sixteen Men of Tain 2000 20 row(s) returned Executed in 1 ms
En este ejemplo también asignamos un alias a una columna. Más específicamente, asignamos un alias al resultado del YEAR()
función, de la cual pasamos el ReleaseDate
columna como argumento.
Otro punto sobre este ejemplo es que usamos el AS
palabra clave al asignar el alias. Esto es opcional, y también podríamos haber usado el AS
palabra clave al asignar un alias a una tabla en el ejemplo anterior.
Acerca de SQL y Transact-SQL
Las consultas anteriores (y las demás consultas de este tutorial) están escritas en lenguaje de consulta estructurado (SQL). Más específicamente, SQL Server usa Transact-SQL (a veces abreviado como T-SQL ), que es la extensión propietaria de SQL de Microsoft y Sybase.
SQL es el lenguaje de consulta estándar utilizado en la mayoría de los sistemas de administración de bases de datos relacionales. Es un estándar del Instituto Nacional Estadounidense de Estándares (ANSI) y de la Organización Internacional para la Estandarización (ISO).
Si bien la mayoría de las consultas básicas funcionarán en la mayoría de las bases de datos relacionales, es posible que algunas consultas deban modificarse ligeramente al realizar la migración entre un sistema de base de datos y otro. Por ejemplo, puede tener un script que se ejecute en SQL Server. También puede usar esa secuencia de comandos en MySQL, sin embargo, es posible que deba cambiar algunas cosas antes de que se ejecute correctamente.
Los scripts de SQL en este tutorial muestran solo una pequeña muestra de las cosas que puede hacer con SQL. Para obtener más información, consulte mi tutorial de SQL o vaya a la referencia de Microsoft Transact-SQL.