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.