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?
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.
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
- FROM/JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- 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?