Voltar para a lista de artigos Artigos
15 minutos de leitura

Os Termos SQL que os Iniciantes Devem Saber - Parte 3

Esta é a terceira parte da minha lista de termos SQL essenciais para iniciantes. Na primeira, você aprendeu o que são tabelas, bancos de dados relacionais e consultas. Na segunda parte do tutorial, eu lhe falei sobre apelidos, Cláusulas JOIN em SQL, chaves primárias e subconsultas. Agora, está na hora de termos mais avançados de bancos de dados. Mas não tenha medo! Não vou esmagá-los com definições científicas. Explicarei tudo simplesmente para que você possa entender facilmente.

Se você quiser rever qualquer termo SQL básico, veja meus artigos anteriores, SQL Terms Beginners Should Know e SQL Terms Beginners Should Know - Parte 2. Lembre-se de marcar este artigo para que você possa facilmente voltar a ele!

Vamos ao que interessa! Aqui estão mais alguns termos SQL que você precisa saber.

Termos SQL

SELECIONE

Se você já começou a aprender SQL, sua primeira instrução SQL foi provavelmente SELECT. Se não, pense se você tem uma boa fonte de conhecimento de SQL.

SELECT é a base do básico, especialmente quando se trata de análise de dados. Usamos SELECT para literalmente escolher nossos dados desejados a partir de um banco de dados. Podemos selecionar qualquer coisa, incluindo colunas ou linhas específicas usando filtragem. Mas primeiro, vamos olhar para o uso mais simples do SELECT. Suponha que tenhamos um Courses mesa que se parece com esta:

IDNameDialectTopic
1SQL para IniciantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS

Agora vamos escrever a consulta SQL mais simples usando SELECT e, por exemplo, uma cláusula WHERE (que nos permite escolher dados específicos). Suponhamos que queremos encontrar o curso de Relatórios SQL no MS SQL. A consulta seria parecida com esta:

SELECT Name
FROM Courses
WHERE Dialect=‘MS SQL’
AND Topic=‘SQL Reporting’

Após a declaração SELECT, definimos o que queremos obter - no nosso caso, o nome do curso. Após FROM, escrevemos de onde os dados devem vir: o Courses mesa. Em seguida, utilizamos uma cláusula WHERE para indicar que tipo de dados desejávamos. Especificamos duas condições, então usamos AND para que o banco de dados soubesse que nosso resultado desejado tinha que corresponder a ambas as condições. Como você pode ver, esta consulta não é muito diferente de uma frase em inglês comum.

O resultado será informação sobre o curso Como Criar Relatórios Básicos em SQL no SQL Server. Se sua empresa utiliza uma solução de banco de dados da Microsoft e você gostaria de tomar melhores decisões estratégicas com base em seus dados, este é o curso perfeito para você. Ele faz parte do curso SQL Reporting no MS SQL Server.

Meu colega Adrian escreveu um ótimo artigo sobre como aprender a declaração SELECT em SQL. Você aprenderá muito mais sobre SELECT lá. E quando você aprender o básico, vale a pena considerar tópicos mais avançados. Se você quiser aprender bem SQL, eu recomendo nosso SQL para Iniciantes curso. Este é o primeiro passo para se tornar um profissional SQL.

INSERIR INTO

INSERT INTO é um dos principais comandos SQL usados em todos os bancos de dados populares. É essencial para trabalhar com dados e tabelas, especialmente se você for um engenheiro de software, administrador de banco de dados, engenheiro de dados ou alguém que trabalha com o lado técnico de bancos de dados.

O que o INSERT INTO faz? Exatamente o que ele diz - coloca os dados na tabela. Isto pode ser uma única linha ou um grupo de linhas.

Na programação, usamos a sigla CRUD - criar, recuperar, atualizar e excluir - para descrever as quatro operações básicas que você pode fazer com os dados. INSERT é uma delas. (Mais tarde, descreverei UPDATE e DELETE, também. Todas elas são usadas para modificar as bases de dados).

Vamos tomar a mesma mesa, Coursesque acabamos de usar para demonstrar o comando SELECT e acrescentar algumas informações a ele com a declaração INSERT (ou INSERT INTO).

IDNameDialectTopic
1SQL para IniciantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS

Suponha que queiramos adicionar outro curso de LearnSQL.com.br para a mesa. Desta vez, é sobre o Curso de Práticas em SQL em SQL Standard - ótimo para praticar suas novas habilidades ou se preparar para uma entrevista de trabalho ou exame. Vamos adicioná-lo à nossa tabela usando o comando INSERT INTO. Nossa consulta SQL seria parecida com esta:

INSERT INTO Courses (id, Name, Dialect, Topic) 
VALUES (5, ‘Curso de Práticas em SQL’, ‘Standard’, ‘Basic’);

Isto acrescenta outra linha à nossa tabela:

IDNameDialectTopic
1SQL para IniciantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS
5Curso de Práticas em SQLStandardBasics

Você pode adicionar dados uma linha de cada vez ou pode inserir várias linhas ao mesmo tempo usando uma instrução SQL. Como? Seria algo parecido com isto:

INSERT INTO Courses (id, Name, Dialect, Topic) 
VALUES ('6', ‘a’, ‘b’, ‘c’),
       ('7', ‘x’, ‘y’, ‘z’),
       …;

Se você adicionar valores a todas as colunas em uma tabela, não será necessário incluir nomes de colunas em sua consulta. Entretanto, tenha cuidado para inserir os valores na ordem correta. Caso contrário, você terá o caos. Se você estivesse adicionando dados a todas as colunas, sua consulta teria este aspecto:

INSERT INTO Courses 
VALUES (5, ‘Curso de Práticas em SQL’, ‘Standard’, ‘Basic’);

Lembre-se, especificar colunas não é necessário, mas isso não significa que você não possa fazê-lo se quiser ter certeza de que os dados vão para os lugares certos.

Eu sei que você provavelmente está apenas começando com INSERT INTO; descrevi seu cenário de uso mais simples. Entretanto, esta afirmação pode ser muito interessante - INSERT INTO pode aparecer, por exemplo, em subconsultas. Você quer saber mais sobre isso? Então leia o artigo Como Usar as Subconsultas nas Declarações INSERT, UPDATE, e DELETE. Você também pode inserir dados de uma tabela para outra, como explica minha amiga Rebecca em SQL Insert, Update, and Delete.

Se você realmente quer aprender bem INSERT, eu recomendo nossa Usando Comandos INSERT, UPDATE e DELETE em SQL curso. Ele contém mais de 50 exercícios interativos, graças aos quais você aprenderá os segredos da modificação do banco de dados em SQL.

ATUALIZAR

Agora que você sabe INSERT INTO, será muito mais fácil para você entender UPDATE - é apenas uma forma de alterar os dados em uma ou mais linhas de tabela. Mas tenha cuidado ao usar este comando; se você não estiver prestando atenção, você pode realmente causar muitos problemas a si mesmo. Erradamente usado, UPDATE pode destruir a tabela inteira. Mas não há necessidade de se preocupar; apenas aprenda a usar este comando SQL bem antes de começar a atualizar seus dados.

Aqui está Courses novamente:

IDNameDialectTopic
1SQL para IniciantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS
5Curso de Práticas em SQLStandardBasics

Suponha que você decidiu que o tópico do Curso de Práticas em SQL curso não deve ser 'Básico' mas 'Trilha de Práticas em SQL'. Embora seja destinado a iniciantes, este curso também é útil para usuários mais avançados que queiram atualizar seus conhecimentos. Para mudar isto, usaremos o comando UPDATE. A consulta SQL terá este aspecto:

UPDATE Courses 
SET Topic='Trilha de Práticas em SQL’
WHERE ID=5;

Nossa tabela terá este aspecto:

IDNameDialectTopic
1SQL para IniciantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS
5Curso de Práticas em SQLStandardTrilha de Práticas em SQL

É muito importante aplicar a cláusula WHERE neste caso. Se ela fosse omitida, todos os valores da coluna topic seriam alterados, e nós teríamos isto (o que não é legal):

IDNameDialectTopic
1SQL para IniciantesStandardTrilha de Práticas em SQL
2Revenue Trend Analysis in SQLStandardTrilha de Práticas em SQL
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLTrilha de Práticas em SQL
4Postgre Cláusulas JOIN em SQLPostgreSQLTrilha de Práticas em SQL
5Curso de Práticas em SQLStandardTrilha de Práticas em SQL

Como INSERT INTO, UPDATE nos permite modificar mais de uma linha ao mesmo tempo. Se voltarmos à nossa tabela original CoursesPor exemplo, poderíamos renomear o dialeto 'Standard' para 'SQL Standard' para todos os cursos que utilizam este dialeto. Veja como fazer isso:

UPDATE Courses
SET Dialect='SQL Standard'
WHERE Dialect='Standard';

O que você acha que vamos conseguir? Claro, uma tabela ainda mais agradável:

IDNameDialectTopic
1SQL para IniciantesSQL StandardBasics
2Revenue Trend Analysis in SQLSQL StandardSQL Reporting
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS
5Curso de Práticas em SQLSQL StandardTrilha de Práticas em SQL

DELETE

O terceiro comando SQL importante é DELETE, que remove os dados existentes da tabela. Aqui eu peço que você seja ainda mais cuidadoso do que com UPDATE. Se você não fizer backups regulares de seus dados, apagar algo do banco de dados pode ser irreversível. Algo assim aconteceu comigo uma vez, e aprendi uma lição de vida com isso!

Vamos levar nossa tabela Cursos e remover o curso PostgreSQL dele. Tudo o que precisamos fazer é utilizar a seguinte consulta:

DELETE FROM Courses 
WHERE Dialect=’PostgreSQL';

E voilá! Não há nenhum curso Postgre Cláusulas JOIN em SQL na mesa, o que é uma pena porque é realmente bom.

Como com os comandos anteriores, DELETE também funciona em mais de uma linha. Se houvesse mais cursos na tabela com um dialect definido como 'PostgreSQL', todos eles seriam excluídos.

Além disso, pode-se excluir todas as linhas da tabela com uma linha SQL - mesmo que a tabela tenha centenas de milhares delas. Em nosso caso, seria suficiente escrever:

DELETE FROM Courses;

Isto não significa que estamos apagando a tabela em si: sua estrutura, atributos e índices permanecerão no lugar. Entretanto, ela não conterá nenhum registro. Há outro comando DROP que remove a tabela inteira; talvez eu lhe conte sobre isso em outro artigo.

PEDIDO POR

Se você estiver extraindo dados de uma tabela, é uma boa idéia ter um bom resultado ordeiro. Às vezes, você quer ordenar os resultados de sua consulta. Aqui você precisará ORDER BY, o que lhe permite organizar os dados em ordem ascendente (A-Z, 1-10) ou descendente (Z-A, 10-1).

Como gostamos de ter tudo organizado ordenadamente, vamos dar uma olhada em nosso Courses mesa. Desta vez, queremos ver os nomes dos cursos em ordem alfabética. Se algum curso tiver o mesmo nome, mas estiver em dialetos SQL diferentes, ordenaremos os nomes dos dialetos em ordem alfabética também:

SELECT *
FROM Courses 
ORDER BY Name;

O resultado será adorável.

IDNameDialectTopic
3Como Criar Relatórios Básicos em SQL in SQL ServerMS SQLSQL Reporting
4Postgre Cláusulas JOIN em SQLPostgreSQLSQL JOINS
2Revenue Trend Analysis in SQLSQL StandardSQL Reporting
1SQL para IniciantesSQL StandardBasics
5Curso de Práticas em SQLSQL StandardSql Practice

Na primeira parte do meu tutorial sobre termos SQL para iniciantes, eu descrevi GROUP BY. À primeira vista, é muito semelhante a ORDER BY. No entanto, existem grandes diferenças, que explicamos no artigo Difference Between GROUP BY and ORDER BY in Simple Words. E o que acontece se algum valor NULL aparecer na tabela? Descubra lendo Como ORDER BY e NULL trabalham juntos em SQL.

HAVING

HAVING é usado para filtragem de dados. HAVING é um dos amigos SELECT's e não pode existir sem ele; também funciona com WHERE e GROUP BY. Esta cláusula especifica a condição ou condições para um grupo ou uma agregação.

Aqui está um exemplo musical do que estou falando. Vamos pegar o music_artists tabela (Os dados vêm da Wikipedia). Aqui estão oito dos melhores artistas.

ArtistCountryGenreSale_mln
The BeatlesUnited KingdomRock600
Elvis PresleyUnited StatesRock and roll500
Michael JacksonUnited StatesPop350
Elton JohnUnited KingdomRock300
MadonnaUnited StatesPop275
Led ZeppelinUnited KingdomRock200
RihannaUnited States BarbadosPop250
Celine DionCanadaPop200

Para calcular a soma das vendas de álbuns de artistas por seu país, você escreveria esta consulta:

SELECT Country, SUM(Sale_mln)
FROM music_artists
GROUP BY Country;

O resultado é uma lista dos países dos artistas e o número total de álbuns vendidos por artistas de cada país.

CountrySale_mln
United States1375
United Kingdom1100
Canada200

Suponha que queremos filtrar ainda mais o resultado e queremos que nossa consulta só devolva países cujos artistas de topo tenham vendido mais de um bilhão de álbuns:

SELECT Country, SUM(Sale_mln)
FROM music_artists
GROUP BY Country
HAVING SUM(Sale_mln)>=1000;

Desculpe, Canadá, por ter ficado de fora dos resultados. Drake tem que vender mais alguns álbuns. No final, temos uma comparação entre os EUA e o Reino Unido.

Este exemplo é apenas a ponta do iceberg. Se você quiser saber mais sobre HAVING, recomendo que leia The SQL HAVING Clause Explained e nosso SQL HAVING Tutorial. Ambos lhe darão uma base sólida para o uso de HAVING em SQL. Você também pode aprender e praticá-lo em nosso SQL para Iniciantes curso.

Ordem de operações SQL

Imagine que uma consulta SQL é uma receita para um prato delicioso. Cada um dos elementos desta consulta é uma etapa sucessiva. Por exemplo, GROUP BY é a etapa de cozimento e ORDER BY é a guarnição dos alimentos laminados.

Uma consulta SQL consiste na maioria das vezes de vários comandos que são executados pelo banco de dados em uma ordem específica. Por exemplo, é impossível ordenar o resultado antes de usar HAVING para filtrá-lo; seria um trabalho desnecessário ordenar todos os registros em vez de apenas os que teremos no resultado final.

Mesmo que você esteja usando SQL todos os dias, você não precisa memorizar todas as regras. Tudo o que você precisa fazer é lembrar a ordem geral na qual os comandos e cláusulas individuais são implementados. Entretanto, se você planeja tornar-se um desenvolvedor de software, você deve saber o que acontecerá no banco de dados após inserir uma consulta específica.

Você quer saber mais sobre isto? Meu colega Ignacio descreveu tudo perfeitamente em seu artigo Ordem de Operações SQL. Lembre-se de que, dependendo de quais cláusulas aparecem em sua consulta, a seqüência de ações pode ser diferente. Há uma regra geral, no entanto, que é ilustrada nesta figura:

Ordem de operações SQL

Ferramentas do Banco de Dados

Agora, vamos dar uma olhada nos sistemas mais populares de gerenciamento de bancos de dados relacionais ou RDBMSs.

MySQL

MySQL

O MySQL é atualmente o SGBD mais popular do mundo. De acordo com um estudo da Stack Overflow, ele teve mais de 50% do mercado no ano passado - embora o PostgreSQL esteja perto de ficar para trás.

O MySQL foi fundado há 25 anos na Suécia. Em 2008, foi adquirida pela Sun Microsystems, e desde 2010 tem sido desenvolvida sob o guarda-chuva Oracle. Curiosamente, o gigante de TI também tem sua própria solução de banco de dados, que descreverei daqui a pouco.

Este SGBD é gratuito, funciona para a maioria das aplicações e roda na maioria das plataformas populares, incluindo Linux, Windows e macOS. Tudo isso - junto com uma comunidade ativa e um bom suporte - faz do MySQL uma grande escolha para muitos usos. Pessoalmente, sou um fã do PostgreSQL, mas o MySQL certamente não está faltando nada que você precisaria.

Se você quiser saber mais sobre bancos de dados populares, recomendo a leitura de nosso artigo sobre Os Bancos de Dados Mais Populares em 2020.

Oracle

Oracle

Dizer que a Oracle é um gigante da TI é como dizer que a Amazon administra uma loja on-line. As soluções da Oracle são utilizadas de uma forma ou de outra por 90% das empresas da Fortune 100. Tem sido um dos principais players no mercado de software desde o início de sua existência (ou seja, no final dos anos 70). Você deve conhecer a Oracle como a proprietária do Java ou OpenOffice.

Fato engraçado: o nome Oracle veio do nome de código de um dos projetos patrocinados pela CIA em que seu co-fundador, Larry Ellison, trabalhou.

Um dos principais produtos desta empresa é Oracle Database, um SGBD muito popular. Ele é encontrado com mais frequência em empresas; muito menos frequentemente, você o verá em casa. Atualmente, as licenças do Oracle DB estão disponíveis em várias versões:

  • Oracle Enterprise Edition - A principal versão do SGBD.
  • Oracle Standard Edition - Uma versão ligeiramente reduzida, sem a possibilidade de expansão.
  • Oracle Standard Edition One - Um pouco mais reduzido do que acima; não é possível executar uma configuração em cluster, e esta versão só pode ser usada em computadores com um ou dois processadores.
  • Oracle Express Edition - Uma versão gratuita que só pode ser usada em hardware com um núcleo de processador e 1GB de RAM. Ele pode lidar com até 4 GB de dados.
  • Oracle Personal - Para usuários domésticos.
  • Oracle Lite - Para aplicações móveis.

Além de algumas das versões descritas acima, o Oracle Database é um software pago. Isto tem seus prós e contras. A desvantagem óbvia é o dinheiro - você tem que pagar a corporação para usar sua solução. Os prós incluem suporte técnico confiável e atualizações garantidas e segurança. A Oracle gasta muito dinheiro no desenvolvimento de seus produtos. No entanto, a cada ano ela perde usuários para SGBDs gratuitos e de código aberto como o PostgreSQL ou MySQL.

Como escrevi anteriormente, a controvérsia surgiu depois que a Oracle adquiriu o MySQL. Por enquanto, ambos os projetos (MySQL e Oracle DB) estão sendo desenvolvidos separadamente - mas ninguém sabe quais são os planos a longo prazo. Talvez, com o tempo, o MySQL deixará de ser livre? Ou ambas as soluções serão combinadas em uma só? É difícil de prever, mas para mim, é um dos argumentos a favor da busca de alternativas ao MySQL.

SQLite

SQLite

SQLite é algo que vale a pena observar. Está ganhando adeptos e popularidade. O projeto SQLite está em desenvolvimento desde 2000. Em 2018, 19,7% dos desenvolvedores profissionais usaram este banco de dados; em 2020, era mais de 30%. Isso não é uma coincidência.

SQLite é um SGBD de código aberto que tem excelentes características e é livre para uso. Enquanto PostgreSQL ou MS SQL são sistemas de banco de dados mais "clássicos", SQLite é o mais freqüentemente escolhido pelos desenvolvedores de aplicativos móveis. Por quê? Principalmente devido a suas capacidades e características.

Os dados são armazenados em um arquivo de até 140 TB. A biblioteca implementa o mecanismo SQL, permitindo que o aplicativo utilize o banco de dados sem executar um processo separado. Isto significa que tudo funciona de forma rápida e eficiente, o que é crucial para aplicativos web. Cada milissegundo conta.

O SQLite é baseado no padrão SQL-92. Isto significa que você será capaz de trabalhar com ele após completar nossa faixa SQL A a Z. É claro que a SQLite tem seus inconvenientes, por isso não é uma solução universal. Mas ela já tomou sua posição no mercado e não está indo a lugar algum.

Indo além dos termos SQL Beginner

Aqui está outra parcela da lista de conceitos SQL básicos que você deve conhecer. Espero que minha tradução os tenha ajudado a compreendê-los. Sei que às vezes estas não são definições precisas ou científicas, mas como ex-iniciante, também sei que às vezes a precisão ou a ciência não são de grande ajuda no início.

Se você tiver problemas com outros termos SQL, por favor, me avise nos comentários.