sql >> Base de Datos >  >> RDS >> Sqlserver

Crear una consulta en SQL Server 2017

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.