Banco de Dados - Linguagem SQL - Consultas Combinadas - SELECT - JOIN
7.72k views3713 WordsCopy TextShare
UNIVESP
univesp.br
Eixo de Computação - COM300
Univesp - Universidade Virtual do Estado de São Paulo
Profes...
Video Transcript:
E aí [Música] a marcha popular de Santarém e nós vamos continuar com a nossa disciplina de banco de dados é eu quero falar que é muito muito legal a gente chegar nessa parte desse para mim digitar as consultas combinadas entre tabelas um dia vai usar o Johnny né na verdade no dia a dia a gente vai usar muito isso aqui usar muitas construções porque na verdade a estrutura de um banco relacional nem indica a relação entre as tabelas então quando a gente faz a relação entre as tabelas para a gente vai consultar os dados entre a gente foi decompondo a tabela decompondo-a dentre as entidades foi decompondo né E criando a chave se relacionavam natural agora a gente precisa para apresentar resultados para fazer as consultas então nem tudo de novo e aí é o Johnny que vai ser capaz de fazer isso para gente bom a gente vai continuar usando a mesma estrutura que didática né que é aquele é o nosso acontecido idade cozinha empresa e falando sobre o Joy né a causa uma joia e permite que sejam combinados os dados de duas ou mais tabelas o único comando select o Johnny permite juntar dados que foram para entidades tabelas separadas né quando a gente vai tratar o modelo relacional então desde que a gente fez começou a o modelo a gente foi decompondo e agora a gente vai juntar no Joy dominar o modelo do projeto de banco de dados pessoal principalmente a Chaves primárias e estrangeiras é muito importante para que a gente possa proceder Às nossas consultas então lembra quando a gente fez lá Ângela reversa pegar um banco de dados e analisar o modelo ou então quando a gente já tem um modelo né quando a gente que fez o projeto e tem mordeu olhar para esse modelo e dominar esse modelo é muito importante para proceder o Joy Tá ok é muito importante fez conheço e saibam sempre disso bom porque eu tenho Então vou trabalhar com a tabela de funcionário e com a tabela departamento Esses são os dados que a gente tem aqui para poder proceder as consultas quando vocês podem assistir na aula e vendo as coisas vocês podem voltar precisar ele aqui e olhar os dados para ver se para ver como é que é e vão aparecendo para gente bom o primeiro Johnny que a gente vai falar eu natural Joy né que é a gente tem lá o natural joia ou simplesmente Enjoy né é o dado é quando a gente faz a operação de Jó e eles eram um produto cartesiano que é o cruzamento de todos os registros entre duas ou mais tabelas mas a gente tem pouco uso né fazer um produto cartesiano mas é o primeiro processo que acontece eu quero mostrar pra vocês como que isso acontece então aqui a gente tem do que mostrar esse comando aqui primeiro comando select aqui ó onde a gente tem select F dente F nome de número de nome porque essas letrinhas aqui né No começo né efe ponto porque o seguinte aqui está 19 from funcionário F Johnny departamento de então como pode acontecer de quando eu tenho mais de uma tabela eu te Campos iguais na e elas eu preciso identificar né esses campos se eu tenho 11 Joy né um campo tem o nome numa tabela mas não tem na outra não precisa identificar mas se eu tenho nomes repetidos eu preciso Obrigatoriamente dedicação e vai dar erro então aqui no caso quando eu faço f. de dente na tabela funcionário que eu dei aqui coloquei como F né é o campo e dente na tabela departamento aqui né é o é o campo número é assim que funciona tá então eu tenho o nome da tabela que eu fiz um aliás né a letrinha. E e e aí o nome do campo e esse não Sinceramente ser só uma letra pode ser duas letras pode ser três vezes mais pequenininho né para ajudar o nosso processo é que fica mais fácil de fazer então quando eu faço é esse select aqui né Ele é um uma repetição do sexo de cima de novo UEFI dente F nome de número de novo o profuncionário f crow Joy departamento de John e Cross Joy são a mesma coisa tá quando a gente faz isso que ele vai fazer pegar essas duas tabelas e combinar os registros multiplicar os registros mesmos como que fica o nosso resultado fica dessa maneira aqui então olha só olhando para esse select F dente aqui ó depois F nome aqui ó depois FD número aqui e depois o número de apartamento é b.
Número tá aqui ó e depois o de ponto o nome tá aqui ó Então eu fui pegando pelas tabelas os campos que eu quero selecionar e apresentei ele fez o cruzamento da tabela funcionário com a tabela departamento mas percebam que aqui gera uma coisa para gente que absurda porque ele vai cruzar mesmo é multiplicar então eu tenho aqui ó o Jorge E como eu tenho um campinho Jorge vai fazer o Jorge comprimento departamento de logística Jorge com recursos humanos Jorge como engenharia Jorge com informática só que tem que lembrar que o número departamento do Jorge é um Oi e aí que tá cruzando com todos aqui e aqui o Moacir né que o departamento do Moacir também é um ele tá usando com todos não é verdade quando eu faço um joia O que que eu quero eu quero isso eu quero por exemplo pegar esse registro aqui ó e eu quero presente pegar esse registro aqui né que é pegar Patrícia trabalho departamento 4 Qual que é o departamento quatro recursos humanos o Caio departamento três alca departamento três é o Engenharia e não cruzar tudo mas para fazer isso que eu tô dizendo que eu gostaria de fazer que não é o produto cartesiano a gente vai ter que fazer Winner Joy e aí o herói é o que a gente vai ver agora então ao combinar tabela as pessoas a gente espera que aí que ocorra um cruzamento né dessa tabela mas que eu consiga encontrar as Coincidências né que são estabelecidas pelo cruzamento das minhas chaves tá então vou fazer isso usando uma cláusula on e a seguir Qual é a sua como é que eu vou demonstrar isso para vocês eu vou fazer de novo selecionar os campos que eu quero aqui e aqui eu tenho a tabela funcionário hefner Joy que é o cruzamento departamento de E aí o que que só traga como o resultado né aonde o meu F. Número foi igual ao meu f. de número foi igual ao meu de número Então essa é uma condição a ser estabelecida Ou seja somente né vai trazer aonde a minha mente a coincidência da chave estrangeira com a chave primária mas eu tenho que dizer isso para o para consulta Se não ele não procede e quando eu faço isso aqueles aquelas linhas que eu gostei para vocês que era onde eu tinha e as Coincidências e vai fazer um filtro vai trazer só isso isso serve tá quando eu faço também usando join básico é o Johnny natural de ordem mas eu estabeleço a causa um então normalmente está acostumado a usar um herói não é para ficar claro que é o cruzamento mas também é possível fazer Só usando joia e a estabelecendo um embaixo o ombro o herói é obrigatório doi E aí que que acontece no meu resultado Então olha só e aqui ó a minha pergunta qual o nome do departamento que cada funcionário trabalha que é preciso mostrar o debate o funcionário ele apartamento então peguei aqui ó a identificação do funcionário o nome do funcionário aí aqui no funcionário né que eu peguei o de número que é o departamento que ele trabalha no departamento ao desenho aqui o número de apartamento e o nome departamento então esses são as informações que eu vou mostrar tem várias informações da tabela Quero mostrar só isso from funcionário Energy ou em departamento então coloquei funcionário F departamento de essa tabela que eu tô cruzando e eu estabeleço um aqui que é o cruzamento eu digo aqui corre o cruzamento do funcionário de número com departamento número então ele vai trazer esse resultado que percebam que aqui agora E aí e essa condição aqui de FD número com de número ela foi estabelecida tá aí eu trago o nome do Funcionário é o Jorge trabalho na informática o nome do nome funcionar e Moacir trabalho na informática a Patrícia trabalho recursos humanos O Caio tá laranjeira e assim sucessivamente percebam que eu tenho duas tabelas separadas funcionários apartamento eu juntos dados para poder trazer essa informação Essa é a natureza né do banco de dados relacional é assim que a gente vai trabalhar sempre comunidade relacional usando os jovens para juntar essas informações e mostrar as consultas da maneira que eu quiser os relatórios que eu quiser bom e uma outra maneira devo fazer né o Joy é usar hoeft e White Jon que a gente chama de condições externas Então as causas left right e pessoal também conhecidas como alternar o externo ele tem como finalidade permitir que registros tem o valores nulos nas a sujeira possam ser vistos por que que eu tô dizendo isso do Inner join a gente faz o cruzamento Então tem que estabelecer a relação à de cruzamento tem que achar a condição entretanto tem alguns Campos às vezes são chave de chave estrangeira mas que estão com valor no Então não vai conseguir estabelecer essa relação mas eu preciso fazer quero falar eu quero mostrar todos os funcionários e mostrar o nome de apartamento na frente sempre funcionaram tiver departamento ele não vai aparecer na minha lista mas eu gostaria que aparecesse então eu estabeleço o que que aquela tabela tem que tá totalmente no meu na minha consulta nesse caso é para que eu vou usar as condições as causas left e right join left esquerdo old White pro lado direito Vou estabelecer qual tabela eu quero completo e eu posso usar left join left our Joy Ride Joy Ride out Boy vai depender do banco de dados algum suplemento as duas expressões alguns comentou uma Só que também um full Out Boy que aqui é o juntar Oeste e White Joy e uma uma consulta só bom nesse caso aqui olha só que interessante Misty todos os funcionários indicando Qual é o nome do departamento que atuou antes de ir para consulta para mostrar o select eu vou mostrar aqui para vocês olha o Antônio o Antônio aquele não tem departamento o número de apartamento dele na tabela de funcionário tá vazio então ele não tem relação na tabela de departamento para estabelecer que o meu Antônio apareça que na minha consulta eu tenho que dizer que essa tabela tem que tar toda aparecendo na consulta então quê que eu faço olha e os campos Vocês já viram né efe dente f9f de número de número de nome e aí eu venho from funcionário left Joy departamento de exatamente igual o herói a diferença é que quando eu coloco aqui esse left Joy essa tabela aqui que é que tá do lado esquerdo ela vai ser totalmente listada todos os registros vão aparecer todos e aí ele vai fazer a condição aqui do Joy normalmente é vai estabelecer o Johnny novamente Como faz no Energy onde também só que nesse caso listando todo mundo para do lado esquerdo todo mundo tá na tabela funcionário e eu tenho um outro exemplo que é o contrário aqui eu digo o seguinte ó viste todos os funcionários indicando Qual é o nome do departamento Que ato todos os departamentos precisam ser listados não tinha ninguém que trabalhava em logística pessoal Olha só então quê que acontece não tem funcionário mas o meu departamento é porque porque aqui é o procedimento a consulta o meu select exatamente igual os mesmos Campos certo aqui a tabela funcionário f-lite Johnny departamento de ou seja rite quer dizer direita departamento Então tá do lado direito Que é departamento vai aparecer totalmente o estado todos os dias o serão o Estados isso é muito legal porque na verdade estabelece para mim aqui uma condição de eu sempre garantir né a completude de uma tabela quando eu quero com left join ou com o Haiti joinha nesse exemplo aqui com o Haiti Joy é uma outra maneira de eu fazer é quando eu quero fazer a consulta eu quero mostrar Olha só nesse caso aqui olhos de todos os funcionários todos os funcionários indicando Qual é o nome do funcionário e qual o nome do departamento Que ato E aí eu quero que todos os departamentos precisam ser listados ou seja mesmo funcionário que não tem departamento ao mesmo departamento que não tem funcionado eu quero que apareça na minha lista de Joy na Neves onde eu tô estabelecendo Joy e aí vai aparecer aqui no meu resultado oi Nete o meu funcionário aqui que é o Antonio não tem departamento e aparece e o meu departamento hoje estica que não tem funcionário também aparece porque porque eu fiz um full out the Oil full Out Boy é a função do Leste Joy Kuwait Joy Ou seja quando eu faço um full Outer join no meu select tanto a minha tabela funcionário com a minha tabela departamento serão listadas completamente a Claro que fazendo as relações do Johnny e os que não tem relação também será o estados e esse é o resultado que eu vou ter vai acontecer situações que ele vai precisar implementar este tipo de consulta bom uma coisa que eu usei para vocês é o seguinte o Maia Kelly por exemplo não implementa o water Johnny nesse caso vou mostrar para vocês uma solução né olha só para tudo existe criatividade para tudo existe uma solução para a gente fazer nesse caso aqui eu juntei é um select left join tá aonde eu faço todo mundo do funcionário aparecer fiz um Union com outro select tá com o light Joy ou seja o meu primeiro select pega o lado esquerdo completo meu segundo set pega o lado direito completo Quando eu faço quando eu uso essa causa a união para juntar o resultado de dois elétrons que que ele faz ele junta os dois e exclui os repetidos porque vocês Poderiam me dizer Olha se eu pegar o left já que aparecer todo mundo né e no Haiti Joy depois embaixo vai aparecer todo mundo de novo ficaram registros repetidos a cláusula e uniu já ela já exclui os repetidos Então ela fica exatamente todo mundo que não apareceu no Left Neto nunca pareceu leve nunca apareceu no joia são no Raid são juntados ele exclui o que eu repetir então a gente teria como resultado exatamente o comando que eu apresentei anteriormente né que era o do Full Out Boy não implementável O que é OK então é ser o meu resultado aqui junção de Let Joy con rite dói e pode acontecer situações pessoal onde eu faço um joinha com mais de duas cadelas eu trouxe ou esse desenho aqui só para lembrar vocês né que quando eu tenho o meu modelo é o meu modelo de lançamento e passando relacional as tabelas relacionando entre elas eu posso relação uma tabela que leva a outra que leva a outra que leva à outra e eu preciso muitas vezes juntar todos esses dados em uma condição só então por exemplo se eu pego aqui a minha tabela de funcionário ela tá relacionada com o departamento ela tá ela tá relacionada com Dependente rotacionado com departamento que tá é lançada com localizações que tá é lançada com o projeto então quê que acontece eu vou criando essas relações e as tabelas vão os dados vão navegando né Eu posso ir buscar relações em outras tabelas E aí vão ter momentos aonde eu vou ter um select com Joy que relacione mais do que duas tabelas então aqui no caso eu tenho uma tabela chamada projeto em uma tabela chamada trabalha em né então já tinha tá dela tava mostrando pra vocês o e Departamento e agora estou juntando projeto e trabalharem percebeu que em projeto aqui né eu tenho o número do apartamento e aqui eu tenho no trabalho em eu tenho o número do projeto e eu tenho o número do funcionário Então essa tabela por exemplo eu relaciono ela não é com as duas tabelas vol Já viste a quantidade de horas que cada funcionário trabalha em cada projeto E aí eu quero que mostra o nome do funcionário e o nome do projeto Então nesse caso aqui ó lista eu tenho P nome Como projeto certo então eu vou colocar o pé nome Como projeto o nome do funcionário F.