Olá, sou Victorino Vila e serei seu instrutor neste curso de consultas avançadas com MySQL. Se este for o seu primeiro contato com a linguagem SQL (Structured Query Language), sugiro que antes veja nosso curso de Introdução ao SQL com MySQL para que consiga acompanhar com tranquilidade o conteúdo a seguir, que é um pouco mais aprofundado.
No início deste curso, vamos rever a história do SQL e do MySQL (como esse banco surgiu, a situação dele hoje no mercado e quais são suas principais características) e reservaremos um momento para a preparação do ambiente de trabalho. Caso você não tenha o MySQL instalado na sua máquina, recomendo que assista ao tutorial do curso introdutório citado anteriormente.
Feito isso, com uma base de dados já alimentada, começaremos pelo básico: consultas de tabelas com seleções simples e seleções condicionais, aprendendo aos poucos sobre expressões lógicas e operadores, como o LIKE
. Em seguida, daremos foco às saídas de nossas consultas, estudando especialmente como limitar e ordenar os dados exibidos.
São várias as estruturas a serem exploradas nesse curso, entre elas o HAVING
, aplicada geralmente quando um dado agrupado faz parte do critério de filtros; e diferentes tipos de JOIN
, bastante importantes no SQL, que permitem juntar duas tabelas em uma única consulta.
Além disso, aprenderemos sobre subconsultas (ou seja, uma consulta dentro de outra) e visões, também chamadas de views, que, grosso modo, são consultas que ficam armazenadas de forma lógica no banco de dados e podem ser usadas como se fossem uma tabela.
Depois, estudaremos as funções. São elas que realmente diferenciam os diversos bancos de dados relacionais entre si. Como citado no outro curso, todos os bancos de dados seguem o padrão ANSI, sendo possível aplicar os mesmos conhecimentos em MySQL, SQL Server ou Oracle. Entretanto, cada banco de dados trabalha de maneira diferente em relação às funções.
Aqui abordaremos funções que trabalham com string
(textos), funções matemáticas, funções de datas e de conversão (que permitem converter dados em diferentes tipos). Por fim, encerraremos esse treinamento aplicando nossos novos conhecimentos em casos reais, criando duas consultas bem complexas sobre os dados da nossa empresa de suco de frutas.
Será um curso extenso e com bastante conteúdo, porém um excelente passo inicial para quem está começando os estudos com SQL!
O primeiro passo para seguirmos neste curso é ter um ambiente devidamente configurado com o MySQL. Então, caso você não tenha o MySQL instalado na sua máquina, você pode ir ao nosso curso de Introdução ao SQL com MySQL e assistir ao vídeo 4 da aula 1, no qual ensino como fazer essas instalações e configurações.
Feito isso, você terá o MySQL e o MySQL Workbench instalados. Vamos, então, seguir com mais alguns ajustes.
Para aprender sobre consultas SQL, é preciso ter dados para consultar, portanto, nosso passo seguinte será criar uma base de dados. Para isso, executaremos o MySQL Workbench e acessaremos a nossa conexão local que foi configurada quando instalamos o MySQL.
À esquerda, temos uma área denominada SCHEMAS. Com o botão direito do mouse, vamos clicar nessa área, selecionar "Create Schema..." e dar um nome para nossa nova base: "sucos_vendas". Em seguida, clicaremos no botão Apply, depois Apply novamente e, por fim, em Finish. Assim, teremos criado a base de dados (ela aparecerá na área SCHEMAS), porém ela ainda estará vazia - ou seja, sem tabelas e sem dados.
Portanto, vamos recuperar alguns dados. Para isso, você pode fazer aqui o download do arquivo RecuperacaoAmbiente.zip. Nas versões mais recentes do MySQL, a collation utf8mb4_0900_ai_ci
foi descontinuada. Então, caso você tenha problemas em utilizar a versão do arquivo disponibilizada acima, você pode fazer aqui o download desta outra versão.
Vamos descompactar o arquivo baixado e, dentro dele, você encontrará um subdiretório chamado DumpSucosVendas. Lembre-se da localização desse diretório, vamos usá-lo em breve.
No MySQL Workbench, abaixo da área SCHEMAS, há duas abas: "Administration" e "Schemas". Clicaremos na primeira e, em seguida, selecionaremos "Data Import/Restore" (em português, importar/restaurar dados). Isso abrirá uma caixa de diálogo e você notará que a opção "Import from Dump Project Folder" já está selecionada. À direita dessa opção, clicaremos no botão "..." e selecionaremos a pasta DumpSucosVendas.
Por fim, clicaremos em "Start Import", no canto direito inferior da caixa de diálogo. Com isso, teremos recuperado os dados e nossa base "sucos_vendas" não estará mais vazia.
Para se certificar de que esse processo foi bem-sucedido, daremos um clique duplo sobre o nome do banco de dados "sucos_vendas", na área SCHEMAS, para que fique destacado em negrito. Depois, abriremos um novo arquivo .sql
(com o atalho "Ctrl + T" ou clicando no primeiro ícone na barra superior do programa) e digitaremos SELECT * FROM itens_notas_fiscais
. Para executar este script, clicaremos no terceiro ícone (um símbolo de raio) presente na barra localizada logo acima da área em que você acabou de digitar. Se tudo estiver certo, você verá uma tabela com os dados das notas fiscais. Ou seja, você recuperou os dados com sucesso!
Caso você não tenha conseguido recuperar os dados dessa maneira, a seguir explicarei uma forma alternativa de fazer esse processo. Porém, se o primeiro método funcionou, você já pode seguir para o próximo material.
Então, vamos ao método alternativo...
Primeiro, vamos apagar o banco de dados, clicando com o botão direito sobre "sucos_vendas" e selecionando "Drop Schema...". Aparecerá uma mensagem de confirmação, pressionaremos "Drop Now".
A seguir, vamos criar a base novamente. Essa parte é igual à criação que fizemos anteriormente: clicaremos com o botão direito na área SCHEMAS, selecionaremos "Create Schema..." e nomearemos a base "sucos_vendas". Com o banco criado, daremos um clique duplo para selecioná-lo (ele ficará em negrito).
Em seguida, no menu superior do programa, clicaremos em "File > Run SQL Script...". Vamos procurar pela pasta que descompactamos anteriormente, nela vamos encontrar vários arquivos com extensão .sql
. Selecionaremos o arquivo Criacao_Esquema.sql. Isso abrirá uma caixa de diálogo, com dois campos a serem modificados. Em "Default Schema Name", selecionaremos "sucos_vendas". Em "Default Character Set", escolheremos "utf8". Depois, clicaremos em "Run".
Vamos repetir essa última etapa com cada um dos arquivos .sql
da pasta descompactada, seguindo a seguinte ordem:
Alguns arquivos demorarão mais para serem carregados, mas, ao final, você terá o seu banco com todos os dados recuperados e estará pronto para continuar o curso!
No vídeo que mostrarei agora, vou falar um pouco sobre a história da linguagem SQL, as suas vantagens e desvantagens, e como dividimos os grupos de comandos de SQL.
O vídeo que vou apresentar a seguir é o mesmo presente no curso de Introdução ao SQL com MySQL, então quem já assistiu àquele curso, se quiser, terá uma chance de recapitular e quem não o viu poderá conhecer a história do SQL e suas características agora.
Vamos iniciar contando a história da linguagem SQL, para compreendermos quais foram os motivos, como surgiu e o seu histórico.
A linguagem SQL foi desenvolvida no começo dos anos 70, na cidade de São José, Califórnia, em um projeto chamado System R da IBM, do inglês International Business Machines, cujo objetivo era comprovar a viabilidade da implementação de um modelo relacional, que um estudioso chamado Codd estava propondo.
Esse estudioso elaborou uma forma estruturada de realizar consultas nos bancos de dados que estavam surgindo, chamados “bancos de dados relacionais”.
Naquela época, os bancos de dados ainda não possuíam relacionamento entre as tabelas nas quais os dados eram armazenados. Era a categoria de banco de dados mais antigo, a sequencial, que efetuava a consulta dos registros de maneira sequencial, ou seja, um após o outro.
Com o surgimento dos bancos de dados relacionais (ou DBMS, do inglês, Data Base Management System, “Sistema de Gerenciamento de Banco de Dados), Codd considerou criar uma linguagem que facilitasse a extração e manipulação de dados, além da manipulação das estruturas desse banco aproveitando a característica de relacionamento entre eles.
Porém, não era apenas a IBM que estava trabalhando com os novos bancos de dados relacionais. Por volta dos anos 80, a Oracle, dentre outras empresas, também estava buscando maneiras mais fáceis de manipular essas novas estruturas.
Mais para o final dos anos 80 e início dos 90, o órgão americano, o ANSI (da sigla American National Standard Institute), estabeleceu alguns padrões para as consultas dos bancos de dados relacionais.
Então, foi criada a linguagem SQL, do inglês Structured English Query Language, que traduzindo seria algo como “linguagem de consulta estruturada em inglês”. No inglês, geralmente, é pronunciado SEQUEL e não SQL, soletrando as letras - diferentemente do português, em que normalmente lemos como “ésse quê éle”.
O principal objetivo da linguagem SQL é padronizar a maneira como os registros são consultados nos bancos de dados relacionais. Atualmente, os bancos relacionais aderem ao padrão SQL, que vai além das consultas: é usado também, na criação, alteração, estruturação e manipulação do banco de dados, além da maneira como banco de dados interage com a segurança, entre outros usos.
Entre as vantagens do banco de dados relacional, a primeira é que essa padronização utilizando a linguagem SQL tem um custo reduzido do aprendizado. Por exemplo, o profissional com conhecimento sobre o SQL da Oracle conseguirá manipular facilmente o MySQL ou SQL Server da Microsoft. Por mais que existam diferenças - principalmente na parte de funções -, a adaptação do profissional não é uma questão complicada.
Outra vantagem, é a portabilidade. Por exemplo, é mais simples migrar sistemas que usam Oracle para SQL Server ou para MySQL, ou vice-versa. Lembrando que quanto mais for utilizado o SQL Standard definido pelo ANSI, mais fácil será essa portabilidade no futuro. Então, é útil evitar as funções específicas do banco de dados e permitir que o programa realize essa tarefa.
Já a longevidade é a garantia de que os seus relatórios ou processos utilizando o SQL irão funcionar por um longo período, já que estarão sempre adaptados ao padrão ANSI. Ou seja, ao efetuar um upgrade de banco de dados o seu sistema não ficará fora de serviço.
Outro benefício é a comunicação. O fato da maioria utilizar SQL permite a facilidade de comunicação entre os sistemas. Como, por exemplo, processos de ETL, (extract, transform and load), ou de integração entre sistemas que ficam mais simples de serem desenvolvidos, já que ambos utilizam o SQL padrão.
Por último temos a liberdade de escolha. Por existir um padrão de linguagem, se a empresa for optar pelo uso de um banco de dados relacional não ficará presa à linguagem de comunicação, por exemplo, já que são bem semelhantes. Ao tomar essa decisão, a corporação irá utilizar outros critérios de escolha, como performance, hardware, custo, entre outros.
Contudo, essa padronização não possui apenas vantagens, há algumas desvantagens - ainda que poucas. A primeira é a privação da criatividade. O SQL possui limitações que podem não atender às novas demandas no mercado na linguagem SQL, principalmente com o surgimento das redes sociais e dos enormes volumes de dados, o chamado big data. Ou seja, há uma carência nas coletas de dados que estão trafegando na internet.
Para tal, estão surgindo outros bancos que usam padrões diferentes dos bancos de dados relacionais, o chamado NoSQL. Estes atendem de forma mais eficiente as demandas de tabelas de big data , como no caso das redes sociais. Lembrando que estamos nos referindo a estruturas que escapam do padrão ANSI e que, por isso, exigem um aprendizado mais específico.
Outro ponto é a escassez de estruturação da linguagem SQL, já que ela não possui if, for e when, isto é, comandos condicionais como as demais linguagens de programação.
Para conseguir suprir essa carência da estruturação, os bancos de dados relacionais da Oracle, SQL e MySQL criaram suas linguagens próprias internas que realizam esse conjunto de estruturação usando a linguagem SQL, mas que acaba se afastando um pouco do padrão ANSI.
Falando um pouco sobre o padrão ANSI, este possui três grupos de comandos. O primeiro, é o DDLs, ou Data Definition Language (linguagem de definição de dados). Os DDLs são a parte da linguagem SQL que permite a manipulação das estruturas do banco de dados. Como, por exemplo, criar um banco, tabelas, índices, apagar as tabelas e alterar a política de crescimento de índice. Ou seja, os comandos que envolvem a estrutura do banco de dados relacionais são os comandos do tipo DDL.
O segundo grupo de comandos são os chamados DML, ou Data Manipulation Language (linguagem de manipulação de dados). Esse grupo visa gerenciar os dados: incluindo, alterando e excluindo informações nas estruturas do banco, como as tabelas. Além disso, realizam as consultas, buscam as informações das estruturas e exibiremos para o usuário.
Finalmente, chegamos nos comandos DCL, ou Data Control Language ("linguagem de controle de dados"). Este grupo nos permite administrar o banco de dados como, por exemplo, o controle de acesso, o gerenciamento do usuário, gerenciar o que cada usuário(a) pode ou não visualizar, gerenciar o banco ao nível de estrutura (como a política de crescimento, como e onde será armazenado no disco), administrar os processos, saber quantos processos estão sendo executados, controle de log e assim por diante.
Nesse vídeo quis mostrar uma visão geral para vocês, não somente a história do SQL, mas também as suas características, vantagens, desvantagens e comandos dessa linguagem.
O curso Consultas SQL: avançando no SQL com MySQL possui 327 minutos de vídeos, em um total de 68 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.