Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso Consultas SQL: avançando no SQL com MySQL

Consultas SQL: avançando no SQL com MySQL

Configurando ambiente e conhecendo o SQL - Introdução

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!

Configurando ambiente e conhecendo o SQL - Preparando ambiente

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!

Configurando ambiente e conhecendo o SQL - História do SQL

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.

Sobre o curso Consultas SQL: avançando no SQL com MySQL

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:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas