CodeGym /Cursos /SQL SELF /Selecionando colunas específicas: pegando dados pelos nom...

Selecionando colunas específicas: pegando dados pelos nomes das colunas

SQL SELF
Nível 2 , Lição 0
Disponível

Quando a gente puxa dados do banco, quase nunca precisa de todas as colunas. Por exemplo, na tabela de funcionários employees pode ter 15 colunas: nome, sobrenome, data de nascimento, cargo, salário, data de contratação e por aí vai. Mas tu só quer saber os nomes e cargos deles. Faz sentido, né? Puxar tudo é inútil e pesado. É aí que entra a arte de selecionar só as colunas que interessam.

Se for comparar, é tipo pegar só as maçãs de uma cesta cheia de laranjas, maçãs e bananas. Daora, né? É isso que vamos fazer!

Sintaxe

Lembra, SQL foi feito pra ser bem user-friendly.

Primeiro, maiúscula ou minúscula no comando não faz diferença. Tu pode escrever SELECT, Select ou select e vai funcionar igual. Segundo, quebra de linha não importa. O SGBD vai juntar tudo numa linha só, então escreve do jeito que tu achar melhor.

Como tu já deve imaginar, não é só SELECT e FROM que existem. Senão ninguém falava tanto de SQL. O formato mais completo do comando SQL é assim:

SELECT colunas
FROM tabela
WHERE condicao
GROUP BY colunas
HAVING colunas
ORDER BY ordenacao

Onde:

  • colunas — são os nomes das colunas que tu quer pegar.
  • tabela — nome da tabela de onde tu vai puxar os dados.
  • condicao — condição pra filtrar as linhas.
  • ordenacao — linhas e ordem de ordenação.

Parece fácil? Bora ver isso num exemplo real. Mas vamos começar com exemplos mais simples.

Exemplo de consulta básica

Imagina que temos uma tabela students com dados dos estudantes. A estrutura da tabela pode ser assim:

id first_name last_name age grade
1 Alex Lin 20 A
2 Anna Song 22 B
3 Otto Art 19 A

Agora a gente quer só os sobrenomes last_name e as notas grade de todos os estudantes.

A consulta vai ficar assim:

SELECT last_name, grade
FROM students;

Resultado:

last_name grade
Lin A
Song B
Art A

Parabéns, tu acabou de economizar recursos do banco e deixou o resultado bem mais fácil de ler!

Juntando strings

Selecionar dados tu já sabe, bora tentar algo mais legal. Na nossa tabela, nome e sobrenome estão em colunas separadas. Vamos fazer uma consulta que traga o nome completo do estudante numa coluna só.

Pra juntar duas strings no PostgreSQL, usa o operador ||. O SELECT vai ficar assim:

SELECT first_name || last_name, grade
FROM students;

Resultado:

first_name || last_name grade
AlexLin A
AnnaSong B
OttoArt A

Hmm. Faltou alguma coisa, né? Tipo um espaço entre nome e sobrenome! Bora arrumar isso.

SELECT first_name || ' ' || last_name, grade
FROM students;

Resultado:

first_name || ' ' || last_name grade
Alex Lin A
Anna Song B
Otto Art A

Agora sim! O conteúdo da tabela ficou massa, mas e o cabeçalho? Seria melhor ver nome completo, ou só nome, mas não first_name || ' ' || last_name. Fica feio e nada prático. Mas tem solução pra isso também.

Selecionando com apelidos (alias)

Os comandos SQL ficam bem mais legíveis usando apelidos. É só dar um nome novo pra coluna no resultado da consulta. Pra isso, usa a palavra-chave AS (dá pra omitir, mas deixa com ela que fica mais claro).

Olha só:

SELECT first_name AS "Nome", last_name AS "Sobrenome", grade AS "Nota"
FROM students;

Resultado:

Nome Sobrenome Nota
Alex Lin A
Anna Song B
Otto Art A

Aqui a gente:

  1. Renomeou as colunas pra ficar mais claro em português.
  2. Usou alias no comando, com AS.

Se teu chefe ou cliente precisa ver os dados dos usuários e não quer passar raiva lendo a tabela, alias é teu amigo.

Agora bora melhorar nossa consulta do nome completo.

SELECT first_name || ' ' || last_name  AS "Nome completo", grade  AS "Nota"
FROM students;

Resultado:

Nome completo Nota
Alex Lin A
Anna Song B
Otto Art A

Top. Era isso que a gente queria.

Por que selecionar só algumas colunas?

  1. Performance

Imagina trabalhar com uma tabela gigante, milhões de linhas e centenas de colunas. Puxar tudo com SELECT * pode demorar minutos ou até horas, e vai pesar no servidor. Assim tu pega só o que interessa.

  1. Legibilidade

Quando tu pega só as colunas que precisa, o resultado fica muito mais fácil de entender. Senão parece que tu tá lendo um feed de notícias infinito numa sexta à noite.

  1. Menos chance de erro

Quanto menos dado tu processa na consulta, menor a chance de dar ruim. Principalmente se tu vai usar esses dados depois.

O que vale lembrar?

Apelidos pra tabelas

Outro jeito de lidar com nomes de tabelas grandes é usar alias pra tabela. Eles devem lembrar o nome original ou ter a ver com o conteúdo dela.

SELECT sa05.first_name, sa05.course_id
FROM students_archive_2005 AS sa05

Esse jeito é muito útil quando o nome da tabela é gigante tipo university_students_enrollments_records, aí tu pode usar usr ou us

Erros comuns ao selecionar colunas específicas

  1. Erro no nome da coluna. Se tu escrever o nome errado, vai aparecer um erro tipo: ERROR: column "lastname" does not exist. Confere se escreveu certo.

  2. Conflito de nomes. Quando tem mais de uma tabela na consulta, sempre diz de qual tabela é o campo. Tipo students.first_name.

  3. Usar SELECT * — cilada pra iniciante. Funciona e é prático, mas em projetos grandes é má prática! Sempre seleciona só as colunas que tu realmente precisa.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION