Olá eu espero que esteja tudo bem com você e aqui a intenção desse vídeo é colocarmos realmente a mão na massa né colocar em prática e criarmos o nosso sgbd pensando em analogias até o momento nós imaginamos O que que a casa deveria ter né Nós criamos a planta da casa nós refinamos a planta da casa mas n um momento nós construímos a casa então é uma planta é um desenho ele existe mas a gente não pode morar dentro dessa planta porque é um desenho né então agora nesse vídeo nós vamos criar Realmente esse esse
sgbd ou né pensando em analogias criar essa casa para que no no próximo momento a gente possa Popular ela né Ou seja criar dados né ou na no contexto da analogia e movimentar móveis colocar móveis dentro de e assim por diante Tá bom então isso que você está vendo na sua tela é o my Workbench é aquele mesmo diagrama que nós trabalhamos nos vídeos anteriores e é justamente isso que nós vamos utilizar como base tá bom usando isso como referência no mais Cico nós temos basicamente aí duas formas diferentes de criarmos as tabelas A primeira
é mais automatizada via Ford engineer é isso que eu vou te mostrar a primeiro momento e a segunda é manualmente eu sei que vai ser muito tentador usar só o for engineer dentro da disciplina porém as empresas elas não utilizam for engineer ou seja não necessariamente você terá em mãos esse botãozinho essa funcionalidade chamada forward engineer e isso realmente poderá ser um problema para você né Então até pensando em uma entrevista de estágio umaa entrevista de emprego muitas das vezes você terá que criar na mão um comando Create table né Será que configurar na mão
isso ou será que ah né enfim fazer esses diferentes ajustes e configurações na mão e você não terá um botãozinho chamado for engineer por outro lado para aprender para saber como que funciona eu entendo que é interessante te apresentar Beleza então Tome muito cuidado com isso né eu vou te mostrar que existe mas eu gostaria de convidar você para usar esse momento da disciplina para e colocar a mão na massa para usar o CR table na mão porque isso fará muita diferença profissionalmente para você depois beleza enfim falando do for engineer é só aqui é
título de comparação tá na tela inicial do mysle Workbench eu vou clicar aqui em test com que é a conexão Que Nós criamos anteriormente e a partir dela nós já estamos aqui dentro do ah nosso banco de dados tá então você pode ver que eu tenho uma um único esquema chamado eh mydb até eu poderia enfim apagar ele e Ah até pra gente começar aí os nossos testes dentro do ma idb até nos testes anteriores que eu tinha feito eu tenho aqui né várias tabelas que eu já tinha criado enfim né parte de um teste
então só vou remover isso daqui eh e agora não tenho mais nada veja que o nosso banco de dados está Totalmente vazio e provavelmente na sua tela será Exatamente isso daqui Pode ser que no tenha só único esquema é chamado Sis ou sys e lá teria alguns metadados adicionais do banco de dados se forse o caso não precisa fazer nada nós vamos criar realmente aí um novo H banco de dados para Enfim fazer todas as nossas alterações OK agora já estou conectado no banco a gente já consegue ir pro próximo passo e o próximo passo
seria ou poderia ser né o nosso F engineer então aqui em cima eh você pode ver que eu tenho um botãozinho chamado data base em Database não está aparecendo na sua tela agora mas aparecerão várias opções uma dessas opções se chama forward engineer é com f de faca quando você clicar no forward engineer aparecerá um guia então será esse guia que nós utilizaremos pra configuração aí do nosso banco tá então é isso que eu vou mostrar agora para você só um segundo Então olha só tela aqui do Ford engineer aberta eu tenho aqui a minha
conexão que está configurada né corretamente que seria aquele teste com e o próximo passo só clicar aqui em next né no canto inferior direito e nós conseguimos avançar aqui Existem algumas configurações que vale a pena prestarmos atenção tá eh o que que eu gostaria assim com pontos principais esse generate drop schema ele basicamente vai apagar tudo que já foi criado então todas as estruturas de tabela né todas as conexões todos os dados que também foram populadas e nós aprenderemos sobre isso muito em breve Então tudo isso vai ser apagado e efetivamente resetado né como uma
analogia é como se fosse lá no celular e fosse nas opções né configurações e escolhesse aquela aquela eh configuração para resetar e apagar tudo que já existe para que você possa repassar aquele aparelho para um outro dono sabe então é é basicamente essa configuração utilize com moderação então saiba né Realmente qual que seria a a consequência da utilização dessa opção aqui como no meu caso em específico não tenho nada naquele banco então não tem nenhum problema eu clicar nisso aqui na verdade não vai fazer nada tá bom porque afinal de contas não tem nada a
ser removido esse drop objects before each Create Object ele basicamente significa que cada tabela Ela será apagada caso ela Já exista antes da gente recriar eh se eu não marcasse isso daqui ele ou poderia dar um erro quer dizer ele realmente daria um erro a toda vez em que eu fosse tentar seja por engano enfim recriar aquela tabela então de novo se você já possui aquela tabela criada e você está tentando recriar vai aparecer um erro A não ser que você Clique nesse drop Object se você marcar essa opção aquela tabela em específico também será
removida a antes que nós aí conseguirmos avançar Tá bom então de forma geral assim são essas duas configurações in se eu gostaria que você soubesse que existem né e quais são as consequências de fazermos isso o próximo passo é aqui pediu a senha então se não me engano a senha do meu caso seria root aí deu certo ah eu vou escolhi aqui então como filtro quais tabelas eu gostaria de realmente recriar né ou inserir no meu sistema como eu tô criando aqui do zero eu não vou mexer em nada aqui porque realmente são todas asas
tabelas que eu gostaria de criar afinal de contas Como já disse algumas vezes estamos começando do zero aqui então como estamos começando do zero nós já criamos Aquele modelo entidade de relacionamento Nós gostaríamos de ah jogar todo mundo né ou seja todas essas tabelas e garantir que elas funcionem então por isso que eu já deixei todo mundo marcado aqui e já é o padrão né E até eu consigo enxergar aqui em cima olha Tenho sete objetos Ou melhor sete tabelas ao todo e das sete sete foram selecionadas também então por isso que em outras palavras
é estamos transportando né movendo todas as tabelas lá pra nossa criação como eu ainda não tenho nenuma View nem rotina nem é um Trigger ou usuários e esses pontos nós aprenderemos ainda em breve por isso que está tudo Zerado aqui que realmente nós nunca mexemos com isso até esse momento tá veja que o PR myle ele gera para você um um arquivo em SQL tá contendo todas as instruções necessárias então como eu tinha marcado aquele drop schema então ele já criou aqui um uma linha que faz exatamente essa operação tudo que tiver os dois eens
no começo são comentários então se você já trabalhou em Python lembra do jogo da velha né como e como realmente um prefixo de comentários aqui a mesma coisa seriam os dois Evens tá depois eu vou criar o nossoa Depois disso vou fazer esse drop table né que é realmente remover aquela tabela e eu vou criar de novo aquela tabela e assim por diante então se eu começar a descer aqui nós veremos que tem toda a especificação de todas as tabelas que estão dentro desse arquivo tá próximo passo é clicar em next vai pedir de novo
a minha senha no seu caso pode que nem peça n já salvo e a ideia é que todos esses Passos tenham sido executados corretamente se teve algum erro de configuração né ou um tipo de dado tá incorreto qualquer coisa assim que não bate vai aparecer um erro aqui no log tá então até vai aparecer um xizinho aqui ou alguma coisa E clicando no botãozinho de show logs né que está no canto inferior esquerdo também você conseguirá enxergar Que tipo de erro teria acontecido no processo tá então é isso cliquei em Close e nós já com
conseguiríamos avançar aqui ok Pronto agora eu posso voltar lá naquela nossa conexão aquela aba de conexão para ver se realmente aquilo foi criado ou não se eu clicar nesse botão aqui de atualização ou refresh Olha só o myb está aqui que é o nome padrão né do nosso do nosso esquema e tem aqui todas as tabelas já criadas corretamente com todas as configurações Então a partir daqui nós já conseguiríamos poderíamos né Realmente Navegar enfim iterar com as nossas tabelas até se eu clicar nesse botãozinho aqui ó que tem que parece um símbolo de uma tabela
com um raio ao lado eu posso selecionar o conteúdo de cada uma dessas tabelas Nós também Veremos em breve sobre seleção de dados mas nesse momento eu gostaria que você enxergasse que cada uma dessas tabelas não possuem dados Então realmente nós estamos começando do zero aqui né e pensando em analogias é como se a nossa estivesse construída porém vazia bom então essa aqui como eu falei é uma das formas da gente começar a a trabalhar que seria com f engineer agora eu vou clicar com o botão direito no My DB escolher uma op drop Skema
E aí eu vou remover e clicar em drop Now para remover aqui toda a nossa tabela Olha só cliquei para atualizar estamos do zero de novo por que que eu fiz isso para demonstrar para você como que funciona a parte de criação na mão agora que você viu como funciona o for engineer né quer dizer como você viu Eh que funciona a parte fácil a parte automática agora realmente precisamos aprender a fazer isso na mão até porque quando a gente fala de fazer as coisas na mão eh como falei isso é muito importante para entrevistas
isso é muito importante no dia a dia nas empresas e realmente assim em algumas mais de uma década trabalhando em ti se eu vi usando o for engineer uma vez nas empresas eu diria que foi muito tá obviamente Pode ser que a realidade de outras pessoas seja outra mas aqui é importante você saber né que não é uma garantia que realmente F engineer exista em todas as empresas Tá bom então como que a gente pode começar a fazer isso na mão eu posso clicar com o botão direito aqui em esimas terá um botãozinho né uma
opção chamada creade schema e ao clicar nela eu posso dar o nome do nosso esquema Então nesse caso aqui e posso dar o nome de mydb mesmo você pode dar o outro nome enfim Aí você fica à vontade tá para fazer para escolher o nome que você achar mais interessante esse el for o shar set enfim Existem várias opções também tá então cada um desses nomes ou opções que aparecem dentro desse menu eh entenda isso como se fosse uma tabela ou né um alfabeto de diferentes codificações de caracteres então alfabetos mesmo Ah um deles que
seria cadê Aqui o 1252 ou Latin 1 eh esse aqui ele foi utilizado Décadas atrás e funcionava super bem para alfabetos inglês espanhol português mas não necessariamente pro Russo agora pro Russo pro chinês tinham outros ah outros outras folhas né de quantificação outros outras formas da gente qu valores binários para caracteres hoje em dia como Realmente nós temos dados do mundo inteiro né Nós temos comunicações entre diferentes culturas de uma forma muito mais comum e nós trabalhamos com unicode até o unicode ele dá suporte a diferentes alfabetos tem várias combinações que eu sei imaginar emojis
também existem graças a unicode Então o que é mais comum é nós escolhermos uma opção chamada utf8 Olha só escolhi aqui ut tf8 porque realmente grande parte dos bancos de dados hoje em dia dão suporte a isso e quando a gente fala o tf8 significa garantir que uma cedila não saia bugada no nosso banco de dados garantir que um a com um acento não saia bugado que até caracteres dos idiomas em espanhol francês turco Russo árabe enfim todos esses alfabetos funcionem sem nen um problema em único banco de dados Décadas atrás isso era impensável Então
hoje é uma possibilidade e é uma coisa que até se tornou padrão Tá bom eu vou clicar aqui em apply ele vai aparecer uma outra janela né só configurando só confirmando O que que você gostaria de rodar como comando e você pode clicar em apply e o esquema será criado pegando o que que apareceu em uma janela para mim olha só apareceu Exatamente esse comando então quando eu fui aqui em mydb schema cliquei em apply apareceu na minha tela né em uma outra janela Esse comando aqui schema que eu colei para você então ou você
poderia clicar em apply naquela janela que apareceu ou você pode à vontade né copiar aquele comando colar aqui uma dessas janelas até você pode criar né quantas Abas ou janelas Você Quiser ao clicar nesse botão aqui de Create a new tab que seria esse primeiro botão aqui e colar os seus comandos tá bom nesse caso em específico eu posso ou nesse botão do raio ou nesse botão do raio com cursor Qual que é a diferença entre os dois o botão com raio com o cursor ele só vai executar aquele comando então se eu tivesse vários
outros comandos emaio de criação de tabela seleção de dados e afins ao clicar nesse daqui ele somente executaria as linhas que eu estou naquele momento ou que eu selecionei lá se eu clicar nesse botão do raio ele vai executar todo o meu arquivo Tá bom então vou clicar nisso daqui olha só ele criou sem nenhum problemas porém eu tenho um warning né Eu tenho um aviso O que que significa esse aviso né na mensagem diz assim ó o tf8 deixa eu copiar aqui o resultado Olha só o tf8 atualmente é só um apelido né pro
sh section o tf8 mb3 mas no futuro será o tf8 mb4 Então é só uma di assim Olha mudou aqui a no futuro vai mudar a versão então só para você saber que não deu nenhum erro funcionou mas no futuro Pode ser que um outro caractere fique bugado por isso no nosso caso específico de disciplina isso não é nenhuma dor de cabeça tá é comum e e Ok é basicamente como esse o tf8 ele recebe várias atualizações ah ele tá informando que realmente no futuro por padrão ele vai funcionar com uma versão mais atualizada desse
conjunto de caracteres o que inclui emojis na prática Pode ser que o novo alfabeto seja incluído aí no futuro é que novos emojis também sejam criados e assim por diante beleza ok o nosso esquema ele foi criado até se eu clicar em atualizar Veja só o myb foi recriado mas em tabelas eu não tenho nada views não tenho nada Store procedures não tenho nada functions não tenho nada então Finalmente nós poderos criar a nossa primeira tabela na mão eu posso retornar aqui no nosso diagrama minha sugestão tá escolha uma tabela mais simples possível e que
ela não tenha conexões entre outras tabelas ou que não tenha dependências como a gente lembra né dependência é tudo que tá aqui em vermelho então por exemplo endereços olha só ele não depende de nada das outras tabelas funcionários também não marmitas também não até para uma questão de simplicidade vou começar aqui com funcionários tá como que funciona Então esse trabalho de criação de tabelas para isso existe um comando chamado Create table tá então é o Create table que realmente faz essa mágica da criação aí de eh de tabelas para nós no My Cico e para
te ajudar né se você quiser existe uma documentação que te dá mais informações sobre o uso do Create table sobre a sintaxe dele Olha só esse aqui é o site oficial a documentação oficial do mycle tá então até se você jogar no Google Create table Statement né my cle documentation alguma coisa assim ou my cle 8.0 reference manual Create table Statement se você procurar isso no Google você vai entrar exatamente aqui nessa documentação Então veja que na documentação nós temos vários exemplos né várias configurações de como esse Create table funciona cada combinação que existe então
só para você entender tudo que tá aqui em colate São opções então coisas que você pode escolher ou não Então existe um Create table existe um Create temporary table pode ser um Create table ou Create table if not exist e assim por diante Então olha a quantidade de configurações que existem aqui por isso que é muito importante até mesmo no ambiente acadêmico que você gaste um tempinho né Saiba como ler documentações porque pensando lá em uma carreira isso é muito importante paraa sua Progressão de carreira tá eh uma pessoa que deixa de ser Júnior vira
pleno vira Sênior rapidamente ela em bom português ela sabe se virar tá isso significa que ela sai ler documentação que ela sabe encontrar a informação que ela precisa de uma fonte confiável e atualizada e não existe nada mais atualizado que a própria documentação dessas técnicas dessas desses softwares dessas bibliotecas Tá então não existe nenhum livro mais atualizado do que a própria documentação não existe nenhum Professor mais atualizado do que a própria documentação tá então como sugestão eh é importante você conseguir realmente entender né saber navegar pela documentação e Saber encontrar a informação que você precisa
Enfim então pegando aqui alguns exemplos Olha só nós temos Create table E aí sempre nós informamos o nome da tabela e até descendo aqui um pouquinho mais deixa eu descer Olha só basicamente Create table o nome da tabela ah entre parênteses o nome das colunas e para cada coluna nós temos o tipo daquela coluna tá também nós podemos ter as informações de chave estrangeira se necessário e é isso Olha só Veja a quantidade de informações que existe aqui na documentação tá então realmente é algo muito muito rico para nós deixa eu descer um pouquinho mais
Olha só então por base veja que essa sintaxe ela padrão Create table nome da tabela entre parênteses nas colunas que nós gostaríamos de criar separados por vírgulas e eh também para cada coluna nós informamos exatamente qual que é o tipo ah de dado ou Quais são as informações adcionais que teriam naquela coluna Tá bom então quando dito isso vamos só retornar aqui no nosso my c e Create table beleza nós já estamos aqui como nós vamos criar a tabela chamada funcionários então esse é essa próxima informação funcionários e entre parênteses nós colocamos o nome aqui
das colunas Então olha só nós temos duas colunas tá uma chamada có funcionário e a outra nome então ó C funcionário vírgula nome mas não é somente isso eu tenho que informar também o tipo daquela informação então Ó o có de funcionário ele é small in e o nome é varchar 80 então código Funcionário é small in vírgula e o nome varchar 80 beleza essa aqui é a sintaxe mais eh básica paraa criação de uma tabela porém veja que o código de funcionário ele também é uma chave primária Então até que naquelas configurações extras Nós
também podemos informar né Se necessário ou se for obrigatório para aquela tabela nesse caso nós precisamos informar de uma forma explícita que o código de funcionário é a chave primário então depois do small inch nós colocamos essas informações adicionais ó primary k beleza vamos tentar executar isso daqui se eu clicar naquele símbolo do raio com cursor ele vai entender que é todo esse comando aqui por o comando ele começa né no Create table Ele termina no ponto e vírgula tá então ainda que esteja ocupando quatro linhas o my vai entender que tudo isso que é
uma coisa só ou se eu quiser executar todo o arquivo aí eu posso clicar só naquele raio tá então vou clicar no segundo botão e vamos ver o que que vai acontecer veja só aconteceu um erro aqui aqui embaixo Veja essa última linha que eu Acabei de explicar ó erro 1046 O que que significa esse 1046 está falando que nenhum nenhuma base de dados né Nenhum banco de dados ele foi selecionado veja que esse erro ele é auto explicativo e é justamente esse tipo de erro que nós eh temos aqui como intenção apresentar e resolver
com você nesse caso específico eu posso informar de forma explícita no começo ou seja my DB ponto e falar que eu quero salvar a tabela funcionário dentro desse Database né ou esquema chamado my mydb eu vou rodar de novo Olha só agora verdinho e deu certo será que deu certo mesmo vamos verificar veja que o tables aqui não tem nada no lado né eu vou mandar atualizar cliquei Olha só tables funcionários então deu certo aqui a nossa criação da nossa tabela vamos para um segundo exemplo eu posso vir aqui deixa eu só fechar o f
funcionários ã eu posso criar um endereços tá então o endereços também teria várias informações dentro dele código de endereço CP município F logradouro então vou fazer aqui embaixo ó Create table my DB que afinal de contas nós já aprendemos com erro né endereços abre e fecha parentes ponto e vírgula e aqui eu vou colocar todas as colunas tá então rapidamente V digitar tudo isso daqui e nos próximos segundos nós já conseguiremos avançar olha só já coloquei o nome de todas as colunas que nós precisamos mas lembre-se que não é somente isso né para cada coluna
e aqui ó veja que eu já dividir em vírgulas para cada coluna também preciso informar o tipo de dado e configurações acionais Beleza então vamos lá para isso também só um segundo Olha só então eu já coloquei as configurações acionais para cada uma dessas colunas eu coloquei para todo mundo menos a chave primária como nor nul até porque a chave primária por padrão Ela já tem né essa esse caráter de ser n nul e também na chave primária eu coloquei esse auto increment veja que eu não coloquei nem o NN no nome do funcionário nem
o auto increment no código de funcionário isso significa na prática de que o código de funcionário vou ter que cadastrar cada um o numerozinho né cada um deles na mão enquanto que o código do endereço vai ser cadastrado automaticamente né eu vou colocar o número 1 2 3 4 5 enfim para cada endereço novo isso será atribuído automaticamente e o NN aqui na prática como eu não coloquei NN no nome do funcionário eu posso ter muito bem um funcionário sem nome tá então é é basicamente isso que poderia acontecer como risco sabe porque eu não
tinha colocado essa configuração adicionalmente então isso serve como ponto de atenção caso né você vá cadastrar uma tabela e acaba esquecendo desse tipo de configuração que faz toda a importância no dia a dia tá agora eu posso rodar tudo isso daqui se eu clicar no botão do raio ele vai executar esse primeiro comando aqui que eu Já criei a tabela Então vai dar um erro e depois ele vai tentar colocar esse segundo comando se eu clicar só nesse segundo botão que tem um cursor e eu tiver clicado em alguma das Linhas aqui dessa segunda querry
ele só vai executar essa segunda querry ou essa segunda consulta Tá então vamos tentar agora olha só deu certo cadastramos a coluna chamada endereço melhor a tabela chamada endereços Beleza então a princípio né as coisas estão funcionando tá tá tá ficando interessante isso daqui e se a gente tentasse cadastrar por exemplo hã alguma tabela que tem uma referência a uma outra tabela então uma chave estrangeira vou usar como exemplo aqui a tabela clientes tá então vou fazer a mesma coisa só pra gente finalizar um Create table um mydb p clientes e entre colchetes eu vou
cadastrar Todas aquelas colunas tá bom só mais um segundo E é isso que nós veremos agora olha só viu a mágica né então já cadastrei aqui todas as colunas exatamente como como elas est aqui né nessa tabela clientes e o próximo passo será os tipos de dados Então vou colocar in varar 80 e assim por diante para cada um desses dados Beleza então vamos lá mais um segundo aí Então veja só eu já coloquei tudo que era nor nu ou melhor obrigatório já deixei muito claro o que que era o CPF era Unique também já
deixei aqui informado que era Unique código do cliente é uma chave primária também já deixei muito claro isso e o auto inqu também o que que eu gostaria de chamar sua atenção se eu criar o Create table né se eu executar isso da forma que está aqui vai dar não é que vai dar um erro ele vai funcionar vai rodar query porém não do jeito que nós gostaríamos por quê dentro aqui daa query ou melhor dentro disso que eu selecionei na na tela veja que em nenhum momento ele estabelece ele deixa de uma forma explícita
que esse código do endereço na verdade tem que ser lido dessa tabela endereço Então eu preciso deixar claro tenho que explicitar nessa query falando olha quando você for criar uma tabela chamada mydb clientes esse código do endereço ele na verdade é uma chave estrangeira ou seja ele é importado do código do endereço que está lá na tabela de endereço tá bom e como que a gente faz isso agora é o que eu vou mostrar nesse segundo e último ponto Olha só então eu coloco uma vírgula depois aqui da nossa última coluna aí eu coloco um
foreign foreign Key ou chave estrangeira eu informo Qual que é a chave estrangeira que no caso é o nosso código do endereço se por exemplo o nome disse aqui fosse batata eu teria que informar aqui ó batata também tá então só para saber da onde que está vindo esse código do endereço o código do endereço ele referencia seja né ele importa uma outra coluna de uma outra tabela no nosso caso específico ele vai referencial mydb P endereços Então olha só vou copiar isso daqui mydb P endereços e entre parênteses o nome da coluna que está
aqui no mydb endereços Que por sinal também é código do endereço e pronto e aqui já está pronto né a nossa configuração da chave estrangeira para Vamos só executar para garantir chique realmente é isso não tem nenhum erro de sintaxe Olha só funcionou eu vou atualizar aqui veja que agora nós temos né a nossa tabela clientes e nas configurações dela né tenho todas as colunas tudo certinho e em foring Keys olha só tem um menu adicional que se você visualizar nas outras tabelas você não encontrará isso inf ke temos essa informação bem clara Então olha
só o Meu Alvo é o endereços e tô pegando tô lendo né a coluna chamada código do endereço que vem lá da tabela endereços e pegando daqui tá bom então basicamente essa sintaxe básica de um da nossa criação de tabelas é minha sugestão desafio é para que você pegue todo o diagrama que você fez e tente né criá-lo na mão e eu sei que não é um processo tão legal quanto o f engineer mas como falei é isso que fará uma diferença profissional para você tá então demonstrar esse conhecimento na prática seja uma entrevista ou
qualquer outra coisa do gênero Isso demonstra lá que você realmente tem conhecimento em SQL sabe que conhecimento em SQL pras empresas não é necessariamente dominar o for engineer é conhecer um Crate table saber as configurações diferentes de tipos de dados de informações e eu acho que isso super legal para você aprender beleza é isso e vamos continuar aí nos nosos estudos até mais h