Executando verificação de segurança...
37

O básico que você precisa saber sobre SQL

Uma breve explicação do que é SQL e um compilado dos comandos e clausulas mais utilizadas.

Quem nunca precisou criar uma query para um banco de dados que atire a primeira pedra. E quem nunca precisou procurar um comando SQL no Google também…

O SQL está ligado diretamente a nós desenvolvedores, analistas de dados, entre outras profissões da área de T.I.

Mas o que raios é o SQL?

Imagem que representa o SQL

SQL

Bem resumidamente, o SQL é uma abreviação para Structured Query Language, que traduzindo, ao pé da letra, ficaria, Linguagem de Consulta Estruturada. Basicamente, o SQL é uma linguagem de manipulação de dados de um banco de dados relacional. Ou seja, serve para criar, alterar, excluir, consultar e manipular informações conditas dentro de um banco de dados.

Mas vamos ao que interessa, os comandos e clausulas que mais são utilizados no SQL…


Linguagem de Definição de Dados

As linguagem de definição de dados, ou DDL (Data Definition Language), são os comandos que usamos para criar, alterar e deletar tabelas, colunas, index e o próprio banco de dados. Os comandos mais importantes são:

CREATE — Cria um banco de dados, tabela, index ou uma view.
ALTER TABLE — Adiciona ou remove colunas de um tabela.
DROP — Deleta um banco de dados, tabela ou index.
TRUNCATE — Esvazia uma tabela ou conjunto de tabelas.

Exemplos:

-- Criação do banco de dados `college`
CREATE DATABASE college;

-- Criação da tabela `students`
CREATE TABLE students (
  id int,
  name varchar(100),
  course varchar(50),  
  average double(2,2)
);

-- Adição de uma nova coluna `status` na tabela `students`
ALTER TABLE students ADD status varchar(25);

-- Deleção da tabela `students`
DROP TABLE students;

-- Remoção de todo conteúdo da tabela `students`
TRUNCATE TABLE students;

Linguagem de Manipulação dos Dados

As linguagem de manipulação de dados, ou DML (Data Manipulation Language), são os comandos que usamos para recuperar, incluir, remover e modificar as informações de um bancos de dados. Os comandos mais importantes são:

SELECT — Seleciona dados de um banco de dados.
UPDATE — Atualiza um dado de uma tabela.
DELETE — Deleta linhas de uma tabela.
INSERT — Insere linhas em uma tabela.

Exemplos:

-- Seleciona todos os dados de `students`
SELECT * FROM students;

-- Atualiza o `status` para reprovado, todos que tiverem com `average` menor do que 5
UPDATE students SET status = 'REPROVADO' WHERE average < 5;

-- Inserção de uma nova linha na tabela `students`
INSERT INTO students (id, name, course, status, average) VALUES (20, 'João Silva', 'Redes de Computadores', 'CURSANDO', 9.00);

-- Deletar da tabela `students` todos que tiverem `status` 'CANCELADO'
DELETE FROM students WHERE status = 'CANCELADO';

Especificações do Clausula JOIN

JOIN — Combina duas ou mais linhas de uma tabela.

  • INNER JOIN— Retorna apenas os valores que atendem a condição passada e que exista nas duas tabelas.
  • LEFT JOIN — Retorna a tabela do lado esquerdo da combinação, mesmo que a condição não tenha dados dessa tabela, retornando nulo para esses casos.
  • RIGHT JOIN —Retorna a tabela do lado direito da combinação, mesmo que a condição não tenha dados dessa tabela, retornando nulo para esses casos.
  • FULL OUTER JOIN — Retorna as informações das duas tabelas, mesmo que não atenda a condição passada, retornando nulo para esses casos.

Imagem que representa das especificações do comando JOIN

Exemplos:

-- Retorna apenas os valores que atendem a condição existente nas duas tabelas `students` e `courses` - a intersecção das duas tabelas.
SELECT students.name, students.course, courses.teacher
FROM students s
INNER JOIN courses c
ON s.course = c.name;

-- Retorna todos os valores da tabela de `course`, caso não tenha o valor que atenda a condição, o valor será nulo
SELECT students.name, students.course, courses.teacher
FROM students s
RIGHT JOIN courses c
ON s.course = c.name;

-- Retorna todos os valores da tabela de `students`, caso não tenha o valor que atenda a condição, o valor será nulo
SELECT students.name, students.course, courses.teacher
FROM students s
LEFT JOIN courses c
ON s.course = c.name;

-- Retorna todos os valores das duas tabelas, `students` e `courses` e caso não tenham os valores que atendam a condição, os valores serão nulos
SELECT students.name, students.course, courses.teacher
FROM students s
FULL OUTER JOIN courses c
ON s.course = c.name
WHERE condition;

Outras clausulas do SQL

FROM — Especifica qual o tabela que você quer pegar os dados.
WHERE — Filtra um consulta para corresponder a uma condição.
AS — Renomeia uma coluna ou uma tabela por um pseudônimo.
AND — Combina condições. Todas precisam ser passar.
OR — Combina condições. Pelo menos uma dever ser passar.
LIMIT — Limite de linhas que devem ser retornado.
OFFSET — A partir de qual linha começará o retorno.
IN — Especifica vários valores dentro do WHERE.
CASE — Retorna um valor apenas com uma condição específica.
IS NULL — Retorna as linhas com valores nulos.
LIKE — Pesquisa valores semelhantes em uma coluna.
COMMIT — Tudo feito na transação deve ser persistido.
ROLLBACK — Tudo feito na transação deve ser descartado.
GROUP BY — Agrupa dados sementes.
ORDER BY — Ordena o resultado. [DESC — Descendente ou ASC — Ascendente]
HAVING — Condição de busca para um grupo ou um conjunto de registros.
COUNT — Retorna o números de linhas.
SUM — Soma da coluna.
AVG — Média da coluna.
MIN — Menor valor de uma coluna.
MAX — Maior valor de uma coluna.

Exemplos:

-- Retorna os valores de `students` ordenados descendentemente pelo `name`, limitado a 10 e começando a partir do 5.
SELECT * FROM students s ORDER BY s.name DESC LIMIT 10 AND OFFSET 5;

-- Retorna a média da coluna `average`
SELECT AVG(average) FROM students;

-- Retorna valores que tenha
SELECT * FROM students s INNER JOIN courses c WHERE c.name = 'Biologia';

-- Retorna valores dentro da tabela `students` com nomes semelhantes a 'João'
SELECT * FROM students s WHERE s.name LIKE 'João';

-- Retorna as informações de `name`, `course` e `average` da tabela `students` quando `average` é nulo
SELECT name, course, average FROM students WHERE average IS NULL;

-- Usando o case para criar um novo retorno para quando as `average` forem maiores ou menores do que 5, se não retorna outra mensagem
SELECT name, average,
CASE
    WHEN average > 5.00 THEN 'Aprovado'
    WHEN average < 5.00 THEN 'Reprovado'
    ELSE 'Ainda não sairam as médias.'
END
FROM students;

-- Retorna a quantidade de `students` por `courses` quando tiver mais 5 id's por `courses`
SELECT COUNT(id), courses
FROM students
GROUP BY courses
HAVING COUNT(id) > 5
ORDER BY COUNT(id) DESC;

Ordens de execuções dos comandos

  1. FROM/JOIN
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY
  7. LIMIT/OFFSET

Convenção ao usar o SQL

Não é uma regra, mas quando vamos fazer uma query em SQL, deixamos os comandos/clausulas em maiúsculo, como no exemplo abaixo:

SELECT * FROM exemplo;

Assim fica mais fácil diferenciar o que são comandos/clausulas e o que são as variáveis.


REFERÊNCIAS

https://www.w3schools.com/sql/
https://dataschool.com/learn-sql/
https://www.devmedia.com.br/busca/?txtsearch=sql
https://www.oracle.com/br/database/what-is-a-relational-database/


Espero que este artigo tenha agregado um pouco de conhecimento para você! Até uma próxima!

Mas antes de ir… qual desses comandos/clausulas você mais utiliza no seu trabalho e/ou projetos?

3

Para praticar:

Uma das melhores formas de se aprender é aliando a prática com os estudos. Deu uma lida legal nos conteúdos? Quer testar se aprendeu ou decorou? Segue uma listinha onde poderá praticar e estudar SQL sem medo de configurações ou DROPS.

3
2
1
1

Sensacional o complemento que vocês deram paara o conteúdo. Sem sombra de dúvidas, colocar o conhecimento em prática é a melhor forma de se aprender.

Muito obrigado galera e bons estudos!!

3

Que artigo bacana mendoncapedro, show.

fica aqui minha contribuição para agregar a todos também:

SQL Escrita x SQL execução

Tem esse aqui no TabNews também que é interessante.
Filtros básicos

então, em relação ao uso, uso mais SELECT, JOIN... kkkk novidade né, porém todas essas cláusulas estão no nosso dia a dia.

Sugestão para artigos de complemento tambem: é explorar alguns exemplos práticos de susubselects

é isso !

1

Primeiramente, muito obrigado pelo feedback!! Já vou deixar anotado a sua sugestão!!

Certamente esses dois comandos são muito utilizado, o SELECT nem se fala...

Muito massa seu conteúdo e acho muito interessante esses desafios no final do artigo para estimular o pessoal a tentar fazer, e, com isso, aprender sobre o conteúdo passado.

E obrigado por complementar com o artigo do bruiz. Top demais!!

Novamente, muito obrigado pela colaboração e feedback!!!

3

Exatamente isso ai, quando estava no 4º p da faculdade, estudei banco de dados 2 com MySQL aprendemos a fazer várias consultas, das mais simples as mais complexas, mas de uma coisa eu tenho absoluta certeza, só da pra aprender SQL ou alquer linguagem de programação com MUITA prática, quando estava aprendendo sql, eu buscava entender de todas as formas possíveis quando arrumei o meu primeiro JOB como programador, as consultas na sua grande maioria das vezes não, usava nem a metado do que eu tinha aprendido. Mas algumas vezes que precisei fazer uma consulta mais avançada, eu não teria conseguido se não tivesse praticado bastante de várias formas diferentes.

2
1
2
1

Cara muito massa esse GIF, mostra certinho as interações do JOIN de maneira muito simples e clara, obrigado por compartilhar!

Muito obrigado pelo feedback!

2

Tenho que parabenizar o Filipe, a vida de um programador é resolver problemas, e ele resolveu um problemao kkkkk, na Tab News escontrar informações pra nós programadores ficou extremamente fácil.

1
2
1
2

Engraçado como as coisas funcionam, hoje travei com um problema de SQL, já fiz algumas buscas e de momento ainda não encontrei solução, esbarrei logo aqui com esse conteúdo legal.
Muito obrigado pela paciência em sintetizar tão bem e ser tão objetivo, conteúdo digno de ser favoritado. SHOOOW!

1

Poxa, muito obrigado pelo feedback!! Fico feliz que tenha gostado do artigo!
E espero que tenha conseguido resolver o seu problema.

Bons estudos pra você!!

2
1

Primeiramente, gostaria de agradecer muito pelo seu feedback!

Certamente o Foreign Key e o Primary Key são constrains bem importantes mesmo. Caberia até criar mais um artigo, complementar a esse, abordando, além dessas constrains, outras como, Index, Unique, Not Null, que tão importantes quanto as citadas, além de serem bastantes utilizadas no dia a dia.
Além disso, os tipos de dados que existem, varchar, tinyint, decimal, blob, entre outros, também caberia nesse artigo complementar.

Tenho certeza que isso agregaria muito para nossa comunidade.

O site da w3schools é fenomenal! Eles tem um conteúdo muito bem explicado e com exemplos, apesar de ser em inglês, o que pode dificultar um pouco o entendimento.

Vou deixar aqui os links sobre Primary Key, Foreign Key, Constrains e DataTypes, pra deixar como material complementar sobre o artigo acima.

Novamente, muito obrigado miguellb!

1
1

Poxa, muito obrigado pelo feedback!! Fico feliz que você conseguiu entender e aprender um pouco com o meu artigo. Espero que possa ajudar outras pessoas da sua sala também!!

1
1
1

Ótimo post, eu como dev junior ainda tenho uma certa dificuldade em entender o conceito de left join e right join, gostei bastante do post, sucesso!

1
1

Conteúdo incrível, bem detalhado e de forma objetiva! Com certeza irei consultá-lo em caso de dúvidas em alguma implementação.

Muito obrigado por compartilhar seu conhecimento conosco!

1
1
1

No começo tudo parece um monstro, não é? Mas aprendendo e colocando em prática, a gente percebe que não tão ruim assim. Bora pra cima!!

Obrigado pelo feedback!!

1
1

Obrigado pelo feedback!! Concordo 100% com você, o SELECT é o campeão mesmo. No meu caso, além desses comandos que você mencionou, eu uso bastante o ALTER TABLE! Bons estudos!!

1
1
1

Eu parei de usar o SQL por que quando eu "desligava" o site, e ligava de novo, ele não conseguia acessar os dados, ai eu tinha que ir lá, apagar o arquivo antigo, criar um novo e colocar tudo o que tinha antes manualmente. Acredito - e espero - que seja culpa minha.

1

Então teria que dar uma investigada pra confirmar, mas pode ter sido um erro na hora de configurar o banco da sua aplicação.

Acredito que foi um erro que não deve ser muito complexo de resolver.

Mas espero que você volte a usar o SQL. Ele vai te ajudar bastante nas suas futuras aplicações. Ele pode escalar bastante o níveis das suas futuras aplicações.

Bons estudos!!

1
1
1

Ótimo post! Como iniciante na área dev, é muito interessante consumir conteúdos complexos como SQL desta maneira mais simples, pelo menos como primeira vista, e ir aprofundando melhor depois!

1

Obrigado pelo feedback!! Espero que esse artigo tenha agregado um pouco de conhecimento pra você! No começo, tudo parece meio confuso e complexo, mas te garanto que daqui a pouco isso começa a se tornar mais simples na nossa cabeça. Bons estudos!!

1
1

Obrigado pelo feedback!!

O pessoal fez uns comentários de alguns sites que para testarem os conhecimentos com SQL que eu acho que você encontrar alguma coisa relacionada a testes paara recrutamento.

Eu já fiz entrevistas que usaram o Hackerrank, mas não foi especificamente com SQL, mas lá existem alguns testes para isso.

Dando uma procurada na internet, descobri esse site da DevsKiller, [https://devskiller.com/pt/testes-de-codificacao-especialidade/sql/] que aparentemente tem o que você precisa, porém é pago.
PS: Eu nunca usei e não conheço alguém que já tenha usado para te recomendar.

Espero que você consiga encontrar o que você precisa!

1
1

Reaente fico impressionado como mesmo já tendo consumido muito conteúdo sobre a linguagem ainda tenha coosa para aprender sobre SQL.

Conteúdos como esse aqui devem ser lido kais de uma vez, o que faz eu sentir mais uma vez a falta de um recurso de salvar publicações.

Parabéns pela publicação 👏.

1

Obrigado pelo feedback!! Realmente, tem vários conteúdos muito bacanas aqui no tabnews e também sinto falta do recurso de salvar.

Pessoal tem criado formas alternativas de salvar os conteúdos, como esta, feita pelo lucaswilliams, de adicionar tags nos comentários para quando entrarmos no nosso perfil, conseguirmos visualizar os posts salvos pela Tag.

E uma outra muito bacana feita pelo silvanomarques, que é uma extensão para os navegadores baseados em Chromium, para salvar os conteúdos. Tenho começado a usar essa e está sendo bem interessante.

Bons estudos!!

1
1
1
1
1

Estou iniciando na área e o conteúdo foi sensacional para tirar muitas dúvidas simples que estava. Obrigado pelo tempo disponibilizado para resumir o conteúdo!

1
1

Edit: resolvido. Fui ajudado pelo ChatGPT depois dessa sacada genial do ofelipedeavila.

Que coincidência, eu estou com um pequeno probleminha neste exato momento relacionado a SQL rsrs

Seria muita folga perguntar por aqui? Já tentei procurar no Google, mas não achei o jeito certo de procurar, creio eu.

É (deve ser) algo muito simples, mas estou quebrando a cabeça para fazer: num shell script, eu quero passar o valor de uma variável como o nome do banco de dados, ficaria mais ou menos assim:

USER='username';

_<< aí abre o sql, esqueci o comando agora kk >>_

CREATE db_$USER > o nome do usuario aqui 

O banco de dados a ser criado chamaria db_username
...

Alguém tem uma luz de como posso resolver isso? E sim, sou bem iniciante na área :)

Obrigado desde já a quem ajudar, garanto meus upvotes rsrs

2

Que bom que você conseguiu resolver o seu problema, ainda mais com o ChatGPT que tem feito coisas muito massa e estou bem empolgado com o que essa IA tem a oferecer para nós.

Muito massa o post do ofelipedeavila, já até deixei salvo aqui!!

Bons estudos!!

1
1
1

meus parabens, ta super top esse conteúdo, se tiver mais, pfv passe pq tem gente pra consumir e principalmente pela sua facilidade de traduzir o que pra nós é dificil, vlw.

1

Cara, fico muito feliz pelo seu comentário e agradeço pelo feedback.
Pretendo criar mais conteúdos, uma pra colocar o que venho estudando em prática, e, também, para que possa ajudar mais pessoas, já que conhecimento nunca é demais.

Comentários como o seu, me motiva a querer fazer ainda mais conteúdos.

Muito obrigado, Dpaes!!

1
1
1
1
1
1
1