SQL é uma linguagem criada inicialmente pela IBM e utilizada para manipulação e processamento de estruturas de dados e um banco de dados relacional o SQL já existe há 50 anos e até hoje é muito utilizada na verdade não existe nenhuma outra linguagem que consegue fazer concorrência com o que o SQL faz e SQL caso você não saiba é a sigla pra structor query language Ou seja é uma linguagem estruturada de consulta mas ela faz mais do que isso e apesar dos seus 50 anos Ela só foi padronizada pela ANS em 1986 E desde então vem
ganhando mais funcionalidade a última atualização enquanto a gente grava foi justamente em 2023 onde foi acrescentado o tipo Jason você sabia como ela é uma linguagem padronizada ela pode ser utilizada nos principais bancos de dados disponíveis no mercado como MySQL Oracle Database post gree SQL skl server sqlite e por aí vai então aprender esql é e continuará sendo importante na forma de desenvolvedores independentemente se você trabalha com web ou mobile agora se você é full stack ou um Dev backend hum SQL tem que estar no seu [Música] sangue esse é o nosso minic curso de
SQL a ideia aqui em apenas um vídeo te mostrar o básico da linguagem para que você comece do zero claro que o assunto banco de dados é muito extenso Então nós vamos tentar ser o mais pragmático possível e a dica é você Salvar esse vídeo para sempre que você precisar consultar de novo Vamos mostrar muitos exemplos de utilização e todo vídeo lembre-se tá dividido em capítulos aqui no YouTube e como sempre para nos ajudar com esse conteúdo nós temos a parceria da hostinger se você acompanha aqui o código fonte TV sabe que também somos clientes
deles e que os nossos projetos costumam ir direto pro VPS da hostinger são muitas opções de configurações e você consegue rodar projetos em dnet Python node PHP e que mais você conseguir configurar porque você tem acesso direto ao Rot Lembrando que o armazenamento utiliza SSD e você pode criar snapshots com backup do seu VPS e garantir restauração em minutos sempre que você precisar a soluções da rosinger são realmente muito boas além do VPS Nós também utilizamos a hospedagem Cloud e o e-mail profissional deles que aliás tem um painel de configuração extremamente amigável e o webmail
que dá banho e muitos outros existentes por aí no mercado eu tenho certeza que a hosting tem um produto que vai te ajudar nos seus projetos ainda mais aqui no minicurso de SQL falando de banco de dados você pode usar o VPS deles inclusive para fazer o seu próprio servidor de banco de dados Então é só você utilizar o link que nós deixamos aqui na descrição que te garante um desconto ainda maior do que o que eles já oferecem no site assim você Experimenta e depois volta aqui para nos contar como é que foi Não
esqueça de utilizar o nosso cupom que é o código fonte simples assim então rapidinho antes da gente colocar a mão no código a gente precisa entender como o SQL foi dividido Quando falamos em SQL a gente tá falando em comandos para conseguir manipular um banco de dados e temos cinco classificações de comandos e com essa imagem você vai entender melhor quando formamos uma query SQL completa nós chamamos de cláusulas Então se acostuma aí com esse termo da esquerda pra direita a ddl é a sigla para data definition language ou linguagem de definição de dados Esses
são os comandos que interagem com os objetos do banco como as tabelas as View Storage procedures E por aí vai os principais comandos são Create drop alter e truncate ou seja são comandos utilizados para definir a estrutura de um banco de dados dml é a sigla para data manipulation language ou seja linguagem de manipulação de dados é a dml que é responsável por manipular os registros dos dados o que seria equivalente às linhas ali em uma planilha no Excel por exemplo os comandos que utilizamos são insert delete e update ou então insert delete update no
português dtl é a sigla para data transaction language ou linguagem de transação de dados um dos recursos mais importantes dos bancos relacionais é a capacidade de criar transações Ou seja você consegue agrupar comandos em uma transação e pode executar essa transação como se fosse um só processo chamamos isso de forma atômica se algo der errado é possível reverter tudo em segurança isso é feito para garantir a consistência dos dados e os comandos utiliz usados na dtl São begin transaction comit e Row back já dcl é a sigla para data contr language ou linguagem de controle
de dados os comandos utilizados no dcl são responsáveis justamente por controlar a parte de segurança do banco de dados gerindo as permissões de usuários as tabelas e também aos Campos e nesse caso os principais comandos são o Grant revoke e o Deny Já tá terminando ó e por fim temos o dql que é a sigla para data query l ou simplesmente linguagem de consulta de dados em alguns lugares o dql faz parte do dml e o comando utilizado é o famoso select é justamente com esse comando que criamos nossas consultas e recuperamos os dados que
estão nas tabelas nós vamos focar nesse momento em aprender o ddl o dml e o dql que é o básico para dominar o SQL se você quiser algo mais avançado Você não esquece de deixar aqui o seu like nesse vídeo e também de pedir pra gente nos comentários assim nós vamos poder lançar depois um a versão com esses outros recursos Agora sim Estamos prontos para colocar a mão no código Bora agora vale aqui um recado Tá nós estamos estudando aqui SQL Mas é óbvio que você precisa aí já ter um conhecimento em bancos de dados
relacionais porque tem diversos conceitos que vão ser necessários para você entender bem como funciona o SQL mas vale também uma explicação inha rápida sobre chave primária chave estrangeira e índices que a gente vai aprender a fazer isso geralmente uma tabela tem uma coluna ou colunas né que tem valor valores que identificam exclusivamente cada linha na tabela é como se fosse o CPF né não pode repetir isso é chamado de chave primária ou primary Key ou simplesmente PK uma chave estrangeira ou foreign Key ou FK é uma coluna ou colunas usadas para estabelecer e relacionar os
dados de duas tabelas além de relacionar ela pode ser utilizada também como uma integridade referencial fazendo com que a atualização da informação em uma tabela seja também propagada em todas as outras que usam ela como chave estrangeira e os índices eles são utilizados para encontrar informações com mais rapidez os campos que são Chaves na tabela são geralmente indexados mas podemos utilizar qualquer tipo de campo para isso e agora sim nós estamos prontos para colocar a mão no código então bora ardeu bora começar então criando o ambiente a gente vai usar o docker para instanciar um
MySQL pra gente utilizar Então a gente vai usar MySQL nesse curso você pode usar o banco de dados que você quiser claro que em algumas queries aqui vai ter que fazer alguma adaptação mas vai vai tá de boa praticamente é tudo igual então eu puxei aqui a imagem do docker eu já tinha ela aqui e agora vou criar um volume Isso quer dizer o seguinte quando eu instanciar o meu contêiner ele não vai perder os dados tá cada vez que eu parar e dar um start os dados vão ficar sempre lá e e agora é
só dar o Run no meu contêiner Olha [Música] só olha você não precisa decorar Esse comando se você quiser utilizar o docker pode usar esses comandos vai est no repositório aqui na descrição com as instruções no no RM e também todas as queras que a gente for utilizar vai também tá ali para você consultar e poder utilizar você também e se você quiser também utilizar um banco de dados instalar ele localmente na sua máquina não tem problema nenhum não precisa rodar com um docker igual nós estamos fazendo mas já é mais uma coisa que você
aprende se o seu banco de dado esver remoto Tipo na hostinger não tem problema também pode rodar de lá e para rodar as nossas queries a gente vai usar o vs Code com essa extensão aqui tá é o mycell Embora tenha o mesmo nome do banco de dados que nós estamos utilizando não tem nada a ver o nome da extensão que é mais skl mesmo né ela até trabalha com outros bancos não aqui ó post gre Heads com vários outros tá você pode usar outra extensão que você quiser também então aqui eu vou criar uma
conexão nova Como tá local e a gente colocou aqui ó a senha SQL não tem problema basta vou botar um nome aqui ó mini curso SQL Vou salvar aqui ó já tá aqui e aí basta conectar tá só lembrando que quando a gente tá falando de um banco de dados relacional as tabelas tudo você pode eh particionar elas em um Database aqui a gente não criou um Database a gente pode criar pela próprio extensão ou se a gente quiser até com query mesmo utilizar isso nesse caso aqui a gente vai criar por aqui mesmo tá
ele vai abrir aqui ó um Create Database eu posso colocar o nome aqui ó minicurso SQL E aí basta eu rodar então você vê que já tá aqui ó eu já consigo ter acesso às tabelas a criar as queries e outras coisas tá aquele criou um arquivo para executar isso a gente não vai precisar disso a gente pode fechar agora a gente vai realmente criar as nossas tabelas como é que a gente vai fazer inicialmente a gente vai criar duas tabelas Vamos criar imaginar aqui um modelo um sistema utilizando produtos e os produtos vão estar
Associados a uma outra tabela com marcas tá isso aqui é um é o mais simples possível pra gente começar poucos Campos pra gente entender também os conceitos de chave primária chave estrangeira tá e a gente vai fazer isso tudo na munheca justamente pra gente aprender o SQL então aqui olha em query eu posso criar um arquivo novo de query ele já cria tá vendo um um arquivo aqui tudo que eu for digitar aqui tudo for criar aqui ele já vai criar uma área para eu executar o comando então fica fica muito mais simples traço traço
por exemplo aqui é um comentário tá então fica muito mais simples pra gente executar os nossos comandos passo a passo e é isso que vai est no repositório também então por exemplo se a gente criar a nossa tabela de produtos vamos olhar ó ela vai ter um campo chamado ID ID marca que vai est associado com a outra tabela nome preço e estoque acabou sendo que o ID é justamente a chave primária dessa tabela é aquele campinho que não se repete que foi o que nós falamos né exato e o legal dessa extensão é que
a gente pode dar os comandos e ele vai autoc completando também então fica relativamente rápido da gente digitar então por exemplo o comando pra gente criar uma tabela é tão simples quanto parece você entender um pouquinho de inglês chama Create table pronto acabou aí a gente coloca o nome da tabela Então vou chamar de produtos e aí a gente entre parênteses tem que colocar aqui o nome dos Campos tá eu posso colocar ó ID nome preço estoque e o ID marca né que a gente tinha falado que é a identificação que vai ficar na outra
tabela só que para esses campos eu preciso definir que tipo que eles precisam receber Ah o ID vai ser um número o nome vai ser um texto o preço vai ser um número também que pode ter casas decimais E por aí vai né então pra gente começar a definir a gente pode geralmente a gente utiliza assim ó uma certa formatação pra leitura ser boa né Uhum Então olha o parênteses pode ficar aqui ó e aí fica mais simples da gente entender se a gente botar tudo numa linha só fica bem difícil né fica assim como
os comandos SQL por padrão também uma convenção que se tem é de colocar eles em letra maiúscula você vê que ele fica até ali coloridinho De acordo com a extensão que a gente tá utilizando o que também ajuda ali na visualização exatamente e isso é bom entender olha no caso do mykel por exemplo que roda em contêiner aqui um Linux ele é cas sensitivo então se você coloca a tabela de produtos com P maiúsculo por exemplo vai ter sempre que se referenciar com ela com o P maiúsculo é bom sempre ter uma convenção nome de
Campo nome de tabela nome dos elementos você vê nos sistemas muito utilizando minúsculo mesmo tá claro que tem exceções aí então por isso que dessa forma fica visualmente mais fácil de saber se a gente colocasse tudo minúsculo aqui ó nesse caso não faria diferença pro banco de dados mas se convencionou né se utilizar essa parte maiúscula mas aí por exemplo eu tenho aqui ID o que que ela vai ser ela vai ser um um número então a gente coloca inteiro Tá então vamos só preencher com os tipos de dados primeiro o nome pode ser um
texto claro que isso aqui já tem diferenciação um texto pro banco de dados geralmente é algo que ocupa muito espaço é meio que limitado você vai armazenando a nossa definição ali imagina para você texto O que é um texto né são muitas palavras muitas coisas um nome você não chama de texto né um nome é algo um pouco mais curto Então nesse caso a gente utiliza varchar tá esse são os tipos que existem isso aí tem que estudar um pouco mais do SQL mas tem vários tipos né então por exemplo o Real ó nesse caso
aqui o varchar eu tô colocando 100 posições ou seja ultrapassou 100 no nome num armazena mais Então esse é o limite se você precisar tem que aumentar é bom dimensionar isso pro que você precisar o preço é é o real ou seja é um número real que aí tem justamente casas decimais você tem aqui o estoque aí seria um inteiro e aí eu o ID marca também seria um inteiro né eu posso colocar int ou integer então funciona dependendo do banco de dados aí vai funcionar mas por exemplo a gente sabe que esse demarca é
uma chave estrangeira é um FK tá vendo para outra tabela então o ideal seria a gente criar essa primeira essa tabela porque se eu criar a chave estrangeira não existe ela ainda aqui uhum vamos deixar ela pré-pronta aqui então inteiro e aí nós temos por exemplo vamos dizer que ela é uma chave primária então eu digo que é um primary Key E no caso vários banco de dados tem isso é um número auto incrementá-los uma tabela de produtos que realmente não faz muita diferença né se você tá cadastrando aqueles produtos ali novos a menos é
claro que você já tem alguma codificação que é única do produto que você queira utilizar aí você deixa lá como integer e coloca ali o número então no caso ó nome aí por exemplo botei o varchar mas eu eu quero definir aqui olha não pode ser nulo né você não pode ter nada nulo nesse campo então ou seja não pode cadastrar o nome vazio é Então nesse caso aqui ó não não deixei nulo no caso aqui do estoque por exemplo eu posso colocar ó o o default é zero tá E por aí vai depois a
gente completa aqui porque a gente tem que primeiro criar a outra tabela de marcas porque senão vai acabar dando um um erro né então eu tenho marcas aqui quais são os campos ID nome site telefone Então vamos [Música] lá então veja nesse caso a gente pode até colocar esse Create aqui na frente ó então a gente cria primeiro essa depois a gente cria essa tá tudo de boa aqui aqui eu até coloquei uma coisa nova que é o único eu digo também que esse nome não pode se repetir tá Não Faz Sentido Z uma marca
cadastrado duas vezes né Então essa é a ideia é então como é que eu faço a chave estrangeira nesse caso aqui eu coloco o tipo E aí eu digo que é uma foreign Key e eu digo qual é a tabela de referência Então nesse caso ó marcas mas por exemplo ele não tá autoc completando aqui a gente pode executar primeiro aqui ó então o ponto e vírgula nesse caso também delimita o comando acabou o comando tá ele executa 100 também mas é sempre bom usar isso Então nesse caso ó eu posso tocar aqui ele vai
executar só essa query ou simplesmente aqui ó o control enter ele também já executa você veja que já apareceu aqui ó tabela de marcas e aí nesse caso ó quando eu venho aqui vamos ver se ele autocompleta é não não completou não tem problema eu coloco aqui o marcas né e o ID Esse é o campo em que ele vai se associar eu tô fazendo essa Associação aqui ó vamos testar uma coisa aqui ó eu vou tirar essa marca eu vou inser inserir ela depois quando eu fizer uma alteração na tabela pode ser pode então
aqui eu vou criar olha criei as tabelas só que ela não tem o ID marca né Vamos testar aqui uma coisa ó a gente pode para alterar a tabela nesse caso a gente usa alter table olha só a tabela produtos e aí eu vou adicionar ó adicionar uma coluna Olha só como é que é chega a ser intuitivo né intuitivo né eu vou chamar de ID marca ela é inteira tá not n ó lá rodou vamos ver se ela tá aqui ID marca só que ela não tá associada ainda então vamos criar agora a chave
ó alter table de novo Daria até para fazer tudo num comando só tá mas agora eu vou modificar aquela coluna isso aqui é só para você ir aprendendo né outros comandos ó por exemplo vou modificar coluna nome Ó poderia colocar aqui ó varchar de 150 certo vamos supor que eu precisou aumentar e agora coluna nome Ó 150 Então vamos adicionar agora a a chave ó alter table produtos aí eu posso colocar for aí eu digo ó ID marca referência marcas no campo ID Campo ID agora ele fez ó até mudou aqui a carinha dele ó
Então tá associado agora esse relacionamento né que a gente chama só pra gente entender então como é que eu faria então para excluir uma tabela vamos criar uma aqui uma temporária Então vou chamar de sei lá controle e aí eu vou ter o campo ID ó integer primary Key e data que do tipo date eu coloquei aqui criei ap já apareceu aqui ah como é que faz para excluir drop table controle ó lá ó fic olhando aqui ó pronto simples assim essa é a beleza do SQL é simples mas também se você der um drop
tabela errada e não tiver um backup você dança Não tem pergunta não se a tabela não existir ainda existe isso Ó eu se eu executar de novo ele vai dizer ó deu erro essa tabela não existe mas eu Posso acrescentar aqui um um if exist ou seja ele só exclui se ela existir Então nesse erro nunca vai dar dar mais erro no na query bom falta então a gente explorar um pouquinho os índices Pois é a gente criou os índices quando a gente cria a chave primária ele já é criado automaticamente tá vendo Então as
tabelas que ganham o a chave primária já tem mas se eu quiser melhorar isso eu posso criar por exemplo Ah eu vou consultar bastante a tabela produtos pelo nome então seria interessante nesses casos eh criar um índice para esse campo né Então nesse caso ó a gente pode fazer um Create index aí eu coloco o nome do do índice Vou botar aqui ó idx produtos que é da tabela produtos e o campo nome geralmente você usa esses nomes assim tá mas você pode escolher o que você quiser dessa forma fica fácil de identificar né fica
um padrão bem legível E aí você diz ó onde isso na tabela produtos e no campo nome simples assim ó executei se a gente vier agora nos índices na tabela produtos vai ter aqui ó esse meu índice aqui ó que acabei de criar Mas tudo bem né a gente já criou a estrutura Mas a gente não tem dados ainda E aí como é que a gente vai fazer tabelas vazias deixam o esql triste vamos então aprender a fazer isso para inserir a gente utiliza o comando insert simples assim ó e a gente coloca insert into
E aí a gente coloca o nome da tabela Agora ele já tá até preenchendo Vamos criar as marcas ó ele já até preenche aqui com os nomes dos Campos ó fica bem fácil então a gente pode colocar ah no no campo geralmente a gente faz assim ó os campos tá Depois a gente tem os valores e a gente lista os valores na ordem Então os campos seria nome site e o telefone né Lembrando que o ID ele tava como ao incento então ele vai automaticamente criar não precisa colocar nada ali na hora de cadastrar aí
eu tenho uma colinha aqui ó pra gente já cadastrar algumas marcas então se você quiser pode pausar o vídeo aí geralmente a gente até usa assim ó na formatação para ficar mais simples de ver se você quiser pausar o vídeo aí para você copiar ou criar seus próprios dados não tem problema coloquei aqui umas marcas aqui que a gente utiliza aqui no nosso escritório né Tá PR a gente brincar com os produtos então você vê ó que eu criei um grupo de valores aqui já executei ó já já deve est lá na tabela e separei
por virgula Geralmente se usa assim né se você colocar só um grupo de valores assim já funciona também a gente pode até checar se essa tabela já tá preenchida Ó você vem aqui em marcas nesse caso aqui tá na na extensão se eu clicar aqui ele já mostra a tabela tá vendo com o ID ele já colocou a autoincremento colocou aqui todas as informações que estavam na nossa query ou seja o insert funcionou certinho agora vamos inserir os produtos aí eu vou fazer um pouco diferente ó vamos aqui inserte into produtos eu posso por exemplo
omitir aqui a lista de Campos dá para fazer também eu posso chegar aqui e já colocar os valores se eu quiser mas o que acontece nesse caso eu teria que informar o o número aí nesse caso vou botar o valor com caso decimal sempre usando ponto tá isso aí não tem jeito não tem como formatar Ah mas no Brasil a gente usa vírgula não tem que ser ponto sempre tá aqui seria por exemplo o estoque Isso é o que tá na ordem aqui que foi definido né na tabela ó produtos nome preço estoque e a
marca a marca nesse caso seria o ID da marca né então se a gente tem aqui ó Apple é o um aqui tem que ser o um também Então nesse caso eu posso omitir a a lista de Campos aqui desse desde que você coloque todos os campos na ordem correta assim como está na tabela para o cadastro seja feito corretamente então vamos ver se funciona ó eu vem aqui em produtos já tem lá o primeiro aí nesse caso para fazer o restante eu vou colocar a lista de Campos aqui pra gente não ter problema eu
insiro aqui a o restante dos nossos produtos vamos conferir Á tá lá os produtos todos e ele continua tá vendo a numeração uhum aprendemos a inserir mas como é que a gente consulta né Eu Tô clicando aqui a gente para consultar a gente pode usar o select por enquanto eu só vou mostrar aqui o select dessa forma tá o select asterístico Ou seja eu digo que eu vou usar todos os campos que tem na tabela então se eu inserir um campo depois esse campo vai passar a aparecer lá from E aí eu digo qual é
a tabela que eu quero nesse caso aqui ó produtos tá ou ou marcas né pode ser E aí eu executo essa query olha como é que ele vai fazer se eu quiser por exemplo só o nome ou o ID então eu posso colocar assim ó o ID vírgula o nome e aí eu tenho que tirar o asterisco se eu executar ou seja ele vai tirar só os campos que você selecionou para apresentar né Tá mas deixa eu mostrar então rapidinho como é que eu faria um filtro se eu quiser só filtrar por ID por exemplo
a Apple tá então eu posso colocar um Where tá e o id o nome do campo igual a um vai filtrar vai mostrar só a Apple se eu quiser todos que t o ID maior que dois ele vai mostrar né o o três e o quatro e por aí vai bem é bem é exatamente é bem simples né porque você pega ali ó selecione isso aqui de onde dessa tabela quando isso daqui foi igual aquilo então é É bem intuitivo né mas agora que a gente aprendeu o select eu quero ensinar um bônus aqui usando
insert e o select pouca gente usa isso é verdade né eu vou criar aqui uma tabela olha só que eu vou fazer Ó você o meio ousado aqui eu vou criar uma tabela só de produtos Apple onde eu vou armazenar o nome e o estoque vamos supor que isso aqui é uma tabela temporária para eu fazer algum tipo de consulta dentro do sistema então o nome eu vou colocar como vaixar 10 not n e o stoque vai ser um integer e o o default zer Tá e agora como é que eu insiro todos os produtos
da Apple que estão na tabela de produtos dentro dessa tabela minha eu faço assim ó insert produtos Apple select Ou seja eu uso um select embaixo da cláusula insert e eu vou colocar justamente os dois Campos que eu quero selecionar ó from produtos onde a marca é o ID marca né Uhum é igual a um tá entendendo o que eu tô fazendo Uhum eu vou fazer a consulta eu vou fazer a consulta normal eu vou executar agora eu selecionei aqui vou executar só essa consulta ele vai mostrar todos os produtos que tem o ID marca
1 mas quando eu coloco um insert nisso nenuma tabela se eu executo agora a cláusula toda ele vai justamente Olha só se a gente selecionar aqui estítico from produtos Apple ele vai mostrar justamente todos os produtos da Apple claro que Eles não estão Associados cara porque se eu alterar o estoque de produtos agora o estoque aqui ele vai ficar defasado né mas essa que é a ideia principal tá então como a gente não vai usar essa tabela temporária Eu vouu vou excluir ela aqui aliás Deixa eu fazer aqui uma brincadeira eu vou inserir novamente pera
aí deixa eu vou cria novamente criar novamente a tabela eu vou inserir essa informação E aí eu vou mostrar ok tem aqui todos os campos todos os registros Ah mas eu quero simplesmente apagar todos os registros de uma vez só isso também Existe comando para isso é o truncate eu coloca truncate table e o nome da tabela então aqui eu não vou eu vou manter a tabela mas eu vou apagar todos os registros ó se eu fizer um select agora já tá vazia Olha a beleza e a dificuldade do skq então podemos dar o drop
aqui agora OK então agora não temos nem os dados nem a tabela Ok o trun o drop table a gente não costuma usar todos os dias ali né mas atualizar os dados aí Aí sim então update pra gente atualizar como é que funciona update aí você já coloca o nome da tabela não tem into né Poderia ter o into né a você coloca coloca o nome do campo que você quer atualizar Então nesse caso aqui eu vou atualizar o nome eu vou colocar por exemplo ó Microfone smb preto eu adicionei o preto aqui né se
a gente olhar ó produtos tem o microfone eu vou adicionar o preto aqui no id7 tá então isso aqui tem que usar com muito cuidado sempre o delete e o update a gente tem ter muita atenção porque por exemplo se eu rodar isso aqui só isso aqui todos os registros vão atualizar o nome para esse texto aqui então iso é perigosíssimo perigosíssimo virou até meme né o pessoal às vezes vi Opa se estou é dia de update sem weare então agora se você não entendia você passou a entender a piada viu então é importante sempre
usar aqui o que geralmente se faz é criar um um select com a cláusula depois que você fere tudo aí você vem e transforma ela num update é uma boa prática se fazer é Então nesse caso Olha o que eu vou fazer eu vou atualizar o nome tá preto onde o ID igual a 7 mas eu poderia fazer isso aqui ó nome é igual a a esse então por exemplo ó se eu executar esse aqui ele vai funcionar ele vai pegar o nome onde o microfone é esse aqui e ele vai atualizar o microfone só
Se eu tentar atualizar de novo ele já não vai porque ele não ele não tem mais esse texto aqui vamos testar ó atualizei se eu Viar na tabela V der uma um refresh aqui ó ó lá Preto Se eu tentar de novo aqui ó dois Ó lá ele não atualiza ou seja o ideal aqui é sempre usar um campo realmente que funcione né ó nesse caso aqui o ID Então vamos deixar aqui ele bonitinho agora por exemplo se a gente quiser alterar a gente Tem estoque aqui ó ah eu vou adicionar o estoque atual mais
10 produtos vamos supor que eu comprei 10 produtos de cada aqui como é que eu conseguiria fazer isso ó update produtos seto é igual a stock ou seja o próprio Campo mais 10 Onde vamos supor eu vou colocar só os produtos da Apple ou pode ser todos pode ser todos a princípio a ideia Eram todos é então pode ser todos então basta fazer isso Olha ele aí até bonzinho ele tipo confirma você quer mesmo fazer um update sem we Pois é Então nesse caso aqui ó ele eu confirmo ele atualizou e aqui se a gente
olhar agora aqui ó tá atualizado todos então você vê como a gente tem que ter cuidado com essa mexida no banco de dados tá Uhum agora faz ali atualizando só os produtos da Apple agora para servir de exemplo também agora sim então aqui eu vou adicionar mais um a que já estava né Então nesse caso aqui vai mudar só esses três aqui ó tá E para eu remover um registro é muito fácil ó delete from o nome da tabela é igual o select eu posso colocar aqui o we ID igual a 7 por exemplo ó
que seria esse aqui né Ah vou remover o um por exemplo tá que a gente já testou lá basta eu executar E aí remove o primeiro lá eu vou voltar com ele aqui tá ele é muito importante aqui pro nosso teste Então nesse caso aqui ó eu vou fazer ele com um aqui vou excluir aqui temporariamente eu vou executar só esse pedacinho de comando aqui ó e aí eu posso voltar aqui ó vamos ver se ele voltou agora a gente pode brincar um pouquinho né com o select a gente já fez ali o básico selecionamos
todos eles mostramos ali que dá para selecionar só os campos que você quer ou todos os campos ao mesmo tempo usando o asterisco mas dá para brincar muito mais com celect é não select É é incrível assim dá fazer muita coisa então se a gente começar com o básico aqui ó eu vou colocar select from produtos Onde por exemplo o estoque é menor que 10 não vai vir nenhum porque a gente acrescentou 10 em todos eles Tá certo então menor que 100 aí ele vai mostrar alguns produtos menor que T Ó lá ele já vai
filtrando então eu posso botar menor posso botar menor igual eu posso botar diferente ó lá então o que tem por exemplo ó 100 exatamente 100 ele vai tirar Uhum Então dá para fazer várias brincadeiras aqui ah mas eu não quero só o que tem por exemplo menor que 80 eu quero que tenha menor que 80 mas que custe sei lá menos de 3000 então eu eu posso usar também outra outras cláusulas aqui como o operador na verdade né o end ou o or né dá para fazer várias coisas aqui então por exemplo onde o preço
Vai ser menor que 3.000 e o estoque é menor que 80 por exemplo ele não encontrou Ah mas se for então maior que 3000 aí ele já encontrou eu posso filtrar pelo nome isso aqui é interessante também porque a gente quando vai buscar vai fazer uma busca na internet numa eh numa loja virtual a gente geralmente busca pelo nome até por isso que a gente criou um índice lá de buscar pelo nome e quando a gente busca pelo nome a gente geralmente a gente não usa por exemplo Ah é não pode ser tão Preciso imagina
que você tá procurando um iPhone 15 e tem que colocar exatamente aquela descrição que o Gabriel colocou ali então por exemplo seix eu colocar aqui ó iPhone e tentar buscar ele não vai encontrar uhum porque tem que ser o nome inteiro do produto Então nesse caso a gente não usa igual a gente usa um outro operador que é o like mas mesmo assim se eu colocar ele não vai encontrar eu tenho que dizer em que lugar que eu quero então por exemplo dentro dessa string aqui eu posso colocar é o iPhone e o restante que
tiver então tudo que começar com o iPhone ele vai encontrar claro que se eu colocar outra coisa aqui ele não ele não vai encontrar tá vendo Uhum Então por exemplo se eu colocar Apple né que tem o nome Apple dentro do produto ele não vai encontrar mas se eu colocar um um percentual aqui Apple e um percentual Ou seja que tiver Apple em algum lugar ele já vai mostrar que acaba sendo não interessa o que tem na frente ou que vem depois o importante é que tem o Apple naquel string então ele consegue encontrar em
qualquer posição né uma outra coisa que a gente pode fazer que é interessante vou tirar o a aqui por enquanto e vou listar todos os produtos aí eu posso ordenar ou seja depois do we eu posso usar aqui um Order by tá Então nesse caso eu não não tenho a aqui então eu vou fazer só um Order byy ti tira o mouse ali né E aí eu digo qual é o nome do campo que eu quero ordenar tirar aqui esse ponto e vírgula aqui ó então por exemplo eu quero ordenar pro estoque é o maior
pro menor Então nesse caso eu coloco ascendente se eu omitir aqui ele já vai listar nente por padrão n padrão né ó é igual mas se eu quiser descendente né eu coloco Desk t ver que ele inverteu aqui né Uhum Então por valor por exemplo preço se eu quiser ó bem comum de se utilizar em loja virtual né que você busca pelo menor preço ou Listo pelo maior pro menor uhum né é dessa forma que a gente faz mas por exemplo no caso aqui do do próprio MySQL Ainda Existe uma forma da gente limitar a
pesquisa vamos supor que você tá criando uma lista um ranking e você quer limitar a quantidade registros que ele vai mostrar se for só os top cinco produtos por exemplo eu posso colocar limit 5 Então nesse caso não importa a que você fizer aqui ó ele sempre vai mostrar só cinco resultados então numa tabela que tem às vezes milhões de registros e você sabe que você só vai manipular 10 20 50 registros então é muito interessante sempre utilizar o limit quando Precisamos combinar os registros das tabelas baseados em colunas relacionadas nós utilizamos o join geralmente
utilizando Chaves primárias e estrangeiras existem vários tipos de joins ou de junções no SQL Mas nós vamos aqui nos ater às quatro principais essa imagem ilustra bem como é feita a combinação dois registros pelas tabelas em cada join o Inner join por exemplo retorna apenas as linhas em que há correspondência entre as tabelas envolvidas ou seja se você está juntando duas tabelas A e B com base em uma coluna em comum o Inner join só retorna as linhas em que esse valor existe em ambas as tabelas o full join ou o full alter Joint retorna
todas as linhas de ambas as tabelas e não importa se existe ou não correspondência no caso as linhas que não tiverem correspondência na outra tabela elas vão ter os valores preenchidos com nul o left join retorna todas as linhas da tabela à esquerda ou seja aquela primeira tabela mencionada no Joy e as linhas correspondentes da tabela à direita então se não houver correspondência na tabela direita os campos dessa tabela virão como nul já o right Joint é justamente o oposto do Left Joint ele retorna todas as linhas da tabela à direita e as correspondentes da
tabela à esquerda é mas se a tabela da esquerda não tiver correspondência os valores dessa tabela também serão nul na prática do dia a dia o left join é mais comum e o right join pode ser substituído invertendo ali a ordem das tabelas ou usando outras estratégias por isso alguns bancos de dados como o sqlite por exemplo não suporta esse tipo de Join na dúvida sempre vai de Left join quando for necessário bora ver isso na prática e pra gente explicar join a gente vai criar outras tabelas a gente vai fazer o seguinte vamos simular
um sistema aqui de pedidos a gente tem produtos que tem marcas vinculados temos agora clientes que vai ter nome e-mail cidade data de nascimento uma chave primária com um id e vamos ter pedidos e aí tem ID do pedido data do pedido ID do cliente vinculado e o valor total esse campo aqui na normalização de banco de dados pessoal fala ass Poxa não tá problemático mas a gente aqui vai fazer a coisa para simplificar tá em em vários lugares esse campo aqui é válido realmente E aí vamos ter itens do pedido Ou seja cada pedido
vão ter os seus itens como se fosse um carrinho de compra mesmo e lá a gente vai ter a chave primária que vai ser o ID do pedido com o ID do produto ou seja o ID do produto não repete dentro do pedido uhum e aí a gente tem as chaves estrangeiras justamente o ID do pedido aqui o ID do produto certo e aí a quantidade de de produto que você tá usando e o preço unitário ou seja o valor do produto aqui ele pode ser atualizado mas na hora que você faz o pedido esse
valor tem que ir para dentro do se manter porque ao longo do tempo aquilo muda no produto mas no pedido foi aquele único valor então deu para entender aí qual é a estrutura uma estrutura bem simplificada como o Gabriel falou ali mas pra gente poder entender como é que é esse relacionamento e justamente poder utilizar os joins né então é assim que ficou as cláusulas tá se você tiver dúvida pode consultar o repositório ou pausa o vídeo aqui e escreve aí a gente não fez nada aqui que a gente já não tenha feito a única
diferença aqui no caso da data do pedido o valor Def por exemplo eu usei em invés de colocar 0 2 3 eu usei com valor que é o Now Ou seja é uma função interna do mql e é a data atual na hora nesse exato momento dependendo do banco que você tiver pode ser que não exista mas eu acho que o Now é algo que a maioria Com certeza já tem então toda vez que um campo tem um valor default Isso quer dizer que você pode omitir ess essa informação lá do insert que aí ele
vai utilizar o valor default que tá definido Então vamos executar aqui um de cada vez ó para ver se vai funcionar direitinho e agora temos ó lá todas as tabelas pra gente brincar agora não adianta ter tabelas sem dados então também vamos colocar alguns dados aqui aqui nada diferente do que já foi feito Vamos só sair executando né é Então nesse caso ó clientes eu vou até colocar eu e Vanessa aqui no final a gente vai fazer uns filtros aqui ó São José dos Campos como cidade tudo pedidos a gente vai criar dois pedidos depois
a gente pode criar mais e aqui o itens pedido então ó ID do pedido um vão ter dois itens que vai ser o produto um ó ID do produto um e produto dois fica um pouco confuso porque é muito ID né e a quantidade aqui tá vendo ó então posso até alterar aqui botar dois na quantidade um e o preço unitário Então vamos executar esse primeiro aqui esse aqui E esse aqui agora a gente está pronto para fazer os nossos joins como eu vou trabalhar agora no select com duas tabelas a gente tem por exemplo
tabelas marca e produto que tem o mesmo mesmo nome de Campo ID nome então isso é importante a gente saber diferenciar tá então por exemplo se eu colocar nome aqui ninguém vai saber da onde que é essa tabela então por exemplo Vou colocar ó clientes e aí vai ser da tabela clientes então eu posso colocar ó cliente o nome da tabela ponto o nome do campo que eu vou usar e eu vou usar também a tabela pedidos Então nesse caso eu vou listar os clientes que T pedidos Então nesse caso a gente só adicionou ID
do cliente um e dois certo Uhum Então nesse caso vai ser o João Pereira e a Ana Costa aqui isso e veja bem se a gente não fizer esses joins e tudo e a gente fizer simplesmente um select lá na tabela de pedidos para listar você vai ter lá que o pedido é do um e do dois o que não faz muito sentido a gente precisa de fato conhecer o nome das pessoas então precisa pegar o campo que vai além daquela chave estrangeira que tá ali em determinadas tabelas Então vamos supor eu quero listar o
nome e o valor total do pedido desse cliente então eu pego from clientes que a gente já tinha feito E aí o uso um Inner join a tabela pedidos e aí eu digo Quais são os campos que estão relacionados uso o on e eu coloco ó clientes pid é igual ao pedidos ponto ID cliente você vê que agora ele relacionou com os os dois clientes ali ó o João Pereira e a na costa mas olha só dá para fazer várias coisas legais também com um conceito que é o conceito de subquery é isso aqui ó
isso aqui a gente usa muito muito mas muito mesmo dentro dos sistemas por exemplo ó se eu selecionar o nome e o preço de um produto vamos supor que Eu queiro fazer um filtro por várias a gente pode US um conceito aqui in um operad in então por exemplo poderia colocar aqui Apple ou D como Nossa tabela de Marc mas se eu quiser usar uma tabela fazer isso um select para fazer isso eu posso também então possar um select aqui dentro vele o ID ol Olha que eu fiz aqui um select eu executar só isso
ó ele vai mostrar só o ID tá vendo da da Apple essa query aqui ele executa dentro com esse operador in E aí todas a os ids que voltam aqui ele faz o filtro dentro do we então se eu colocar nome por exemplo vou colocar aqui assim ó or nome igual a Dell se eu executar só o select ele vai mostrar o um e o dois Então nesse caso se eu executar o o o ID marca in vai trazer todos os produtos que tem a marca Apple ou Dell exatamente pro left join também funciona da
mesma forma que o Winner join ó tá vendo não não muda muito a estrutura mas nesse caso como a gente viu só a tabela de clientes aqui vai mostrar todos os clientes e o total de pedidos desses clientes o que não tiver ele traz como nulo vol como nulo no caso do right join eu só troquei tá de Left para right Olha o que acontece ele vai trazer somente aqueles que tem um valor associado na outra tabela E no caso do Full join E aí Vanessa e o full join nós temos um pequeno probleminha no
MySQL ele não F funciona e aqui eu fiz um pouco diferente também ah tabela de clientes eh eu posso usar renomear ela na query então por exemplo clientes vira c e o pedidos vira P Então a partir desse momento tudo que eu colocar c e d p e d isso també viram elas ali PR aquele nome né de tabela então é comum fazer esse tipo de coisa então se eu tentar usar aqui por exemplo ele não vai dizer ó não existe Qual é a solução no caso pro MySQL olha só que legal se eu pegar
o left join pegar esse aqui ó left join e o join vou duplicar aqui tem que tirar o ponto e vírgula eu posso unir os dois aqui as duas queries ISO também não é incomum de fazer como é que a gente faz a gente pode colocar um Union Esse é o comando E aí essas duas queries viram uma só então aqui eu posso colocar aqui ele mostra realmente tudo tá vendo uma outra parte super importante é saber trabalhar com aquelas funções agregadas e os agrupamentos porque isso daí também Vai facilitar muito a vida no dia
a dia o que que a Vanessa quer dizer com isso por exemplo se eu quiser filtrar todos os clientes por cidade vamos ver aqui na tabela de clientes a gente tem ó eu e Vanessa Estamos na mesma cidade e o resto tá em cidades diferentes mas são só esses que tem pedidos né a gente pode até acrescentar mais pedidos aqui ó vou vou vir aqui na tabela ó ID cliente eu vou eu eessa 45 4 e então e aqui no pedido tem que ver qual é o ID que o pedido vai ganhar lá né Vai
ser 3 e 4 né pronto se agora a gente olhar aqui os pedidos Ó tem o pedido daqueles dois clientes e o meu pedido da Vanessa e os itens aqui né Vamos testar se a gente quiser por exemplo selecionar a cidade do cliente ele vai mostrar aqui todos os clientes e as cidades Uhum mas como como eu quero agrupar eu posso usar o group by cidade ou seja vai pegar tudo que é igual nesse caso São José dos Campos aqui e agrupar é Claro porque você quer saber para quais cidades você vendeu você não quer
saber que você vendeu duas vezes pra mesma cidade né Ela já foi inclusa ali naquele caminho então não precisa ex ou seja ele agrupou aqui por cidade se eu colocar aqui um select asterístico ele não vai mostrar porque tem mais de dois clientes ali por cidade mas se eu colocar só a cidade aí esse campo ele ele vira único e aí funciona Então nesse caso eu eu usei a função aqui de agrupamento o group byy Mas eu posso usar uma função mesmo interna que é o count então por exemplo eu coloco o count asterisco tá
geralmente só usa o um até por questão de performance isso aqui não faz diferença né um dois você pode botar o asterisco se quiser também tá E aí aqui ele vai contabilizar o número de registros nesse caso é o número de clientes que estão agrupados em cidades então pelo que a gente sabe São José dos Campos tem eu e Vanessa lá cadastrados então aqui são um cliente então aqui é você cria um novo Campo chamado ali número de clientes e ele contabiliza de acordo com o que foi agrupado São José dos Campos Tinham dois o
restante tinha um só então isso daí é muito utilizado também então por exemplo Vamos criar um relatório aqui de média de vendas mensais olha como é que a gente faria V até colocar aqui mais limpinho ó aí a gente usa uma uma outra função que é o Average que também é próprio ele calcula a média de acordo com o valor total Então vamos supor ó eu vou usar essa função aqui do myc que é o date Format no campo pedido data pedido aqui é próprio do MySQL tá Isso aí depende de cada banco de dados
Então nesse caso aqui eu vou filtrar o ano quatro dígitos e o mês com dois dígitos E aí eu vou chamar ele de mês então dessa forma eu peguei aquele mês Completão e Cortei ele coloquei só o ano e o mês e aí vou usar o Average no campo valor total E aí eu vou chamar ele aqui de média vendas Agora sim eu vou dizer qual é a tabela né a tabela pedidos e eu vou agrupar olha como é que funciona ó eu vou agrupar justamente por esse campo novo que eu criei que é o
mês Então nesse caso os nossos pedidos são todos aqui no mês de janeiro tá e a média deles é essa aqui como é que eu calculo essa média Eu posso também usar uma outra função ó que é o sun quem usa Excel aí vai conhece bem Essas funções con ó from pedidos ou seja ele pegou aquele valor total ele somou todos os pedidos deu isso e se eu colocar aqui o count do valor total e já vai calcular a média também então o equivalente ao que faz essa função ó certo mas dá também para selecionar
o mínimo e o máximo também existe essa função ó valor total maior pedido ficar assim né ou seja dá para fazer mínimo e máximo é o o valor do pedid no mínimo mío e o era o contrário nós estamos errado era do máxximo agora é do mínimo máximo do mínimo isso aí a gente pode criar agora um pedido com estoques abaixo da Média né parece complexo né parece né porque a gente tem que pegar ali a média de quanto foi cada um pedido de acordo com o estoque e ver os que estão abaixo é vamos
selecionar aqui então aqui a tabela pedidos eu vou querer o campo nome o stock e só uhum vamos testar aqui ó onde o estoque aliás é a tabela produtos isso e sobrou uma vírgula ali no estoque também ah e aí como é que eu vou saber qual é a média deoque que eu tenho então eu posso usar aqui ó menor tá abaixo né da Média assim como a gente usou o select in né a gente pode fazer também aqui ó a média do stoque dos nossos produtos entendeu executei aqui e aí ele vai mostrar os
produtos que estão abaixo da Média roda pra gente só a média do estoque pra gente saber qual é Ah sim é qual é a média de estoque que eu tenho aqui é Esso aqui ó 91.85 tá E aí esse aqui estão abaixo dessa média Tá bom Agora vamos começar a misturar um pouquinho mais as coisas vamos dizer que a gente quer mostrar então o valor total de venda de acordo com as cidades mas apresentando ali o nome da cidade também que tá numa outra tabela hum boa bom a cidade tá na tabela de cliente né
Uhum Então a gente tem cidade eu vou até colocar o dar um eles aqui também e aí eu vou usar o S da tabela de pedidos vou botar o nome dele de p uhum o valor total aí eu chamo esse campo de total vendas então clientes tá eu posso botar C eu posso botar as assim como eu faço com os campos tá tanto faz E aí eu vou fazer um join então eu posso botar Inner join pedidos a tabela vai se chamar P onde tá como conseguindo acompanhar o ID é igual o ID cliente então
a gente vai usar Essas funções de agrupamento misturadas junto com o join dessa vez e aqui nesse caso Olha eu vou fazer assim ó na cidade cente cidade in E aí eu posso fazer ó São José dos Campos Rio de Janeiro só só ou seja a gente vai vai pegar ali o total de vendas em São José dos Campos mas nesse caso eu para funcionar eu tenho que agrupar que fazer um group by cidade dá uma olhada bonita aqui vê se vocês conseguem entender então eu peguei o cliente eu vou mostrar a cidade do cliente
agrupada aqui eu vou filtrar só por São José dos Campos e Rio de Janeiro só que eu fiz um join de pedidos onde eu vou somar o valor total desses pedidos que estão dentro desse critério aqui Uhum é isso é isso vamos ver se vai dar certo então ó Rio de Janeiro e São José dos Campo uhum tá bom mas agora vamos imaginar que eu quero por exemplo pegar o total de pedidos da pessoa e que eu vou na verdade usar uma dessas funções agregada vou ali pegar esse são ou count ali para contabilizar a
quantidade de pedidos que ela teve e eu quero fazer uma seleção baseado nesse nesse item que eu acabei de criar né então quando a gente utiliza as funções nesse caso por exemplo se eu precisasse fazer alguma verificação aqui ó total de vendas tem que ser menor que alguma coisa é simples Eu posso depois do Group buy eu posso usar o having então eu posso usar o total de vendas que é esse campo calculado né Uhum Então por exemplo é menor que 7.000 tá Então nesse caso aqui eu tiro o ponto e vírgula E aí nesse
caso ó ele já faz esse filtro o Haven serve para isso é como se fosse o we das funções agregadas e agora é a vez de você continuar brincando com o que nós te ensinamos aqui nesse vídeo com SQL com o que te mostramos aqui já dá para brincar bastante aí com o SQL dá para começar a desenvolver os seus bancos de dados é claro que se você quiser se aprofundar é importante estudar se você ainda não tem esse embasamento banco de dados relacionais tá temas como normalização definição e etc Pois é essa área é
muito grande tem profissionais somente dedicados a isso como os dbas e os da eu espero de coração que você tenha curtido esse conteúdo que nós preparamos com muito carinho para você não deixa de compartilhar esse link nas suas redes e deixa um comentário sobre o que que você aprendeu aqui nesse nosso minicurso mas se você quer aprender outro tema caiu aqui de paraquedas não tem problema esse é o espaço também aqui nos comentários para você pedir então um grande abraço ótimos estudos no SQL e a gente se vê na próxima tchau tchau tchau [Música] C
[Música]