Oi! Seja bem-vindo!

Wooow! Vamos aprender SELECT juntos? 🙂 Que D+!!! Bora lá! Nesse artigo vou te mostrar como fazer SELECT no SQL Server da Microsoft, além de alguns dos comandos de apoio mais usados no dia a dia.

 

SELECT em Tabelas

A sintaxe (forma como você escreve o comando) que você está procurando provavelmente seja para buscar informações em tabelas, que é assim:

 

SELECT [campos] FROM [tabela]

 

E como isso funciona?

[campos] são as “colunas” da [tabela] que você quer consultar. Se uma [tabela] possui várias colunas você pode escolher uma ou várias na sua consulta, separando por vírgula os campos. Você também pode informar [*] se quiser consultar todos os campos da tabela, por exemplo, se você tiver uma tabela chamada “amigos” que possui dois campos “nome e email”, algumas das consultas possíveis seriam essas (cada linha é uma consulta):

 

SELECT * FROM amigos -- mostra todas as colunas
SELECT nome FROM amigos -- mostra somente a coluna nome
SELECT email FROM amigos -- mostra somente a coluna email
SELECT nome, email FROM amigos -- mostra as colunas nome e email

 

Viu como é fácil? Então agora é a sua vez de testar ai na sua máquina e ver isso funcionando na prática! Então montei um script mais completo, que cria uma tabela (CREATE), inclui registros (INSERT) e faz as consultas (SELECT) que você aprendeu, assim você pode ver a coisa funcionando online, bora lá!?

Primeiro, para testar o script abaixo você precisa ter o SQL instalado. Se você ainda não tem e está sem tempo de instalar agora, consulte esse artigo (www.dba-pro.com/como-executar-comandos-sql-na-internet) e descubra como você pode “simula os comandos” dessa aula na internet, MUITO LEGAL!! Bom, aqui vai o script de testes, copie ele todo e execute no seu SQL ou no site que te falei:

 

-- crie a tabela amigos
create table amigos (numero int, nome varchar(100), email varchar(100), dt_nascimento date)

-- insera amigos na tabela: P.S: Data no SQL se escreve AAAA-MM-DD (Ano, mês e dia)
insert into amigos values (1, 'Zézão', '[email protected]', '1990-01-02')
insert into amigos values (2, 'Zezinho', '[email protected]', '1990-02-01')
insert into amigos values (3, 'Abismail', '[email protected]', '1991-03-04')

-- efetue 4 consultas simples
select * from amigos
select nome from amigos
select email from amigos
select nome, email from amigos

-- exclua a tabela após os testes
drop table amigos

-- DICA: Você reparou que o "--" significa que virá um comentário no script e o SQL ignora o processamento da linha. Ajuda muito para você documentar o que está acontecendo em cada comando que você faz!

 

SELECT com cláusula WHERE

Wooww!! Ai sim! Agora vamos dar uma explorada a mais? Seguinte, quando você tiver uns 100 amigos cadastrados, vai ficar mais fácil achar algum deles se o resultado do seu SELECT for menor, por exemplo, mostrando só amigos que começam com uma determinada letra ou que nasceram em um determinado ano, certo? Ai entra a cláusula WHERE que é um acessório para o nosso comando SELECT filtrar as linhas do resultado (também conhecido como resultset), facilitando a nossa vida na hora de encontrar informações. Faz o teste ai na sua máquina…:

 

-- Criar tabela e inserir dados de teste:
create table amigos (numero int, nome varchar(100), email varchar(100), dt_nascimento date) 
insert into amigos values (1, 'Zézão', '[email protected]', '1990-01-02') 
insert into amigos values (2, 'Zezinho', '[email protected]', '1990-02-01')
insert into amigos values (3, 'Abismail', '[email protected]', '1991-03-04')
insert into amigos values (4, 'Lazarildo', '[email protected]', '1991-03-04')
insert into amigos values (5, 'Febril', '[email protected]', '1992-03-04')
insert into amigos values (6, 'Robinswal', '[email protected]', '1980-12-10')
insert into amigos values (7, 'Verdevalda', '[email protected]', null)

-- TESTE DO COMANDO WHERE:
-- PS1: Note que datas e texto precisam ser colocados entre aspas (')
-- PS2: _ (underline) significa qualquer um caracter
-- PS3: % (percentual) significa qualquer quantidade de quaisquer caracteres
-- PS4: Tanto faz escrever em maiúsculas ou minúsculas, as vezes coloco em maiúsculas só para destacar
-- PS5: As cláusulas OR e AND ajudam você a utilizar multiplas condições de pesquisa
-- PS5: NULL pode ser usado para qualquer tipo de campo (número, texto ou data)

-- procurar amigos usando uma coluna numérica
select * from amigos where numero = 4 -- todas as colunas do amigo #4
select nome, email from amigos where numero = 4 -- colunas específicas do amigo #4
select * from amigos where numero < 4 -- todas as colunas dos amigos com número MENOR que #4 select * from amigos where numero > 4 -- todas as colunas dos amigos com número MAIOR que #4
select * from amigos where numero in (1,2,4) -- amigos 1, 2 e 4
select * from amigos where numero between 1 and 4 -- amigos entre 1 e 4
select * from amigos where numero = 1 or numero = 4 -- amigos 1 ou 4

-- procurar amigos usando coluna data 
select * from amigos where dt_nascimento IS NULL -- quando não sei a data ou não preenchi
select * from amigos where dt_nascimento = '1980-12-10' -- nascidos em uma data específica
select * from amigos where dt_nascimento between '1990-01-01' and '1991-12-31' -- nascido em uma faixa de datas

-- procurar amigos pelo nome
select * from amigos where nome = 'Zezinho' -- pelo nome em uma busca exata
select * from amigos where nome <> 'Zezinho' -- por nome (todos exceto o Zezinho)
select * from amigos where nome LIKE 'Z%' -- todos que o nome começar com Z
select * from amigos where nome NOT LIKE 'Z%' -- todos que o nome NÃO começar com Z

-- exclui a tabela após os testes
drop table amigos

 

SELECT com cláusula ORDER BY

Outro acessório para ajudar com a visualização das informações é a cláusula “order by”, que organiza as informações para nós. Faça os testes abaixo na sua máquina e compare as diferenças:

-- Criar tabela e inserir dados de teste:
create table amigos (numero int, nome varchar(100), email varchar(100), dt_nascimento date) 
insert into amigos values (1, 'Zézão', '[email protected]', '1990-01-02') 
insert into amigos values (2, 'Zezinho', '[email protected]', '1990-02-01')
insert into amigos values (3, 'Abismail', '[email protected]', '1991-03-04')
insert into amigos values (4, 'Lazarildo', '[email protected]', '1991-03-04')
insert into amigos values (5, 'Febril', '[email protected]', '1992-03-04')
insert into amigos values (6, 'Robinswal', '[email protected]', '1980-12-10')
insert into amigos values (7, 'Verdevalda', '[email protected]', null)

-- selects com ordenação de resultado
select * from amigos order by nome asc -- ordem acendente de nome (asc é uma palavra chave opcional)
select * from amigos order by nome desc -- ordem descendente de nome
select * from amigos order by dt_nascimento desc -- ordem descendente de data de nascimento

-- selects com where e order by
select * from amigos where nome like 'Z%' order by numero 
select email from amigos where dt_nascimento between '1990-01-01' and '1991-12-31' order by nome desc

-- selects também podem ser ordenados pelo "número da coluna" do resultset, veja que legal!
select * from amigos where nome like 'Z%' order by 1
select * from amigos order by 4

-- exclui a tabela após os testes
drop table amigos

 

SELECT TOP & TOP + ORDER BY

Além da cláusula where, você pode reduzir o seu resultset usando o comando TOP, que reduz o resultset de acordo com a configuração que você desejar. Teste os exemplos abaixo:

 

-- Criar tabela e inserir dados de teste:
create table amigos (numero int, nome varchar(100), email varchar(100), dt_nascimento date) 
insert into amigos values (1, 'Zézão', '[email protected]', '1990-01-02') 
insert into amigos values (2, 'Zezinho', '[email protected]', '1990-02-01')
insert into amigos values (3, 'Abismail', '[email protected]', '1991-03-04')
insert into amigos values (4, 'Lazarildo', '[email protected]', '1991-03-04')
insert into amigos values (5, 'Febril', '[email protected]', '1992-03-04')
insert into amigos values (6, 'Robinswal', '[email protected]', '1980-12-10')
insert into amigos values (7, 'Verdevalda', '[email protected]', null)

-- selects com ordenação de resultado
select top 1 * from amigos
select top 3 * from amigos order by dt_nascimento desc
select top 50 percent * from amigos order by 1 -- seleciona os primeiros 50% de registros
select top 1000 * from amigos -- Como temos menos de 1000 registros o SQL mostra tudo
select top 0 * from amigos -- top 0 não mostra nada
select top 2 nome, email from amigos -- top 0 não mostra nada

-- exclui a tabela após os testes
drop table amigos

 

SELECT com Alias

Nem sempre os nomes das tabelas e colunas são tão intuitivos como no nosso exemplo, as vezes você vai se deparar com nomes como tabela1, colunax, etc. Para facilitar a visualização das informações você pode adicionar aliases, que são apelidos para colunas e tabelas. Além de facilitar a visualização, os alias serão bastante importantes quando formos trabalhar com JOINS (selects que apresentam informações de múltiplas tabelas). Usar aliases é uma barbada, veja abaixo:

 

-- Criar tabela e inserir dados de teste:
create table tabela_com_nome_estranho123 (x int, coluna1 varchar(100), correio_eletronico varchar(100), dt_nascimento date) 
insert into tabela_com_nome_estranho123 values (1, 'Zézão', '[email protected]', '1990-01-02') 
insert into tabela_com_nome_estranho123 values (2, 'Zezinho', '[email protected]', '1990-02-01')
insert into tabela_com_nome_estranho123 values (3, 'Abismail', '[email protected]', '1991-03-04')
insert into tabela_com_nome_estranho123 values (4, 'Lazarildo', '[email protected]', '1991-03-04')
insert into tabela_com_nome_estranho123 values (5, 'Febril', '[email protected]', '1992-03-04')
insert into tabela_com_nome_estranho123 values (6, 'Robinswal', '[email protected]', '1980-12-10')
insert into tabela_com_nome_estranho123 values (7, 'Verdevalda', '[email protected]', null)

-- Select incluindo alias:
-- Existem várias formas de incluir alias, todas elas "dão na mesma". Abaixo os principais exemplos:
select x as numero, coluna1 as nome from tabela_com_nome_estranho123 as amigos
select numero = x, nome = coluna1 from tabela_com_nome_estranho123 amigos
select x numero, coluna1 nome from tabela_com_nome_estranho123 [amigos]
select x as 'numero', coluna1 'nome' from tabela_com_nome_estranho123 
select x as [numero], coluna1 [nome] from tabela_com_nome_estranho123 
select x as numero, coluna1 as [nome], * from tabela_com_nome_estranho123 

-- exclui a tabela após os testes
drop table tabela_com_nome_estranho123 

 

CONCLUSÃO

Aposto que você não achou que era tão fácil né? Sem nem precisar do SQL instalado você aprendeu a fazer várias querys para começar com SQL. Espero que você tenha gostado e continue firme e forte com seus estudos!

Abraço do seu amigo Josué 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *