Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar uma consulta no SQL Server 2017


Como criar uma consulta em um banco de dados SQL Server 2017.

Uma das consultas mais básicas que você pode fazer é assim:
SELECT * 
FROM TableName;

Esta consulta retorna todos os dados de uma determinada tabela. TableName é o nome da tabela que você deseja consultar. Tudo o que você precisa fazer é substituí-lo pelo nome de uma tabela em seu banco de dados, executar a consulta e o conteúdo dessa tabela será exibido.

Nosso banco de dados consiste em três tabelas. Cada um contém dados. Vamos ver o que há em cada tabela.

Os Artists tabela:

SELECT * 
FROM Artists;
Resultado
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

Os Albums tabela:

SELECT * 
FROM Albums;
Resultado
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

Os Genres tabela:

SELECT * 
FROM Genres;
Resultado
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

Nos três casos, nossa consulta foi a mesma. A única coisa que mudou foi o nome da tabela.

Essa é uma das consultas mais básicas que podemos fazer. Ele simplesmente retorna todas as linhas e todas as colunas de uma única tabela.

Podemos modificar essa consulta de várias maneiras para retornar apenas os dados que desejamos ver. Abaixo estão algumas maneiras comuns de modificar uma consulta para retornar precisamente os resultados de que precisamos.

Especifique as colunas


Em vez de usar o asterisco (* ) para retornar todas as colunas, você pode declarar explicitamente apenas as colunas que deseja que sejam retornadas.
SELECT AlbumId, AlbumName, ArtistId 
FROM Albums;
Resultado
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 os critérios


Você pode adicionar um WHERE cláusula para retornar apenas as linhas que correspondem a um critério fornecido por você.
SELECT AlbumId, AlbumName, ArtistId 
FROM Albums 
WHERE ArtistId = 1;
Resultado
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

Junte-se a outra mesa


Você pode usar uma junção para retornar resultados de várias tabelas que compartilham dados. É disso que se trata os relacionamentos. Em particular, uma junção é normalmente usada onde a chave estrangeira de uma tabela corresponde à chave primária de outra.
SELECT AlbumId, AlbumName, ArtistName 
FROM Albums 
	INNER JOIN Artists 
	ON Albums.ArtistId = Artists.ArtistId 
WHERE ReleaseDate < '1980-01-01';
Resultado
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

Você verá que o WHERE cláusula ainda funciona em colunas que não estão realmente incluídas na saída. Neste caso, foi aplicado ao ReleaseDate coluna, mesmo que não incluamos essa coluna nos resultados.

Você também verá que qualificamos os dois ArtistId colunas com o nome da tabela (ou seja, Albums.ArtistId e Artists.ArtistId ). Devemos fazer isso para que o SQL Server saiba a qual tabela estamos nos referindo ao fazer referência a essa coluna. Alguns desenvolvedores de banco de dados consideram uma boa prática qualificar todos os nomes de coluna em todas as consultas SQL, no entanto, isso é mais um caso de preferência pessoal ou convenção de codificação específica do projeto.

Adicionar um alias


Você também pode adicionar aliases de tabela às suas consultas para tornar o código mais conciso. Por exemplo, você pode dar a Artists um alias de ar e Albums um alias de al (ou qualquer outra string que você goste).

Você pode usar esses aliases para qualificar os nomes das colunas. Aqui está a mesma consulta acima, mas com todos os nomes de coluna qualificados com aliases de tabela:
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';
Resultado
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

Você também pode atribuir aliases a colunas (não apenas tabelas). Fazemos isso no próximo exemplo.

Formatar a data


Há muitas maneiras diferentes de tratar datas e horas em bancos de dados. No SQL Server existem diferentes tipos de dados para armazenar datas (como date , time , datetime , smalldatetime , etc) e existem muitas funções diferentes para lidar com datas (por exemplo SYSDATETIME() , GETDATE( ) , CURRENT_TIMESTAMP , etc).

Neste exemplo, usaremos o YEAR() função para retornar apenas a parte do ano da data.
SELECT AlbumName, YEAR(ReleaseDate) AS Year 
FROM Albums;
Resultado
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

Neste exemplo, também atribuímos um alias a uma coluna. Mais especificamente, atribuímos um alias ao resultado do YEAR() função, da qual passamos a ReleaseDate coluna como argumento.

Outro ponto sobre este exemplo é que usamos o AS palavra-chave ao atribuir o alias. Isso é opcional e também poderíamos ter usado o AS palavra-chave ao atribuir um alias a uma tabela no exemplo anterior.

Sobre SQL e Transact-SQL


As consultas acima (e as outras consultas neste tutorial) são escritas em Structured Query Language (SQL). Mais especificamente, o SQL Server usa Transact-SQL (às vezes abreviado para T-SQL ), que é a extensão proprietária da Microsoft e Sybase para SQL.

SQL é a linguagem de consulta padrão usada na maioria dos sistemas de gerenciamento de banco de dados relacional. É um padrão do American National Standards Institute (ANSI) e da International Organization for Standardization (ISO).

Embora a maioria das consultas básicas funcione na maioria dos bancos de dados relacionais, algumas consultas podem precisar ser ligeiramente modificadas ao fazer a portabilidade entre um sistema de banco de dados e outro. Por exemplo, você pode ter um script que é executado no SQL Server. Você também pode usar esse script no MySQL, no entanto, você pode achar que precisa alterar algumas coisas antes que ele seja executado com sucesso.

Os scripts SQL neste tutorial demonstram apenas uma pequena amostra do que você pode fazer com o SQL. Para obter mais informações, confira meu Tutorial SQL ou acesse a Referência do Microsoft Transact-SQL.