T-SQL em duas horas | Tim Smith | Skillshare

Velocidade de reprodução


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

11 aulas (2 h 20 min)
    • 1. Introdução e parte 1

      10:00
    • 2. Parte 2

      9:46
    • 3. Parte 3

      11:00
    • 4. Parte 4

      11:39
    • 5. Parte 5

      8:45
    • 6. Parte 6

      10:38
    • 7. Parte 7

      9:04
    • 8. Parte 8

      10:26
    • 9. Desafio de bônus - Prática de codificação ao vivo 1

      33:55
    • 10. Desafio de bônus - Prática de codificação ao vivo 2

      23:11
    • 11. Série de entrevista Sql Introdução 1

      1:32
  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

148

Estudantes

--

Sobre este curso

Neste curso, vamos aprender:

  • Os conceitos básicos para codificação T-SQL.
  • Como fazer perguntas com dados e responder às mesmas perguntas com o T-SQL.
  • Duas perguntas de exemplo altamente rentáveis que podemos responder com T-SQL.

Este curso é ideal para:

  • Desenvolvedores de Web e aplicativos que trabalham com uma camada de banco de dados.
  • Analistas de dados e desenvolvedores que desejam revisar os conceitos básicos rapidamente.
  • DBAs que não possuem experiência em T-SQL.
  • Empresários que querem analisar seus próprios dados rapidamente.

Conheça seu professor

Teacher Profile Image

Tim Smith

Top Instructor - Data & Security

Professor

I'm excited about explaining deep technical topics in a clear manner. Many students, readers and clients of mine have noticed that both of these communities are full of jargon that confuses people who are new. These communities prevent new people from entering because rather than bringing the technology to new people, they encumber new learners with terms they don't grasp.

Should you follow me and enroll in my courses? If the following excite you:

Making your data fascinating so that you tell better stories and earn more money Learning the very basics of security, which many people don't know Being taught by someone who's enthusiastic and excited about the topics they're teaching

Remember, if you're a premium student, you have unlimited access to all of my courses along wi... Visualizar o perfil completo

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%
Arquivo de avaliações

Em outubro de 2018, atualizamos nosso sistema de avaliações para melhorar a forma como coletamos feedback. Abaixo estão as avaliações escritas antes dessa atualização.

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui cursos curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução e parte 1: Tudo bem, vamos começar a introdução. Desenvolvimento de banco de dados de hoje Basic T sequela consulta. Então esta é a parte do curso em que vamos rever alguns dos conceitos básicos de TCP querian. Eu sugeriria passar por esta parte da série, em seguida, voltar para esta parte da Siri quando você começar a trabalhar no projeto do curso, OK, OK, há uma das minhas peças favoritas de conselhos Rever os conceitos básicos de sua profissão a cada ano. Então todos os anos, eu revisto as consultas de sequelas básicas, que é o que vamos passar na razão pela qual eu faço isso é porque eu vou esquecer alguns conceitos básicos também. Ok? E você quer sempre retocar o básico que você aprende. Então eu vou manter esses vídeos em cerca de 10 minutos cada, e depois de 10 minutos, eu vou parar. E então vai haver uma parte dois em uma parte três. Então, vou ser muito rápido. Minha sugestão seria com você para mim. Você pode diminuir a velocidade do lugar se você quiser tirar mais proveito dele ou se você acha que eu vou abrandar você pode acelerar o lugar, velocidade. Então, a primeira coisa importante a observar sobre quando nós Cleary Teoh usando TC completo, temos que consultar no contexto do banco de dados. E quando eu entrar em um servidor como este aqui, ele vai me usar como mestre. Ok, então você vai notar. Eu digo usar aplicativo porque eu quero estar conectando ao banco de dados do aplicativo primeiro. A coisa mais importante. Se eu não fizer isso, ele vai me pegar por padrão para dominar. E então eu não estou mais no contexto que eu preciso estar. Então, agora que estou no contexto da aplicação, posso consultar as tabelas envolvidas na aplicação, e vamos passar em um segundo. Como eu posso limpar tabelas em outro banco de dados podemos fazer através de consulta através de consulta de banco de dados, mas por enquanto, nós não vamos cobrir isso. Então vamos olhar para eu vou selecionar a estrela superior desta tabela dados históricos Ouro ou GLBT Dados históricos. Agora, o que é o topo de uma estrela? Eu. Ok. Se eu selecionar estrela, isso significa que estou selecionando tudo de uma tabela. Agora mesmo. Há 2300 e 55 linhas que você vê no canto inferior direito. Alguns de vocês podem ver minha boca. Alguns de vocês podem não, dependendo do dependendo do software que você está usando para visualizar isso e você pode ver a saída em cobrirá a saída em um segundo com as colunas aqui. Mas a chave é que se eu selecionar tempestade recebendo tudo da mesa, certo, certo, então este é o nome da tabela que podemos ver. A tabela aqui cobrirá DB O em um segundo. Mas esta é a mesa aqui. Estou pegando tudo. Isso é o que a estrela significa. Se eu disser selecionar uma estrela superior, isso significa apenas pegar a de cima. Basta obter um disco basicamente. E vemos que o servidor de sequela faz é ordená-lo por que eu sentiria que não há nenhum índice aqui. Vamos cobrir isso mais tarde. Então, quais são as colunas? Será que as colunas se eu derrubar isso na tabela? Temos colunas nesta tabela e nas colunas temos linhas de dados, certo? Eu posso realmente olhar para como esta mesa foi construída. Não estamos construindo mesas agora, mas construímos mesas neste curso. E se eu guiar esta tabela, posso ver que é assim que esta tabela foi projetada, certo? Há uma coluna I D, e é um inteiro. Há uma coluna de dados de preços e é uma data, certo? Coluna de data de preço e é uma data. Há uma coluna de preços. É um decimal, etcetera, certo. Esta é esta tabela, Então os esquemas são o que mesas de ar em um monte de pessoas depende de quem você pergunta, realmente, Mas um monte de pessoas usam esquema é para organização, certo? Então vamos usar um exemplo. Aqui eu vou criar um esquema, blá, blá, e ele vai me criar um novo esquema. Agora, se eu atualizar tabelas, não há tabelas usando esse esquema. Mas digamos que eu queira usar esse esquema. Eu poderia fazer Select Star em blah blah dot dados históricos de ouro, e eu agora criei uma tabela sobre esse esquema de Então vamos voltar a isso. Vamos olhar para a nova tabela que acabamos de criar, e vamos cobrir isso mais tarde no curso. Mas essa é uma das maneiras mais rápidas de criar uma tabela a partir de uma tabela existente é selecionar estrela próxima linha para o novo nome da tabela a partir da tabela existente. Mas ele assume que temos uma mesa de picada zip negativo. Porque se não o fizermos, então não o faremos. E você vai ver que agora que eu tenho, eu sei como eu sinto muito. Uma mesa sob o esquema blá, blá sobre a mesa. Meu nome é ouro. Dados Históricos. Ok. E tem a mesma quantidade de dados tem a mesma rosa. O mesmo. Está tudo bem? Porque basicamente o que fizemos foi copiá-lo. A linha regs é porque eu teria que reconectar um servidor de sequela. Ele acha que isso não existe. Tem, mas não percebe isso porque não se atualiza com frequência. E isso é verdade para mesmo servidor sequela 2016. Agora isso aqui é 2008 também. Neste curso que usamos 2008 são, também, e usamos sequela servidor 2000 e 16. Podemos até usar o servidor de sequela 2014. Eu uso várias adições para o benefício dos alunos, e eu quero dizer que as sequelas sobre 2016 Eu uso eu acho que é ou é este um acima desenvolvedor, que para o gosto de mim. Estou desenhando um espaço em branco ou sua edição Enterprise. Então, ou é a Enterprise Edition ou o que quer que seja. Aquele está logo abaixo da Enterprise. Está acima do desenvolvedor. Este está expresso. Ok. Tudo bem. Então sabemos como selecionar dados de um contexto de banco de dados. Certo? Estavam no contexto de aplicação. Sabemos como selecionar todos os dados que sabemos selecionar. Um pouco dos dados entrará na cláusula where mais tarde. Não neste vídeo. Só porque eu estou olhando para o momento agora em que provavelmente será um pouco Então e se eu quiser selecionar todos os dados de outro banco de dados? Eu sinto muito. De um banco de dados em A de uma tabela em outro banco de dados. Ok, agora, primeiro, antes de fazermos isso, vamos ver como enfraquecer. Vamos supor que eu estava conectado ao mestre em vez de aplicação. Como posso selecionar a tentativa de pensar sobre uma palavra isso Como posso selecionar uma tabela completa do banco de dados começando com o banco de dados? Ok, então lembre-se antes de eu fazer dados históricos de ouro, ok? Eu não estou especificando o esquema, então eu poderia se eu fosse especificar o esquema notar como isso funciona. Se eu fizer blá blá, funcionaria bem. Posso selecionar os dados. E se eu fizesse blá blá, blá, que é o Grupo Altria? Para que conste, não há nenhum nome de objeto, certo? Recebo um erro. Mas o que acontece se eu fizer db o dot meow... vemos que há um db omo, certo? Nós não vemos isso. Há um blá blá blá. Deixa-me refrescar isto. É por isso que você vê onde temos um blá blá blá aqui, mas nós não temos um banco de dados blá, blá mo direito. Nós só temos um blá, blá dados históricos de ouro. OK, então só para saber que isso é algo que estamos fazendo bem. Um dos contextos para selecionar a tabela de pontos do esquema de pontos do banco de dados é esse contexto de ponto ponto , certo? Você notará que estou selecionando a partir do banco de dados do aplicativo, o esquema e, em seguida, a tabela direita? Eu também posso colocá-los entre colchetes, e isso é para mim a melhor prática para dio esquema de banco de dados e o nome da tabela. Eu também posso fazer aqui porque sabemos que temos uma lei de bloqueio e veremos que isso funciona também. Ok, para voltar para a vista Então o contexto aqui e eu estou escrevendo isso lá fora não há nenhuma mesa Nome isso eu vi algo errado imediatamente. Ok. O contexto, portanto, é selecionar estrela a partir do nome da tabela de pontos do esquema do banco de dados ou uma tabela. Ok, enquanto fora do escopo deste curso. Porque nós não vamos fazer nenhum servidor de links se você estivesse fazendo um servidor de links, esta é a maneira que você faria isso. Servidor ponto de banco de dados dados ponto esquema de pontos estudantes prestar atenção Posits vídeo se você precisar de Teoh. Eu trabalhei com desenvolvedores sênior que não sabem disso. Isto é muito embaraçoso porque é muito simples. Como você vê banco de dados tabela ponto esquema se você quiser fazê-lo no nível de banco de dados no nível do servidor, tabela de ponto de banco de dados ponto do banco de dados do servidor sempre funciona da mesma forma que este servidor será qualquer que seja o nome do servidor, o banco de dados será qualquer que seja o nome do banco de dados, o esquema será qualquer que seja o nome do esquema, na tabela será qualquer que seja o nome da tabela no caso de servidores de link. Então, você precisa ter certeza de que você tem permissões que você não configurou corretamente e às vezes o que você encontrará é a maneira que, se eles não funcionarem, aqui está um hack rápido para um problema que você pode enfrentar. O que você tem que fazer é você tem o dedo do pé direito do mouse no servidor Link, carregá-lo e, em seguida, bater. Ok, você não mudou nada, mas isso refresca. Eu não sei por que, mas isso é realmente uma correção para um monte de problemas de servidor links, Então anote que para baixo é muito importante. Eu trabalhei com desenvolvedores sênior que não sabem disso, e é muito embaraçoso. Certo, então estamos no contexto da aplicação. Temos mais um minuto. Então vamos ver como se eu estiver em um banco de dados, como eu poderia me conectar a outro banco de dados sem alterar esse uso para outro banco de dados? Então, enquanto eu estou conectado ao aplicativo, eu posso selecionar a partir de um banco de dados diferente que eu posso selecionar a partir de análise de empréstimo bit. Db o dot db o ponto classificações de agência tabela pontos. Então posita vídeo. Vou fazer-te uma pergunta agora e apresentar um vídeo e ver se consegues responder isto antes de ouvir a resposta. O que isso significa? Claro, estou na inscrição. O que isso significa? A análise de empréstimo bit. O que é db o significa. E o que é tuberculose? Sublinhar as classificações da Agência significam um vídeo positivo e responder à pergunta. Vou dar cinco segundos antes de responder. Ok, então lance Lindy análise nome do banco de dados BBO era um nome de esquema e sublinhado TB. A classificação da agência é um nome de tabela, certo? Mesmo que eu esteja no contexto da aplicação, você vê, isso não mudou, certo? Eu ainda estou no contexto da aplicação porque eu especifiquei o banco de dados aqui com o ponto, ponto ponto que estou conectando a esse banco de dados. Então isso encerra esta primeira parte. Na próxima parte, vamos entrar em um pouco mais de detalhes. 2. Parte 2: Vamos começar a segunda parte baseada, basicamente sequela de consulta. E eu vou mergulhar nisso para que possamos usar nosso tempo de forma mais eficiente. Se acha que vou jejuar, por favor, abrandar. A velocidade que você para mim permite que você faça isso. Se acha que vou abrandar, por favor acelere a velocidade. Tudo bem, então, no último vídeo, o que nós olhamos é que nós olhamos para alguns dos conceitos básicos de selecionar uma direita, e nós temos colunas e linhas de dados. Então eu vou selecionar o top 100 desta tabela. Vou te mostrar muito rápido. Então este eu d é uma coluna dados preço trazido data preço é uma coluna. Os preços chamam-lhe média. Não sei o que, Boba, Boba está armado. Claro, este aqui é uma fila para a fila dele, etc, e você pode ver isso. Você sabe que há dados nessas tabelas como 54004 etc. OK, mas o que acontece se eu quiser olhar para apenas uma linha de dados e eu quiser olhar para a linha de dados? São 2000 e 11. Bem, eu vou selecionar Star e adicionei uma linha de código aqui chamada Panos de Uso. A cláusula where, se você estiver tomando notas, é uma cláusula de filtro. É aqui que aplicamos nosso filtro. Agora, há muitas maneiras diferentes de eu poder ensinar essa parte do curso. Mas o que eu vou me concentrar em vez disso é alguns dos fundamentos sobre a cláusula where que é muito importante, que as pessoas tropeçam. Mesmo pessoas seniores tropeçam primeiro, onde as cláusulas não têm sentido sem um índice. Ok, um, vamos mostrar um exemplo este botão aqui em cima no estúdio de gestão mostra plano de execução real . Ok, vamos ver como o servidor de sequela realmente analisa esta consulta nos bastidores. Então servidor sequela vai tentar otimizar todas as consultas que executamos, e vamos ver que o que ele faz é que ele faz uma varredura de tabela. Quer saber por quê? Porque não há nenhum índice em que pele de mesa, para aqueles de vocês não atingem a tabela inteira, certo, porque não há filtragem. Então, realmente, esta é uma espécie de consulta sem sentido no sentido de que não há nenhum ponto para mim para especificar cláusula ciente se eu realmente não tenho um índice sobre ele, menos que eu só quero desperdiçar Resource é, e isso é sempre um possibilidade. Mas a melhor coisa a fazer seria indexar a tabela. Então, nesta versão do Sequel Server, que é 2008 são dois e uma boa pergunta de entrevista , a propósito, seria eu faria perguntas de entrevista muito que eu tento enganar as pessoas, então eu vou dizer isso na sequela Server 2000 E oito também. Eu tenho um índice de armazenamento de coluna em cluster que o que eu esperaria que alguém dissesse Você não pode ter um armazenamento de coluna em cluster cebolas índice igual ao longo de 2008 são muito Sequel Server 2000 e oito ou dois. Você só pode ter dois índices. Um índice agrupado e um não agrupado em seguida. É isso. OK, então vamos criar um índice não agrupado para que os impostos de pecado criem índice não agrupado . Eu vou dizer I X Eu vou nomear a data do preço coluna no nome da tabela, que é G. L D dados históricos e, em seguida, o nome da coluna Data do preço e eu quero que ele indexado. Bem, vamos apenas, uh, qual é a data de vencimento do preço? Eu não tenho que fazer. Cindy está bem? Então eu vou criar este índice agora, lembre-se, lembre-se, no plano de execução que quando eu filtrado por data de preço, ele fez um skin de tabela. Agora, vamos comparar o que acontece agora quando eu faço isso, ok? Whoa. É totalmente diferente, certo? Já não é só uma digitalização de mesa, está bem? E vamos ver que ele faz um loop aninhado aqui. Não indexa busca, e não faz. Tudo bem, você olha para cima pilha. Ok, agora, eu não vou muito fundo em planos idiotas aqui. Vamos abordar um pouco disso mais adiante neste curso, mas a chave é que ele não é mais uma varredura de tabela. Agora, realmente, para a maioria das pessoas, inclusive eu, isso não significa muito, certo? Porque é tipo, sim, mas quero dizer, isso é muito melhor do que era? Então vamos em frente e vamos largar o índice. Ok, então agora ele se foi. Vamos fazer a consulta novamente e veremos que ele faz uma varredura de tabela. E já que estamos pesquisando como a luz, vamos em frente e vamos comparar o custo. Então eu vou definir as estatísticas. Eu 01 Eu trabalhei um desenvolvedores sênior , a propósito, quem não sabe como fazer isso? Então isso é realmente bom material que você vai querer prestar atenção, Teoh. E se você estiver tomando notas, eu tomaria notas e aprenderia a fazer isso. Porque isso é quando eu consulto sintonia. As pessoas acham que sou muito bom em sintonia com Cleary, mas isso é tudo o que estou fazendo. Estou olhando para o plano, e estou olhando para as estatísticas. É isso, e eu determinarei a partir daí. Mas sempre me surpreende quantas pessoas não sabem como fazer isso. Porque há um monte de, então temos o nosso esquema de mesa. Quais são as estatísticas? Vejo que sim. Um scan, 1274. Leituras lógicas. O que vou fazer é que sou uma cópia. Este controle de armas. Vê isto? Ok, é assim que você pode parecer um gênio. Tudo bem, então esse é o meu primeiro 1 Agora eu vou voltar, e eu vou construir meu índice naquela tabela, e nós vamos selecionar a mesma consulta. Olhe para o plano de execução. Sim, Index. Veja Deus, er, iata e nós vamos copiar isso e vamos comparar. Gosto de gostar, gosto de como este pergaminhos obrigado. Servidor de sequela sobre a tentativa de obtê-lo lá para cima para vocês estudantes. Aqui curso tudo o resto. Zero, eu acho que tudo zero k. Então nós vemos os dois lados. Então, com o índice, temos uma contagem de escaneamento de um. Faz sentido. Lê lógico de quatro e 0000 Tudo o resto. Então, comparado a dois, qual é mais barato? Bem, leituras lógicas de quatro é muito menos do que leituras lógicas de 1274. Lembre-se que a tabela só tem 23 55 registros 2355 registros. Penso nisso por um segundo. Imagine se aquela mesa fosse um milhão de registros. O que a lógica lê seria. Seria muito mais do que 12. 74. Olha o que é isto. Esta é apenas a esposa de quatro Reed. Porque o que os servidores de sequela estão fazendo? Não quero avançar. Então, estou tentando pensar em como transmitir isso para você como um estudante. Isso faz sentido introdutório ao servidor de sequelas aqui, mas pense nisso como quando você está em um carro e você está decidindo virar à esquerda, direita, direita. E você está olhando para os carros que estão vindo. O que você está fazendo em seu cérebro é seu tipo de cálculo de sua adivinhação na velocidade desses carros. Certo? Você só vai virar à direita se achar que tem tempo suficiente para fazer isso baseado no que você estima que a velocidade deles é certa. Então esse é um exemplo não relacionado. O servidor da sequela. Mas o que o otimizador O que é o servidor de sequela Optimizer está fazendo é suposições de como obter esse registro o mais rápido possível com base nas suposições que ele tem. E o que fazemos é estruturar tabelas de uma forma que lhe permita fazer suposições mais rápidas. Então, construindo um índice, é capaz de fazer uma suposição mais rápida de que se não houver índice, então é isso que eu quero dizer com uma cláusula onde se torna inútil. Se eu não tiver algum tipo de estrutura de indexação que me permita maximizar esse filtro, por que eu lançaria um filtro em uma consulta se não há absolutamente nenhum índice? E eu e eu pergunto-me porquê? Bem, por que é a minha pergunta. Então, neste momento, há exceções a essa regra. Pode ser que eu só queira executar uma consulta uma vez, e essa é a única vez que eu quero executar essa consulta. Mas realmente não faz nenhum sentido que eu faria em uma consulta regular, que eu não teria índice e seria muito rigoroso com meus filtros e reclamar sobre minhas consultas indo devagar. Então, um par de coisas para realmente rever aqui, porque isso realmente é um pouco mais avançado do que apenas nível júnior e eu tenho trabalhado com desenvolvedores júnior não tem idéia de como determinar se Aquarius mais rápido, estatísticas conjunto lento. Eu Owen Ok, isso vai te dizer as estatísticas de suas perguntas. Ok, inclua o plano de execução real e depois leia o plano de execução. Há um grande livro de Grant Fritchey, e eu acredito que é gratuito através do Red Gate em planos de execução e leitura de planos de execução, eu sugeri vivamente. Em primeiro lugar, é grátis. Em segundo lugar, vai torná-lo muito mais familiarizado com o que está acontecendo. Nós vamos fazer um pouco disso no curso, mas lendo esse livro, eu leio esse livro todos os anos porque é muito útil. Ok, se você estiver indo para usar uma cláusula where e é muito importante e mais crucial necessidade, então você quer também olhar para onde estão seus índices e como você pode maximizar a velocidade. Sei que parece que nem tudo faz sentido. Mas à medida que passamos pelo curso e otimizamos e reajustamos as coisas, você perceberá como estamos usando essas ferramentas uma e outra vez. Então, se você tem uma cláusula where e você não tem índices, não a coisa mais inteligente do mundo, pelo menos se é uma consulta regularmente retornando que você deseja, você quer estar executando muito rapidamente, modo que encerra este parte para diminuir. Eu não acho que eu tenho minutos suficientes para cobrir o próximo tópico, mas nós olhamos para o tipo de básico da cláusula where, e como nós vamos para o nosso projeto, a cláusula where vai fazer muito mais sentido para muitos de vocês vão ser Tipo, “Oh, eu entendo agora. Este é o lugar onde estamos aplicando isso, mas por enquanto, apenas reconheci que o where cláusulas um dos filtros que temos no servidor de sequela, e é muito importante que, se estamos precisando de algo para retornar rapidamente e temos um cláusula where, mas não temos índices do que aquele onde causas não maximizadas. 3. Parte 3: Não vamos começar a terceira parte da introdução ao desenvolvimento de bases de dados. Consulta básica de sequela T. E nós vamos estar indo lickety split neste vídeo também. Se estou indo muito rápido, devagar com você para mim. Se vou acelerar com você para mim, vamos demonstrar duas coisas aqui hoje. Nós vamos estar olhando para o grupo na ordem agora. Antes de fazermos isso, quero apresentar aos alunos o conceito de estatísticas de atualização. Sempre que você adicionar dados ou usar uma faixa de dados sempre que você alterar qualquer tipo de estrutura na tabela, se é dados menos dados, mais dados, eu sugiro vivamente executar atualizações. Estatísticas sobre a mesa. Isso atualizará as estatísticas na tabela em si, bem como qualquer um dos objetos relacionados. Na verdade, podemos ver todas as estatísticas relacionadas a esta tabela. Vê estas cinco estatísticas? Todos eles serão atualizados. Se eu especificasse esses objetos individualmente, eu só poderia atualizá-los. Por exemplo, só posso atualizar estatísticas para um índice se eu quiser, mas atualizar estatísticas não vai atrapalhar você. Todas as estatísticas de atualização ajudam em alguns casos, e é uma ótima maneira de sintonizar. Você pode ler mais sobre isso, mas eu quero demonstrar isso agora porque é muito útil para aprender cedo, sempre que você adicionar um monte de dados, é a mesma coisa com o meu curso ET al, que eu ensino aos alunos em detalhes era. É uma coisa muito boa para atualizar estatísticas. Você terá muito mais velocidade em muitos casos. Às vezes, isso é o que realmente está acontecendo como um veterano. Db A. Eu me deparei com um monte de problemas que são apenas uma simples questão de atualizar estatísticas. Você não acreditaria no que eles são, também. Sempre me surpreende. Então, vamos lá. Crescido por uma ordem por Crescido por é um conceito muito difícil para a maioria das pessoas obter. Então eu vou começar com água e você pode querer rever este vídeo várias vezes. Ok, então primeiro vamos para esta consulta aqui, e vamos estar usando um dos servidores de sequela construídos em funções. Será que vários deles na verdade, então você verá que o estado do preço que selecionamos é 2011 No. 104 Bem, o que acontece se eu quiser ter todas as datas em 2000 e 11? Vamos em frente e fazer isso agora. Esta é uma consulta de qualidade muito ruim, mas eu estou intencionalmente fazendo isso para demonstrar algo. Eu posso dizer o ano da data do preço e eu posso fazer igual a dois, 2000 e 11. Na verdade, acho que é isso. Sim, isso é o que vou demonstrar. Ordem comprar um segundo agora iria dar-lhe um rápido não pode ouvir. A razão pela qual isso é terrível terrível é o que servidor sequela tem que fazer é que ele tem que aplicar esta função a toda esta coluna muito mal escrito. A melhor maneira de escrever a consulta seria onde a data de preço entre 2011 chicotes No. Um, não. Um e 2011 12 navios 12 31 direita, e temos o mesmo. A razão é porque notado que não há nenhuma função aplicada a este, então servidor sequela não tem que primeiro aplicar a função. Agora estou de passagem. Estou dizendo, , pegue essa coluna e encontre todos os registros daqui, pode fazer muito menos suposições. Isto é o que chamamos de consulta solucionável. OK, muito importante. Muito melhor maneira de escrever suas consultas. Então vamos fazer isso agora mesmo. Eu queria te mostrar primeiro como fazer errado. É sempre bom saber como não fazer algo para que você saiba o que fazer e por quê. E quando alguém diz, por que não posso fazer isso? Espere, agora você pode soar como um especialista e dizer, porque não é um molusco de consulta de sargento. Então vamos olhar para a ordem por ordem por data de preço, o que você acha que vai acontecer quando eu protegê-lo pelo Price State? O que acha que vai acontecer com o preço do Estado? Veja como o estado do preço está agora. Em 2011. 0103 ou quatro ou cinco ou seis ou sete. O que vai acontecer? OK, agora o padrão é ascendente, ele faz ascendente. E a propósito, a maneira como você especifica ascendente é esta. Mas é o padrão. O que acontece se eu descer ? E a propósito, sou um pensador invertido. Só estou te avisando. Então até eu às vezes sou trocado em ascensão e descida. Então, hum, eu vou ser o primeiro a me chamar para fora sobre isso. E é decrescente significa que depois vem primeiro. Ascender significa que antes vem em primeiro lugar, mas eu Você não acreditaria quantas vezes eu fiz isso de trás para frente, e é porque eu sou um pensador invertido. Então eu estava pensando de trás para frente e tenho que repensar para trás. Eu sei que é loucura. Então, que ordem por faz? Diz: “ Como é que quero que os discos voltem? Que ordem? Agora mesmo. Neste momento, estou a fazê-lo num encontro. Então eu como. Ou pode começar com as datas iniciais ascendentes ou as datas posteriores, que é descendente. O que acontece se eu quiser fazer pelo preço em vez disso? Vamos apenas olhar para o preço que eu quero fazer a partir do preço descendente para o ano. Bem, agora não importa quais são as datas, certo? Olha, as datas nem estão ordenadas, mas estou pedindo sobre o preço. O preço mais alto volta primeiro. Está bem. Que tal ascender? Qual foi o preço mais baixo do ouro ou o G L O E T F. Aquele ano foi 1 27 novamente. As datas não são encomendadas. É o preço. Essa ordem. Certo? Ok, então isso é algo a observar na ordem por diz que fica definido fora do caminho Grupo por é um pouco mais difícil. Você tem cinco minutos para discutir isso. Então vamos atrás dessa. Então cresceu por É difícil porque muitas vezes as pessoas têm que fazer isso muitas vezes antes de obtê-lo. Então nós estamos pedindo pelo mês do estado do preço, então nós sabemos que ele vai voltar ascendente, certo? Estamos encomendando este pelo preço dia a dia da data do preço. Sinto muito, e estamos fazendo isso ascendente. E o grupo? Pelo que é o grupo fazendo aqui. Então vamos dar uma olhada nisso. Tudo bem. Estou agrupando pelo mês da data do preço Inquérito um, um inquérito para Estou agrupando pelo dia do estado do preço. Então, quando crescemos pelo mês do preço Estado, o que estamos fazendo nesta consulta é que estamos dizendo, diga-me todos os preços que temos a contagem de todos os preços por mês. Ok, então há 12 meses no ano. Você verá que temos 12 discos de volta, ok? E podemos ver isso porque vamos supor que eu deixasse de fora esta chamada e eu diria que me conte tudo, e vai ser como, bem, tudo bem, bem, bem. Posso pedir isso, mas vai notar que não sabemos em que mês o IHS, certo? Então, vamos voltar. Da mesma forma, posso remover esta coluna e ver o que vai acontecer. Foi só me dizer o dia do mês. Foi só dar 12 meses, certo? Normalmente, quando você faz, grupo compra. Na verdade, quase todas as vezes. O que você está tentando fazer é que você está tentando determinar agregados, certo? Esta é a forma como agregamos dados. Então eu vou rolar esta janela para cima e nós vamos olhar para alguns dos outros agregados . É muito alto, na verdade. Alguns dos outros agregados que podemos fazer. Então sabemos a contagem dos valores a cada mês. Qual é a média dos valores a cada mês? Qual é o máximo dos valores a cada mês? E qual é o mínimo dos valores comer mês? Eu tenho que agrupar por mês porque esses são os agregados que eu estou interessado. Estou interessado na média do condado de um acidente de homens a cada mês, certo? Então eu estou em um grupo nesse mês. Ok? Não posso agrupar de dia. Veja o que acontece se eu fizer isso se eu crescer de dia, mas estou procurando o mês. Vai ser como se fosse inválido no slickness porque não está contido em nenhuma função agregada ou no grupo de Klaus. Então, se eu estou procurando esses valores, esses valores agregados por mês, eu preciso de um grupo por mês. Ok, então vamos olhar para estes e vamos ver. Adoro o nome “sem coluna”. By the way, você pode resolver isso dizendo, como contar em meses como média de mês média do mês como Max of Month, o que foi esquecido H e então eu posso fazer como homens do mês caso. Vamos olhar para isso e vamos ver agora duas colunas têm um nome para que possamos ver. Por exemplo, em data mês, que seria data Mês seria um janeiro. Estou desenhando um espaço em branco. Há um 202 valores totais na tabela que estão no mês de janeiro, a média no mês ouro Pricer GL. Estes preços, devo dizer, são 100 ao máximo que alguma vez foi no mês de Janeiro é 169 e o mínimo que nunca waas em Janeiro é 41. O que é muito interessante para mim é sempre sobre fazer análises como esta é que você sempre encontrar esses meses onde é como o que e na verdade nós podemos fazer Eu quero dizer STD Evey reuniu é que nós poderíamos olhar para o desvio padrão de desvio padrão rápido de de mês só para ver muito rápido. Segure em. Sim, isso realmente não é tão significativo. Por um minuto eu estava tipo, eu me pergunto o quão significativo esses valores seriam em relação ao desvio padrão. Não muito significativo, mas você pode ver. É muito interessante que pareça que o ouro tem certas épocas do ano. É um pico mais alto Gld, devo dizê-lo. É um pouco maior do que outras épocas do ano. O que estou fazendo aqui é agrupar por mês, certo? Posso pegar esses mesmos agregados aqui e posso me inscrever nessa carreira. Em vez disso, estou agrupar-me por dia. Agora o problema é que não tenho por mês. Deixe-me me trocar hoje. Sim, eu vou estar empurrando 11 minutos neste vídeo e eu peço desculpas por aquela bomba e ir muito, muito rápido agora uma vez que eu tenho cardo datilografado dia e depois dia eo propósito disso é mostrar a vocês o grupo I Mas a maioria das pessoas com a compra de grupo é preciso muito trabalho para começar passando por exercício após exercício, porque não se sente esforços intuitivos, embora alguns de vocês vão imediatamente obter isso. Então você vê, agora o que eu estou fazendo é eu estou olhando para a contagem na tabela o número total de valores que estão no dia do mês de um e, em seguida, o dia do mês de dois e no dia do mês de três. E eu estou olhando para a média no valor máximo no mini valor. E então, é claro, o desvio padrão. Então, o grupo por é crescido por me permite olhar para agregados. Ele me permite olhar para coisas como, Qual é o número total de valores que eu tenho na tabela que estão no mês de janeiro? Qual é o número total? Qual é a média desse valor em janeiro ou qual é a média desse valor no primeiro dia útil de cada mês, etcetera tão cresceu é muito útil em agregados. Sempre que você tem alguém solicitando dados agregados, é mais do que provável que você esteja usando um grupo 4. Parte 4: Certo, vamos ver a introdução ao banco de dados hoje. A pergunta básica parte quatro. Vamos olhar para junções à esquerda e junções internas, e vamos usar alguns exemplos simples no projeto do curso. Nós vamos estar fazendo uma análise mais avançada ou alguma mais avançada, eu deveria dizer assim quando cobrirmos o projeto do curso, você vai ver mawr das articulações e junções esquerdas, junções internas e juntas esquerdas no contexto deles realmente sendo usado para lógica de negócios. Este é apenas um exemplo de demonstração simples que vamos estar olhando. Então vamos rolar até aqui e vamos ver nossas duas mesas. Uma de nossas mesas é chamada de tabela. Junte-se a um em uma de nossas mesas é chamado de junção de mesa, também. Estamos olhando especificamente para a coluna um i d. e estamos olhando para a coluna um i d e a outra tabela. Então ambas as tabelas têm uma coluna chamada um I D. E o que eu vou fazer é eu vou fazer uma junção básica onde eu vou me juntar na mesa, juntar-se a um, e não participar na mesa unida. O que eu vou fazer é me juntar a um que eu d e eu vou me juntar no outro. Eu d certo. Então vamos dar uma olhada nisso. Então, na junção interna está à procura de um fósforo. Certo, então vamos voltar para as mesas. É assim que a espelunca se parece. Você verá cada mesa. Casa de um eu d. de 12341234 Mas se olharmos para as mesas vai perceber que a mesa uniu a Tem uma noite um i d. de cinco. Agora notamos que quando nos juntamos, não vemos cinco. Por que é isso? Bem, parece que Table se juntou. Uma mesa direita juntou-se um não tem cinco em Lee tem até quatro, modo que um é excluído porque não está em seu. O que nos leva ao conceito de articulações esquerdas. E estes são exemplos simples intencionalmente. Mas veremos no projeto do curso por que isso é importante e por que queremos fazer isso. E a lógica de negócios, especialmente para análise, junções à esquerda e junções Inter são muito úteis. Então eu vou estar agora selecionando a partir de juntar-se à tabela, também, e eu vou estar juntando a tabela um. Então, uma junção à esquerda está dizendo que eu quero que você olhe para todos os registros desta tabela que existem na outra tabela ou eles não existem. Em outras palavras, onde há uma correspondência para onde não há uma correspondência. Se não houver correspondência, basta retornar um não para a coluna. Então pegamos tudo na mesa dois e temos tudo na mesa um que combina, e pegamos Knowles por algo que não combina. Certo, se pegarmos essa consulta e virássemos por aí, não conseguiríamos os cinco. E o motivo pelo que estou dizendo é selecionar tudo daqui que está nesta tabela que corresponda, e isso não combina. Mas a posição está começando nesta mesa, certo? Esta tabela, cada um de seus registros também existem na outra tabela. Onde está essa consulta? Estou a dizer, olha para tudo o que está nesta mesa e dá-me os registos que combinam nesta mesa . Tabela um são alguns juntados, mas que não correspondem tão bem e, em seguida, retornar uma nota para os que não coincidem. Certo. Então, a razão pela qual esses dois retornam de forma diferente é o ponto de partida em um tubo de consulta. O ponto de partida é a tabela unida a um que não tem um registro de cinco. E assim ele só retorna tudo o que corresponde porque não tem algo que não corresponde. Agora podemos mudar isso um segundo. Vamos fazer isso só para não estragar as coisas. OK, agora vamos olhar para as nossas mesas. Eu inseri um registro naquela mesa e vamos notar agora que isso tem um registro que não tem direito tem cinco. Então, agora vamos olhar para a nossa articulação esquerda. Vamos primeiro de tudo, olhar para a primeira consulta porque junta tabela para dizer, me dê tudo aqui. Isso não combina com cinco. Mas onde está o sexto ato? Mas não vamos começar da mesa. Junte-se a um, certo? Estamos começando pela TV a cabo. Juntou-se a ele são cinco e a outra mesa não, mas não sabe sobre seis. O que acontece se começarmos a partir da mesa juntou-se um Lit sabe cerca de seis porque tinha um seis nele , mas a tabela de desenho para não tem seis nele. Ok, então é por isso que estes o comportamento destes ar são diferentes, porque qual é a tabela que estamos começando com? Estamos começando com a tabela unida uma direita ou estamos começando com a junta de mesa para que vai afetar nossa articulação esquerda. Nota muito importante. Mas se eu voltar para a junção interior, ver o que acontece quando eu faço a junção interior Lembre-se que eu tive em seis. Não importa, certo? Porque seis não estão em ambas as mesas. Nem cinco. Então temos registros em ambas as tabelas que não existem na outra tabela, certo? Temos cinco, só temos seis. Essas não existem. Outra tabela, então a articulação esquerda vai puxar isso para fora, mas a junção interna não vai. Tudo bem, agora vamos olhar para um exemplo. Este é um exemplo muito importante. Você vai encontrar isso se você é uma sequela, T sequela, T sequela desenvolvedor de banco de dados. Praticamente toda a sua carreira. E esta é a questão das duplicatas. Porque as junções internas são afetadas por duplicatas, como veremos. Então percebemos que na mesa conjunta Um. Também temos uma ideia. Nós ganhamos I d 12 idéia de para, Devo dizer, mas na tabela conjunta para temos 12342 ID de dois. Agora, digamos hipoteticamente, estas são duplicatas. Como é que isto vai afectar a nossa união interior? O que você acha que nossas junções internas vai fazer quando temos em uma mesa apenas uma idéia de dois, Mas em outra tabela temos quatro idéias de para assistir. O que acontece. Temos quatro de volta agora sabemos que vamos esperar. Espere um minuto, Tim, mas não há quatro para idéias e mesa um, não importa, no entanto. É determinar se há uma correspondência certa. Há quatro jogos sobre a idéia de dois na Tabela 2 que não há Tabela 1, então ele vai retornar todos os quatro agora pensar sobre como isso vai afetar as duplicatas se nós só precisamos de um. O que isso significa é que neste conjunto de mesa tem três duplicatas, se você gostaria do primeiro. Certo, então vamos olhar para um exemplo simples da tabela com duplicatas, e ele só tem um filme I d. Eu mantive isso simples. Vamos supor que a regra da regra de negócios desta tabela é que ela só pode ter um I d distinto. O que quero dizer com isso é que podemos ter um. Podemos ter que ter três. Poderíamos ter quatro, mas não podemos ter dois de um desses i d. S. Mas notamos que temos dois dois. Isso é um problema. Certo? Ok, então esta é uma das maneiras mais rápidas de remover ou selecionar. Vamos apenas ver a seleção de duplicatas. Remover. Podemos entrar mais tarde. Mas nós vamos fazer com selecionar fora dupes como nós estamos indo para selecionar o número da linha. Na verdade. Vai fazer. Não bebi mais. Particionado por ordem I d por i d. e vamos chamar isso de dupe I d. porque não podemos ter duas colunas. Diga o mesmo nome desta mesa aqui. Então vamos fazer uma estrela seletiva de dupes selecionados, e vamos cobrir o que estamos fazendo em um segundo, na verdade, o que estou fazendo? Uh, número não foi encolhido. Lá vai você. Indo para trás. Tudo bem, então eu percebi que a lógica disso para iniciantes é tipo, “Whoa, vamos entrar nisso em um segundo. O que a ideia dupe está fazendo é nos dizer onde estão as duplicatas. Tudo bem. Então, se eu quisesse selecionar onde Rose não duplicado está, eu só diria, onde pai d é igual a um? Ok, agora, eu selecionei as duplicatas agora mesmo a duplicata. Está bem, mas vamos voltar a isto e filmar o número sobre a partição por ordem do Obaidi . Eu admito que isso é isso geralmente é muito difícil para algumas pessoas para ser encomendado por i d. Todos nós entendemos sua ordenação a rosa de uma certa maneira. Ok, então todos nós entendemos que nós temos que particionamento é nós vamos dividi-lo em categorias. Ok, então eu digo dividido por i d. É como um problema de divisão. Ok, então eu vou dizer que eu quero que você partilhe o número da linha, que é o que isso vai ser. Vai ser o número da fila e podemos ver isso. Deixe-me demonstrar. Isso é bem, o que acontece se eu apenas disse número de linha sobre ordem por i d. Vamos fazer descer apenas por diversão. A menos que você esteja descendo i d. E então vamos copiar as mesmas coisas provavelmente fará mais sentido para os alunos subindo na codificação de vôo , a propósito , a propósito, é muito divertido, mas é muito útil, e isso ajuda. Você verá como fazer essas coisas. Então vamos ver isso agora. Como estrela. Ok, bom. Então você pode ver o que eu fiz com as idéias ascendentes. 12345 Direita. Então, quero dizer, é tudo o que está fazendo é a mesma coisa com este 12345 está fazendo certo. É apenas ordenar e depois descer é apenas ir para trás. Certo? Então nós entendemos que isso é isso é muito direto para a frente. Estes para fazer sentido estavam apenas ordenando. Mas quando eu digo partição por eu d, o que eu estou dizendo é, o que eu quero que você faça é que eu quero que você divida-o por i ds repetitivos se houver algum direito , então nós vamos codificar esse comentário para fora. A propósito, é assim que você comenta algo que estamos de volta aqui. Então, há dois desses, certo? Então, quando eu estou particionando pelo i d, ele vai dizer, espere, há dois desses, então eu vou pedir isso, certo. Então este é um número de linha distinto porque há apenas 11 Este é um número de distrito porque há apenas 13 e há apenas 14 Mas há dois I ds então ele vai dizer Ok, bem, eu vou pedir isso pelo número da estrada. Então eu vou dizer um e eu vou dizer para assim por diante e assim por diante. E vamos provar isso, certo? E podemos fazer isso. E a grande coisa sobre T.C é igual a que é muito semelhante à matemática. Inserir em valores duplicados tabela. Vamos inserir mais dois e ver o que acontece. E vamos inserir um 2º 3 e depois inserir cinco. E, na verdade, isso entrou em mais dois. E então vamos inserir mais três e ver o que acontece. Então vamos inserir mais valores nesta tabela e vamos ver qual é o efeito quando fazemos esse número de função. E percebo que estou a chegar perto de 10 minutos, mas isto vai fazer muito mais sentido depois de 10 minutos. Sinto muito, mas você vai notar 1234 porque temos quatro dois agora, certo? Então ele está ordenando o número errado, mas está dividindo-o por que eu d. A mesma coisa com três não percebeu que nós temos três três, certo? Temos quatro dois e três três, mas só temos um formulário. Só temos 15 e só temos 11, certo? Então, se eu quiser selecionar minhas duplicatas, eu posso apenas dizer onde o Dubai D é igual a um e ver o que acontece. Filtra todos eles, e eu recebo as ideias distintas de volta. OK? Muito importante notar, porque você terá esse desafio muito no negócio onde você tem que remover duplicatas . Esta é uma maneira pela qual você pode selecionar duplicatas de modo que cobre os conceitos básicos do interior. Junte-se à junção esquerda e, em seguida, como selecionar duplicatas, porque você vai correr em momentos em que sua junção interna retorna. Dois Valores. Três. quatro valores da Valerie. O que isso significa é que uma das tabelas subjacentes nesse conjunto tem duplicados trigêmeos, quádruplos, o que quer que você queira chamá-lo em uma dessas tabelas, e é assim que você pode selecioná-los. 5. Parte 5: Vamos cobrir rapidamente a lição básica de sequela T de Cross aplicar. Agora, aplicação cruzada é uma das funções mais úteis em T é igual. E eu costumava perguntar em entrevistas sobre isso porque é muito útil. Então, vamos cumprir anos. Vamos olhar para uma tabela com dados de empréstimo estudantil ou vamos olhar para uma tabela, devo dizer, devo dizer, com dados de patrimônio líquido da Echo Boomers, que são pessoas nascidas de 1980 a 1995. E neste caso, estou filtrando todos os boomers da American Echo. Eu moro nos Estados Unidos. No entanto, nem todos os Echo Boomers são americanos. Alguns deles não são dos Estados Unidos. E então isso é exclusivamente olhando para boomers de eco estrangeiros sobre isso. Sobre isso, devo dizer intervalo de ano. E então isso aqui está olhando para o patrimônio líquido médio e o empréstimo estudantil médio para os Echo Boomers. Na verdade, o que vou fazer na verdade é subtrair o empréstimo estudantil médio porque só vamos olhar para os valores líquidos quando você subtrair isso aqui embaixo também. Certo, então só estamos olhando para eles. Então, este é o valor líquido médio para todos os eco boomers neste ano do estudo. Então, neste ano do estudo, este é todo o Echo Boomers estrangeiros. Como podem ver, os “Echo Boomers “não americanos são cerca de 76, eu acredito. Eu queria dizer que havia vários 1000 boomers de eco por ano que eu falei. Bem, o que acontece se eu quiser olhar para cada um desses Eco Boomers estrangeiros? E eu quero comparar o que seu patrimônio líquido é em relação ao patrimônio líquido de todo o grupo como um total? E então nós vamos estar fazendo aqui é nós vamos estar fazendo cross play. Na verdade, existem muitas maneiras de resolver este problema, mas esta é uma maneira de usar cruz aplicar. Então o que eu vou fazer aqui é eu vou mover minha janela um pouco para cima e então eu vou mudar para cá, e então nós vamos para eu tenho que me arranjar espaço E o que eu estou indo para Dio tirar isso para olhar para esta consulta porque eu percebi Pode haver algumas perguntas sobre esta consulta, então vamos rever isto em segundo, mas vou estar demonstrando muito rápido a aplicação cruzada, e vou chamar esta coluna como diferença externa de eco Boomer. Então, o que está acontecendo aqui? Então nós olhamos para essas duas consultas sobre primeiro de tudo, o que eu realmente estou fazendo é eu estou olhando para duas consultas. Estou olhando para todos os Echo Boomers estrangeiros, e estou olhando para a média do patrimônio líquido total de todos os Echo Boomers. Certo? Então é tudo o que estou fazendo agora, o que estou fazendo com suprimentos cruzados. Estou dizendo que quero que você aplique este conjunto de resultados destacado a coisa errada. Eu quero que você aplique esses resultados a cada coluna da tabela. Ok, então em outras palavras ou em cada linha, eu deveria dizer que eu quero que você faça uma chamada para eles para a mesa, e então eu quero que você aplique que Chame-o para cada linha. Certo, então quando olhamos para isso, se eu selecionasse esses dados, esse patrimônio líquido médio vem desse aviso cruzado como esse patrimônio líquido médio. Ele adicionou uma coluna da cruz, aplicar ok. E então cada estrada que temos de patrimônio líquido. Ele adiciona uma linha que é esse conjunto de resultados. Ok, então ele está realmente adicionando este valor a cada cone. Estou tentando todas as fileiras agora. Este valor se você pensar sobre isso. Há apenas um desse valor, mas esse valor é adicionado a cada regra. Por que isso é útil? Bem, o que estou fazendo aqui? Bem, estou olhando para a diferença entre o patrimônio líquido dessa pessoa e o patrimônio líquido médio, certo? Então eu quero saber como o patrimônio líquido dessa pessoa difere. Quero dizer, cada um desses eco boomers, esses ecoboomers estrangeiros ou não americanos echo boomers, eu deveria dizer o quanto cada um desses ecoboomers não-americanos seu patrimônio líquido difere do patrimônio líquido médio de todos os Os Echo Boomers. Certo? Então isso me permite aprofundar essa análise e ver em geral quantos, quão bem eles estão fazendo. E acontece que eu sei de todos os dados que eu coletei durante três ou quatro anos que os boomers de eco estrangeiros em geral estão indo muito melhor do que os Eco Boomers dos Estados Unidos . Então as pessoas que não são americanos fazem muito melhor em nosso país. do que as pessoas que são do nosso país em um monte de que vem a várias razões que são uma espécie de fora do escopo deste. Mas isso é algo que eu posso usar para aprofundar a análise agora. Há também algo útil aqui que eu estou usando, que é esta declaração de vitória caso. E eu vou explicar isso realmente brevemente lembrar que eu estou olhando para a diferença entre o patrimônio líquido e o patrimônio líquido médio, mas o patrimônio líquido médio é negativo agora. O que é um negativo? Menos oito? O que é uma subtração? Um resultado negativo na subtração de um negativo resulta em uma direita positiva. Vamos fazer uma demonstração rápida disso só para rever algumas matemáticas básicas. E é por isso que a matemática é meio que útil para entender. Se eu me sentar lá e dizer um menos cinco, eu vou ter igual a quatro negativo. Certo? Mas o que acontece se eu disser um menos negativo? 51 matemática? Sabemos que isso vai ser igual a seis. Por quê? Porque um negativo menos um negativo é igual a mais direito porque estamos recebendo a diferença . Essa é a coisa mais importante. Essa é a razão pela qual um menos de cinco é igual a um mais. porque estamos percebendo a diferença. Então, o que temos que fazer? Queremos olhar, queremos comparar a diferença do patrimônio líquido. Então, se a diferença do patrimônio líquido em nosso exemplo aqui é um número negativo, então vamos pegar o valor absoluto desse número, certo? Qual é o valor absoluto de cinco negativos? Bem , são cinco, certo? Então dizemos um e depois dizemos, menos quando dizemos que vamos, vou colocar isto entre parênteses, valor absoluto de cinco negativos, que é cinco, que é igual a quatro negativos. Certo, então recuperamos nossa resposta que devemos. Bem, o mesmo é verdade aqui. O que estou fazendo é dizer que o caso quando o patrimônio líquido médio é menor que zero para ele é negativo. Então me dê o valor absoluto deste valor de nozes. Caso contrário. Apenas me dê o valor da rede. O outro aqui significa apenas ir em frente e obter o valor normal se for maior ou igual a zero. Porque se for maior ou igual a zero, quem se importa, certo? Quero dizer, eu não preciso de submeter um negativo. Em outras palavras, eu não preciso pegar o valor absoluto porque é um positivo ou zero, porque, digamos, o que é? Cinco menos zero foi 50 não afeta isso, mas cinco menos um negativo vai ser seis porque estamos recebendo a diferença. E é por isso que esta função aqui, esta função B s entre parênteses, que, por exemplo, deixe-me demonstrar isso muito rápido como um B s menos um menos cinco vai me obter o valor absoluto de cinco. Eu sinto muito. Cinco negativos, certo. Mesma coisa. Se eu conseguir o valor absoluto de cinco, que será apenas cinco, será cinco também. Isso é o que este “BS” faz. A vitória do caso é envolver a lógica em torno dele. OK, o caso quando é apenas dizendo Ei, este cenário me dá o valor absoluto quando a rede é menor que zero, quando é um número negativo, Caso contrário, apenas me dê a rede. Agora sabemos antecipadamente que a rede é negativa. Mas se o patrimônio líquido da rede for positivo, essa é a chave aqui. E a razão pela qual queremos escrever dessa maneira é porque o patrimônio líquido muda ao longo dos anos à medida que faço mais e mais análises, certo? A mesma coisa com o seu modelo de negócio. Embora o seu modelo de negócio ou sua idéia ou seu programa ou seu aplicativo de desenvolvimento Web , o que quer que seja, você pode estar em uma situação em que dois número negativo. Mas nunca se sabe se mais tarde será um número positivo. Certo? Então você quer ter cuidado com o revestimento duro manualmente? Se eu fosse fazer isso, se eu fosse o código manualmente, isto é, então isso poderia afetar as coisas. Agora, neste caso, este é um exemplo raro onde eu posso realmente pegar o valor absoluto do patrimônio líquido em geral. Mas você quer ter muito cuidado em fazer isso. Então isso demonstra um tipo de caso, um de como podemos usar o valor absoluto de seu número negativo ou podemos usar o outro. E isso também demonstra como usar cruz Aplicar agora, no caso de não importa o que, Eu sempre quero um número positivo. Há o valor de usar o valor absoluto como um caso importante. Então deixe-me ir em frente e fazer este ano, vamos cortar isso, e então embrulhar isso aqui, e vamos apenas copiar como e o que podemos fazer aqui é o valor absoluto da rede. Porque não importa o que aconteça, não vai mudar. E é assim que escreveríamos isto. E nós vemos. Independentemente disso, seja zero positivo ou qualquer coisa, podemos fazer assim. O caso é muito útil se quisermos, se quisermos alguma lógica embutida nele. Mas o caso não é útil se não precisarmos de lógica. Então isso termina olhando para cruz ply, e que olha para cima como um exemplo simples de usar uma função de sequela T. Isso é o que significa rosa. Este é adulto em TC para a função. E então, claro, a declaração de vitória do caso, que é como envolver nossa lógica de negócios em torno de qualquer que nossos aplicativos tentem fazer . 6. Parte 6: tudo bem neste vídeo em Basic T sequela, funções e visualizações importantes estavam entrando em algumas das funções embutidas que o servidor de sequela fornece. E nós também vamos estar olhando para vistas agora uma das coisas que você não cobre em T sequela em duas horas, como eles não cobrem funções definidas pelo usuário. E a razão é porque as funções definidas pelo usuário são muito ineficientes e t sequela e eu considero ser uma das más práticas de construção de funções e T Sequel. Existem algumas funções que você pode construir, mas para a maior parte, se você entender as funções embutidas, maioria das boas funções que você poderia usar anti sequela já são fornecidas a você pela Microsoft Sequel Servidor. O que você prefere fazer é usar dot net, então vamos em frente e vamos olhar para isso. E primeiro de tudo, vamos olhar para alguns 44 básicos, eu acho que algumas das funções mais importantes, especialmente se você está olhando para conjuntos de dados. E uma vez que o projeto do curso é construído em torno de conjuntos de dados em que todos os dados importantes, Eu quero que você olhar para o conjunto de dados em que você acabou de resumi-lo e 500 palavras ou mais. Porque é uma prática muito homossexual. Essas funções são muito úteis. Então a primeira coisa que vamos olhar é a alteração máxima, a média e o desvio padrão. Estes são incrivelmente úteis com todos os tipos de análises diferentes. Estou olhando para o preço mínimo máximo de qualquer coisa. É isso ou digamos, petróleo ou qualquer outra coisa. Tes thes. Uma escrita muito útil. Estou olhando para a análise do empréstimo estudantil de Echo Boomers que são a geração milenar . Echo Boomers é outro nomeado para ele porque há grande geração e isso é de alguns dados que eu coletei, e você vai notar que o maior empréstimo estudantil no Mulford Millennials é de US $300.000. O empréstimo mínimo, é claro, zero. O empréstimo médio é de 6500 e, em seguida, o desvio padrão é de US $19 em 857. Agora alguns de vocês podem ser como Espere, Tim, eu pensei que a mídia disse que o milênio médio tem muito mais empréstimos estudantis em 6500. Quero dizer, como se estivessem, estão enterrados em dívidas. Na verdade, isso não é verdade. O que eles querem dizer com um estudante médio significa apenas o estudante médio ou o mutuário médio é o que eles realmente querem dizer quando você realmente cavar os dados, não apenas os dados que eu coletei, mas quando eu pesquisei até mesmo para os dados do governo. O que eu encontrei é um monte de números ar cotação são o mutuário médio. Isso não é a mesma coisa que o milênio médio, porque nem todos os milênios ouro ir para a escola Onley sobre, Eu acho que quando eu estava fazendo isso, Eu quero dizer na faixa de 40 a 50% dos millennials foram para a escola. Então, há alguns deles que não fizeram e lembram que nem todos os milenares que vão à escola têm empréstimos estudantis em Lee. Cerca de 1/3 tinha empréstimos estudantis. 1/3 dos millennials têm seus pais papel de sua escola ou eles pagaram e, em seguida, outro terceiro uso bolsas de estudo, e então apenas 1/3 tinha um empréstimo estudantil. Então isso é outra coisa que podemos fazer é combinar isso em nossa consulta. Digamos que olhamos para o empréstimo estudantil médio quando os alunos têm pelo menos algum, então você vai notar aqui no meu filtro porque eu estou usando maior que zero. Isto é muito importante. Olhe para alguns avisos de análise de dados. De repente, o empréstimo médio é de 20.597 agora. Quando eu estava fazendo meu estudo, o mutuário médio ou o mutuário médio do empréstimo estudantil, acordo com a mídia, era de $22.000. Então isso é muito próximo dessa figura. E os números do governo que eu puxei então foram sobre isso arranjado. Um deles tinha cerca de 19 mil. Outra era de cerca de 21.000. Então eu estava bem no meio disso e o que eles estão olhando, no entanto, é que eles estão olhando para o mutuário médio, o mutuário médio do empréstimo estudantil, não o milênio médio. É muito importante notar porque novamente, se você não está familiarizado com o conjunto de dados, quando você realmente começa a cavar os números, você percebe o que eles significam. Mas muitas vezes com jornalista, eles acidentalmente citam algo errado e não percebem onde deram errado. É por isso que é muito importante saber essas coisas. Então, quais são outras coisas que podemos olhar? Bem, seria um pouco sem sentido, mas outra coisa, outra função que podemos olhar para gritar é que podemos fazer um empréstimo estudantil , que é um campo numérico, e podemos convertê-lo como um campo de texto. Então vamos supor que eu quero lançá-lo como um campo de texto e eu vou dizer a partir deste aqui, então eu vou fazer empréstimo estudantil um campo de carro var. Bem, por que eu faria isso? Bem, eu poderia dizer agora que é do nosso campo de carro em vez de um campo numérico, eu poderia dizer echo, deixe-me fazer assim, Echo Brumer. Oh, e então mais Então eu estou contaminando uma string aqui e você vai notar que eu coloquei o valor numérico uma string basicamente aqui. Está bem. E C afiado. Isto é como um substituto. Lamento não substituir um convertido. Não consigo pensar no que está fora do topo da minha cabeça. Improvisar não é uma força. Sempre quando estou fazendo matemática. Onde está se eu fiz isso sem o elenco? Ver o que aconteceria? Então, o que faria se eu fizesse isso? Eu vou entrar lá e é tipo, Whoa, você não pode converter uma string de caracteres em dinheiro, certo? Isso é dinheiro. Está no mesmo numérico. Então eu não posso fazer isso. Mas isto é o que este elenco me permite fazer. Ele me permite converter uma string para um valor numérico. Certo. E se eu quisesse Teoh? Ah, espere um segundo. Então vamos dizer que sim, vamos usar isso. Eu queria substituir, então eu vou usar outra função que chamava o lugar Controle Z. Não sei por que eu fiz isso. E eu quero substituir todas as instâncias de zero ponto 00 por nada. Ok, então ele vai passar pela corda, e cada vez que há um 0,0 você pode ver 0,0 ele vai ficar sem nada. Na verdade, vamos fazer melhor. Vamos fazê-lo desta forma, o que significa não aplicável direito. E você vai ver que ele entra ele substitui. Agora há um problema. E alguns de vocês vão perceber isso se olharmos bem para isso, mas o problema com 0,0 é que algumas pessoas, digamos $120.000. Bem, há um 0.0 Então o que eu poderia querer fazer é que eu poderia querer substituí-lo onde há um espaço certo, e isso também leva curso que o problema está aberto no novo espaço Para em um substituído pode ser um complicado para brincar com. Mas, na maior parte, devemos obter os números corretos, porque não deve haver espaço as pessoas que devem valores. Mas como você pode ver, esta é uma função embutida. Outra coisa que eu posso fazer, que eu fiz em um vídeo anterior. Podemos olhar para o valor absoluto do empréstimo estudantil. Esta é outra função construída, muito útil. Matematicamente, acredito que todos os empréstimos estudantis que tenho nesta tabela são relatados em números positivos . Então, não vai ter nenhum efeito. Isso é uma coisa que podemos fazer se tivermos números negativos em um campo, muitas vezes vamos nos deparar com a situação em que não queremos ter um número negativo . Então vamos estruturar nossos dados sozinhos é tecnicamente um número negativo. Mas reparem como o modo como estou a reportar é um número positivo, e muito disso será para filtrar. Então isso nos leva ao próximo ponto enquanto olhamos aqui, que são pontos de vista, certo? O que queremos fazer é olhar para como construir uma visão. Agora, uma das grandes notas aqui, vamos em frente e copiar isso. Vamos usar o eco boomers para usar o contexto do banco de dados aqui, uma das coisas que eu sugiro. E vamos usar uma vista simples aqui. Análise rápida, como eu sugiro, construindo uma consulta que você pode aplicar a qualquer conjunto de dados. Ok, eu uso isso o tempo todo. Esta é provavelmente uma barra de ouro como faras lições de matemática para alguns de vocês neste curso porque muitos de vocês, se você aplicar isso, você será capaz de usar isso o tempo todo em sua vida. Permitam-me que dê um exemplo. Um vendedor vem até você e diz que queremos que você compre gás natural. E eu já tive isso antes. Bem ali. Sua companhia elétrica na vida deles. Queremos que compre gás natural para onde for. Olhe para o preço do gás natural. E o que é isso? São 11 dólares. Você vai? Importamos a história e olhamos para toda a história do gás natural. Você descobre que US $11 que apenas 10% do gás natural tempo é US $11 ou mais. Aquele vendedor está tentando te beneficiar? Eles estão tentando roubar você tentando roubar você escrever como é por isso que ser capaz de analisar rapidamente qualquer conjunto de dados irá fornecer-lhe com toneladas de valor. Eu usei consultas como esta que me fizeram milhares de dólares, e eu os usei também para economizar milhares de dólares para que você possa dizer muito rapidamente quando alguém roubando você fora. Essa é uma maneira de ver as coisas. Primeiro você acha que também pode usar para identificar realmente boas oportunidades de investimento foram apenas oportunidades em geral, especialmente em sua área. Então, agora que criamos as exibições, criei essa exibição e você notará que as estruturas criam vista. Há um nome de exibição como e, em seguida, esta consulta. O que ele faz é salvar minha consulta. Ok, então agora eu posso selecionar a partir desta vista se eu fizer isso direito e você vai notar que é seguro. Então, se eu encontrar outra análise útil, talvez eu ache que Median é útil. Eu adiciono mediana. Talvez eu encontre o desvio padrão de cada ponto. Uma das exibições que eu uso, um dos conjuntos de dados que eu usei ou programas de dados que eu uso para analisar conjuntos de dados é realmente armazenado. Procedimento sobre o que é dinâmico o suficiente onde eu posso passar em qualquer tabela e qualquer pente que eu analiso, que é geralmente o preço. Digamos que é um conjunto de Lego. Quero ver se um conjunto de Lego é muito barato. Eu posso passar na tabela, nomear o preço, e ele vai passar quando ele vai fazer uma análise sobre toda a história de Vamos dizer, Digamos que é o conjunto de Lego e eu poderia ir obter toda a história sobre Lego set e o preço de tudo. E faz algo semelhante a isso. Mas tem informações muito mais detalhadas, e novamente eu posso olhar e ver o que toda essa história é. Ótima análise. Então isso é algo que podemos fazer. Podemos construir uma vista, tem salva uma consulta. Então agora podemos chamar a vista em oposição à consulta, o que nos ajuda. E, em seguida , é claro, servidor de sequela nos fornece algumas funcionalidades embutidas. Há muito mais funções. Estes são alguns dos mais úteis, e estes são provavelmente alguns dos que eu uso mais, e é por isso que eu os apresentei. Mas, de um modo geral, se você está procurando uma função que você precisa fazer alguma coisa, a maior parte da sequela Time T já tem essa função em casos muito excepcionais onde você precisa construir uma. Se você precisa construir um, no entanto, entanto, eu sugiro altamente que na maioria das situações é muito mais eficaz fazer isso em uma linguagem de programação orientada a objetos como Dot Net, ou o que não é fazê-lo em T sequela uma vez que T sequela é uma linguagem baseada em conjunto e não uma linguagem baseada em objeto. 7. Parte 7: Tudo bem, vamos olhar. Uma sequência T básica foi armazenada dinâmica Procedimentos igual. Muitas vezes você vai ouvir a sequela dinâmica é ruim. Para a maior parte, é algo que você deve ter muito cuidado ao usar, se em tudo. Eu vou definitivamente expressar algumas preocupações sobre isso. Mas na maioria das vezes, se você está fazendo análises, há algumas coisas convenientes que você pode digerir se você estiver fazendo, que é uma análise rápida para si mesmo ou você está tentando obter alguns homens. E Max é de mesas ou coisas assim são apenas informações muito rapidamente. Então vamos em frente e vamos começar apenas construindo o procedimento armazenado em nosso primeiro procedimento turnê. O que nós estamos indo para didio porque nós apenas vamos selecionar top um começo desta tabela, OK, e nós vamos chamar o procedimento da loja. Com licença, preciso me livrar disso. Você não está usando aquele chamado procedimento armazenado e a maneira que eu chamo é apenas aceitar e, em seguida, o nome do procedimento. E então, quando o chamarmos, ele apenas selecionará a estrela de cima dessa mesa. OK, excelente. E você vai notar, também, se eu quiser mudar o procedimento armazenado. Eu só escrevo um altar em vez de criar, criar, criá-lo. Alter altera-o. Ok, bem, eu também posso inserir declarações, excluir declarações, atualizar declarações, etc. Então vamos dizer que eu quero selecionar top uma estrela em tabela nova, e eu vou fazer isso. Primeiro, vou criar a tabela primeiro. E se eu fizer um seleto top uma estrela em uma tabela novamente, ele vai falhar porque já era um objeto. Então agora o que eu vou fazer é mudar e eu vou fazer o controle X e então eu vou fazer em um segundo inserir nesta mesa e eu vou apenas testá-lo . Funciona. Mudei o meu procedimento, funciona, e depois chama o procedimento. E depois disso, vamos selecionar da tabela a nova tabela e veremos que deve haver três linhas. Então você vai notar que eu também posso inserir em uma tabela que eu posso excluir. Eu não posso isca etcetera OK, no meu procedimento para que eu possa selecionar a partir dele. Posso inserir, não posso vencer, posso apagar. Então vamos em frente. Vamos demonstrar. Excluir. Digamos que eu queira apagar todos os registros do estábulo. Então exclua Oops, não selecione excluir da tabela nova. E vamos em frente. Faça isso e vamos selecionar a partir dessa tabela e vamos ver. Eu vou ter que chamá-lo primeiro altar, chamar o procedimento e apagar todas as linhas. Todas as três estradas foram afetadas, e então veremos. Não há nada lá dentro. Então, procedimentos armazenados ar. Ótimo, porque eles são basicamente códigos salvos, certo? Se eu tiver um processo, digamos que estou importando dados e quero salvar o processo automaticamente. Digamos que esfrega. Os dados limpam os dados para mim. Bem, então posso guardá-lo na loja. Mas congelar procedimentos armazenados como este, certo? Então eu não tenho que continuar criando código para ele o tempo todo. Posso dizer isso em um procedimento de tempestade. Ok, bem, agora estamos olhando para um procedimento de loja que apenas chama algo certo. Não há nenhum parâmetro que estava passando. O que acontece se quisermos passar parâmetro para um procedimento de tempestade? Então, em outras palavras, digamos em um exemplo hipotético que eu queira selecionar estrela de qualquer tabela, então eu quero meu parâmetro b uma tabela e eu quero minha consulta no procedimento para consultar qualquer tabela que eu passar dentro. É aqui que começa a se tornar discutível se esta é uma boa ideia ou não. Mas, na maior parte, vamos seguir em frente e vamos mostrar um exemplo disso. Então, neste exemplo, eu estou criando um nome de tabela de procedimento é meu parâmetro e eu estou declarando uma sequência dinâmica, Strand, que significa que isso está sujeito a alterações. O que eu quero dizer com isso é que dependendo de qual tabela eu passar nele, talvez selecione estrela da tabela uns como começar da tabela para a tabela três, etc. Certo? Então, qualquer tabela que eu passar bem vai mudar a consulta potencial que é executado. Agora você vai notar que eu estou fazendo uma estrela seleta da tabela que eu envolvi em nome de aspas, que é uma função embutida que usa objetos do sistema. Eu poderia gastar muito tempo explicando isso, mas o resultado é que a injeção de sequela é definitivamente uma preocupação. E assim, com sequela dinâmica, então eu sempre envolvo meus objetos de sistema em nome de aspas. É apenas algo que eu pratico bem. É a mesma coisa que eu parâmetro tenta minhas cláusulas conscientes. Certo, bom treino. Você pode procurar isso. Agora. Repare aqui que estou imprimindo a sequela. Eu não vou executar isso selecionando a partir dele. Primeiro, vou imprimi-lo, e já criei isso. Então eu quero apenas ver o que isso vai fazer e você vai ver o que ele faz. É isso? Selecione Estrela a partir do Echo é uma análise de empréstimo de estudante eco. Então, se eu chamar isso e eu disser selecione, na verdade, vamos fazer isso. Espere um segundo. No topo de uma estrela. Está bem. Como um juntos. Vamos fazer isto. Ok, vamos chamá-lo. É copiar este lugar que Ok, eu faço isso. Vemos que ele seleciona o topo. Comece a partir daí. Agora, tudo o que estou a fazer é imprimir neste momento. Então, o que? Como eu chamo isso? Como faço para fazer onde eu quero? Quando eu executar este procedimento, ele vai fazer o que eu escolher aqui, direto do que eu passar, que é dinâmico. Ele sempre vai selecionar a partir da tabela que eu passar em. E isso é que eu vou chamar a função exata. Este é SP sob a sequela School Execute, que vai executar uma sequência dinâmica String, e você verá esta sequela. String é uma sequência dinâmica String. OK, então isso vem daqui, que é declarado sempre que eu preciso declarar variável. Primeiro declarei a variável o tipo de dados. E então, é claro, eu defini essa variável igual ao que eu queria ser. Neste caso, é uma sequência dinâmica, Strand. Ok, deixe-me passar o procedimento armazenado aqui. Então agora eu mudei isso. Desta vez, vai escolher entre os estábulos. Não vou imprimir. Na verdade, ele vai selecionar a partir dele. Ok, então vamos olhar para a lógica aqui em um procedimento de altar. Desculpe, um procedimento de caixa quando há um parâmetro após o procedimento de criação, qualquer que seja o nome dos procedimentos, precisamos declarar a variável no tipo de dados. Se houver outro tipo de dados que eu faria vírgula e digamos que eu disse, Ah, valor de coluna. E eu disse que era Navarra Car 100. Isso seria isso em impostos. Certo? Então ele vai ser o nome da variável, o tipo de dados vírgula, o próximo muito bem chamado o tipo de dados vírgula o próximo e assim por diante. E assim por diante. Há apenas uma necessidade comum que eu vou fazer como e então começar dentro do meu começo final. Vou colocar os dados aqui. Eu sinto muito. O texto da consulta agora, neste caso, é sequência dinâmica. Então eu preciso declarar minha sequência dinâmica Stream, que neste caso é uma sequela. Variável. Esse é o nome da variável. Nomes de variáveis sempre começam com o símbolo at que eu vou definir essa sequência dinâmica para Neste caso, esta é uma variável de string. Eu sou muito variável string e eu estou definindo que igual para selecionar top uma estrela de E então é aqui que a parte dinâmica entra. Seja qual for o nome da tabela que eu passar para este procedimento de loja e então eu realmente vou chamá-lo aqui. Ok, agora há outras coisas que eu posso fazer. Vamos em frente e demonstrar isso neste caso, vamos apenas imprimir sequela. Ele vai executá-lo, mas é tudo o que vai fazer é imprimir a sequela. Vou começar apontar o texto e vamos ver impressão. Usar dinâmica é igual a um nome de tabela muito, muito ruim. Vês? Está bem. Então nós podemos fazer, quero dizer, nós podemos fazer todos os tipos de coisas em dinâmica igual, eu posso inserir em uma tabela dinamicamente. Eu posso selecionar a partir dele. Eu posso apagar dele. Eu posso atualizá-lo. Posso imprimir coisas. Mas sequela dinâmica não é código salvo. Então ele é compilado no tempo de execução da consulta, que é apenas uma maneira chique de dizer que nem sempre será executado da maneira ideal, então tenha cuidado com isso. Isso não significa que sempre será executado mal, mas não vai necessariamente correr da maneira ideal. E, em seguida, a outra coisa é, você deve parametrizar suas consultas. Você não pode permitir que as pessoas entrem no que quiserem. Ok, você tem que ser muito rigoroso se você vai usar sequela dinâmica. Onde eu gosto de Dynamics igual? Não em nenhuma aplicação. Quero usar código rígido. Sim, é preciso um pouco mais de trabalho, mas é seguro. Mas quando se trata de sequela dinâmica, eu gosto de usar para minha própria análise. Então eu tenho algumas consultas que eu faço, e grande parte da minha carreira é que um corredor para analisar conjuntos de dados muito rapidamente, e uma vez que esses dados definem o preço e as informações de data são sempre as mesmas, ou é assim que eu as estruturo. Eu posso usar as mesmas consultas uma e outra vez até que eu use dinâmica igual. Nesse caso, eu tenho um procedimento de armazenamento salvo de estado seguro, isto é, e esse procedimento armazenado salvo. Eu posso usar isso uma e outra e outra vez por apenas passar na nova tabela, nomear a coluna de preço e, em seguida, a coluna de data. E lá vai você. Dito isso, não vou colocar isso na frente para ninguém usar. Isso é só para meu próprio uso. Então essa é uma das razões pelas quais eu posso usar a sequência dinâmica desse caso. Se for um aplicativo, terá que haver um argumento muito forte em 99,9999% do tempo. A resposta é, não vou usar dinâmica igual. Então, examinamos esta visão geral de como usar o procedimento da loja. O fato de que podemos selecionar a partir dele, podemos atualizar, podemos inserir, podemos fazer todo tipo de coisas, são procedimentos armazenados que salvam códigos que não precisamos reescrevê-lo todas as vezes. Quando olhamos para a sequela dinâmica, que nos permite passar em um objeto em mudança e fazer coisas em objetos que possivelmente mudam, juntamente com algumas das preocupações sobre sequela dinâmica Talvez bom pode não ser bom. 8. Parte 8: Tudo bem, vamos olhar para o outro lado. Oito de Basic T Sequel e nós vamos estar olhando para Tim tabelas, tabelas variáveis e expressões comuns de Seti, e nós também vamos estar olhando para algumas consultas, e eu tenho que colocar isso lá em cima, certo? Então vamos começar imediatamente com 10 tabelas, tabelas variáveis e tabelas de tim global. Então tabelas Tim são começar com o símbolo hash. Se você usa o Twitter, você sabe que este é o símbolo hash. Onda Global Tim Table, que vou mostrar em uma segunda demo em um segundo começa, tem que cinzas. Uma tabela de variáveis tem uma sintaxe diferente. Observe que a sintaxe criar tabela da tabela Tim é criar nome da tabela tabela e, em seguida, as colunas nele. A mesma coisa com a tabela global do Tim. No entanto, uma tabela variável não é. É como uma variável. Nós declaramos isso. E então colocamos os nomes das colunas. Declaramos o nome dele, que é temporário. Então declaramos tabela Tim Tim, e então colocamos os nomes de chamadas e os parênteses. Agora você vai notar com estes horários que eu estou inserindo no top cinco daquela mesa. Echo boom, desculpe, análise do empréstimo do Echo Student, e estou inserindo. Tudo isso e eu estou selecionando de todas aquelas mesas. Para que conste, com tabelas Tim podemos excluir deles, podemos atualizar. Podemos inserir, enfraquecer, selecionar enfraquecer, fazer tudo o que normalmente podemos fazer com a maioria das tabelas. As diferenças essas tabelas são armazenadas em Tempe ser assim que eles são tabelas temporárias. O propósito deles é sobre Lee para fins temporários. Então, se você olhar, nós devemos obter cinco registros em cada uma dessas tabelas, todos eles com o gênero aqui de F agora muito chave para notar a diferença. Uma das grandes diferenças entre uma tabela variável e uma tabela Tim é que se eu fosse selecionar estrela desta tabela variável, ele vai dizer, Ei, Ei, você deve declarar a variável de tabela temp, certo? Em outras palavras, o temp, a tabela variável tem que existir no processo transacional. Então, para que eu faça isso de novo, eu tenho que executar toda a transação novamente. Em contrapartida, não tenho de o fazer com esta mesa. As mesas do Tim ainda existem. Eles são criados e eles existem. Até eu deixá-los cair ou até que o escopo desta transação se esgote. O que eu quero dizer com isso? Se me deixasse copiar isto se eu escolhesse Star a partir deste horário, tudo está ótimo. Mas se eu for para uma janela de transação diferente, esta é uma nova transação. E eu escolheria Star da esposa da mesa do Tim. O que vai acontecer? Vamos dizer que não existe. É como se não houvesse nenhum nome de objeto Val que enquanto se eu for para a variável global, tome eu sinto muito. A tabela temporária global Existia todas as transações. O que significa que você deve ter muito cuidado ao usar isso porque cada transação que está acontecendo terá acesso ao que está lá dentro. Certo? Portanto, sempre tenha cuidado com o global. Lembrem-se, este calendário existe. Se eu for aqui, ele existe. Se eu for a este, ele também existe, certo? Ambos os grupos, um, ambos estes pinos ambos existem em ambos estes. Ambos existem neste âmbito, mas neste âmbito nesta transacção Onley existe. Isso é muito importante notar entre as diferenças com um que é Onley nesta transação e o global, que é que existe em todas as transações. Como você deveria ter muito cuidado com isso. Esta transação é o número 52. Este número de transação é 55. Vou passar por cima do pairar lá. Ok, então esta transação tem acesso a tudo. Mas esta tabela variável já está fora do escopo porque tem que ser. Ele só existe durante o tempo de execução. Então, se eu fosse Teoh para selecionar isso novamente, ou eu fosse fazer isso novamente, você notará pequenos erros de lançamento porque essas tabelas já existem. Então deixe-me código estes dois fora e agora são tabela variável irá existir novamente. Claro que desta vez nossas tabelas Tim têm mais registros porque nós inserimos ainda mais registros nelas. Certo? Mas a tabela variável Onley existe nesse escopo. Então só tem esses cinco. OK, então vamos em frente e vamos fazer uma demonstração de uma tabela variável apenas por si só para deixar isso muito claro, porque isso tende a tropeçar em muitos desenvolvedores e tabelas tim. Você pode criar índices. Você poderia fazer muitas das mesmas coisas que você faz com, hum com mesas normais. A chave é que, no entanto, é temporária, então se eu correr a partir do mestre, se eu executar esta transação, ele irá inserir os dados. Se eu rodar de novo, ele irá inserir os dados. Mas se eu apenas destacar isso, eu estou apenas correndo. O que estou destacando não existe. A mesma coisa se eu só destacar esses dois, ele não existe. Agora há uma nota sobre tabelas Tim também. Nós também pode criar uma tabela fita Tim, fazendo uma estrela seleto em. Mas lembre-se, só podemos fazer isso uma vez. Uma vez criado, não podemos criá-lo novamente desta forma. Então eu poderia tecnicamente dizer selecionar top cinco em tabela temporária. Eu tenho um novo calendário agora, e ele vai criar essa tabela. E agora se eu selecionar estrela a partir deste, eu vou começar a partir deste calendário e nós temos isso. Ok, eu não posso fazer isso com tabelas variáveis, no entanto. Se eu fizesse balas temporárias para matar o Tim, não me permitiria fazer isso, está bem? E isso é porque uma tabela variável deve ser declarada ok para que possamos selecionar estrela em uma tabela. Mas se eu fizer isso de novo, esta tabela agora existirá. Ele vai lançar um erro porque já existe um objeto chamado esse direito, então eu tenho que voltar a fazer uma instrução insert. Tudo bem, então vamos para subconsultas e tomografia computadorizada, e eu vou manter isso bem básico. Você pode realmente olhar em detalhes sobre Seti ou eles são muito úteis. Eu gosto deles porque eles são códigos limpos. Eles são muito fáceis de organizar, e são muito fáceis de solucionar a maior parte do seu tempo. E T Sequel vai estar sentado na resolução de problemas de consultas. Essa é apenas a realidade do modo como funciona. Como um CT funciona é a declaração de impostos pecado com CTE como ou outra alternativa impostos pecado com C T E. Como você vai especificar as colunas. E então, neste caso, seria gênero. E então, dentro deste suporte, você terá sua idéia, seus itens. Ok, eu especifico meus colchetes dentro do CD. Essa é a minha preferência. Você pode fazer o que quiser. Hum, isso não importa. Não vai afetar a análise. Então eu vou executar isso, e então eu vou selecionar a partir do C. T. Então o T. que eu colocar aqui dentro limita o que é devolvido mais tarde, certo? Então, uma das perguntas que as pessoas fazem é bem, qual é o propósito do CTO, ou por que eu faria um C T sobre tentativa de mesa e depende de quem você pergunta, Mas uma das coisas que eu gosto prestes a ver chá, como oposição a tentar capaz, é que eu não tenho que fazer a inserção em passo, que você pensa sobre isso é escrever dados e ler dados, certo? Se eu inserir na tabela Select Star de outra tabela, Eu tive que ler e escrever com um CT. Eu não tenho que fazer isso direito. Estou fazendo uma consulta. Eu estou colocando-o entre parênteses e, em seguida, eu estou selecionando o que eu quero para que eu possa limitar minha consulta aqui ou minhas consultas. Pode estar se juntando a um sindicato. E então eu estou selecionando isso aqui para que eu não tenho que ir para este passo de criar uma tabela temporária . Então, quando eu sei que eu preciso criar uma tabela Tim, eu sempre olho para os casos de uso, análise de caso de uso e, em seguida, me pergunto se um C T é uma idéia melhor. E geralmente uma tomografia será agora. Às vezes, uma tomografia computadorizada é mais lenta do que uma sub-consulta. Então, o que é uma consulta sub e eu olho para estes. Em outras palavras, eu vou comparar estes quando eu estou e eu esperando que alguma consulta é quase idêntica. É muito semelhante, um pouco diferente, mas é muito semelhante. Você vai notar que eu tenho a minha típica estrela seletiva de ok. Mas em vez de especificar uma tabela dentro desses parênteses aqui, estou especificando uma consulta, certo? Então eu estou fazendo meu seleto gênero cinco da análise de empréstimo estudantil Echo que continua querendo dizer eco boomers. A partir desta consulta aqui eu estou selecionando isso para que se torne minha tabela. E depois vou rotular isto como submarino. E então é por isso que sub-ponto estrelar a sub-consulta. Então, quando eu executar isso, é claro, eu tenho o mesmo conjunto de resultados. Mas a idéia é que minha sub consulta onde eu estou selecionando é que alguma consulta, certo? Isso pode ser muito, muito útil. Isso pode ser muito útil na seleção de uma consulta que tenha junções. Esta pode ser uma análise muito útil. Depende. A coisa que eu não gosto sobre algumas consultas tanto é dependendo de como eles são estruturados. Se você estiver indo para fazer onde não existe, o que muitas pessoas fazem com sub consulta, e então eles vão se juntar na tabela, como em uma coluna. Você não pode olhar para fora a consulta entre a subconsulta. Ok? E o que eu quero dizer com isso? Se eu vou juntar a partir de um valor de uma tabela que existe para uma tabela que está na minha sub consulta quando eu estou solucionando problemas, eu não posso depurar isso na sub consulta onde como eu posso com a expressão de tabela comum. Ok, Então essa é uma razão pela qual eu prefiro um pouco expressões comuns de tabela mesmo lá, mesmo que elas sejam um pouco mais lentas. E a principal razão é porque a expressão de tabela comum permite depuração simplificada , onde submarinos tornam isso um pouco mais complicado. Em vídeos futuros, vamos olhar para fazer algumas junções com algumas consultas e CTS. Mas por enquanto, saiba que quando estiver fazendo um baseado em uma mesa normal, o submarino vai limitá-lo um pouco. E o que você é capaz de fazer, especialmente em como em um não existiam, etc. Então isso encerra nosso segmento aqui de tabelas Tim, que cobrem ambas as tabelas locais Tim e tabelas temporárias globais, tabelas variáveis CT e, claro, algumas consultas. 9. Desafio de bônus - Prática de codificação ao vivo 1: Neste vídeo, vamos fazer um desafio de codificação. E vamos fazer um desafio de codificação com um padrão técnico. Para aqueles de vocês que já ouviram falar de análise técnica, um dos meus realmente bons amigos está em análise técnica e agora ele e eu recentemente e estamos falando de um padrão que eu pensei que seria interessante porque era um padrão muito desafiador para SQL. Mas é um ótimo exemplo de um em que podemos fazer onde se você é um iniciante, este é um desafio muito bom para ir junto comigo e codificar como eu código e então você pode fazer ajustes à medida que você avança. E então, se você for avançado, você pode ver como eu codifiquei para terminar. Se você é avançado, veja uma maneira pela qual você quer fazê-lo ainda melhor. Então, primeiro de tudo, vamos realmente olhar para um gráfico bem aqui. E este gráfico mostra o padrão que vamos criar. E eu vou tipo de atraí-lo para fora e muito super bom em desenhar aqui. Mas eu vou ir em frente e tirar o que temos. Então, o padrão que estamos olhando, vamos ver se eu vou aqui é o que é referido como a parte do copo da empresa tratada, vamos colocá-lo dessa forma. E assim, neste caso, o copo em teoria vai ser este aqui mesmo. É assim que deve vir aqui em cima. A maçaneta estaria aqui. E tenha em mente que esta é a teoria dos meus amigos. Não há como saber, porque se você olhar para isso sendo uma empresa, se você está familiarizado com a análise técnica, uma pessoa poderia dizer, hey, este era um negócio bem aqui, mas não era. E assim o meu ponto é, que ele fica tipo de, pode ser uma espécie de viés retrospectivo, mas essencialmente acompanhar o controle do que vamos estar fazendo na codificação é que vamos fazer algo assim. Vamos procurar aquele copo. Agora, se quiséssemos ir mais longe, estaríamos fazendo uma alça. O cabo pode ser algo assim também. Aqui deixe-me fazer isso em vez disso. O cabo pode ser algo assim. E também tenha em mente que, mesmo que haja um intervalo de tempo aqui e vamos olhar para isso enquanto começamos a codificar. O intervalo de tempo pode ser muito diferente. Então vamos em frente e vamos abrir algum código. E vamos dar uma olhada nisso. E então eu vou mudar para o banco de dados fictício aqui. E eu salvei o arquivo GLD. Agora GLD é um ETF, seja, digamos que representa ouro, mas não é o preço exato. Então o preço vai ser um pouco diferente da imagem que acabamos de ver. Então, a primeira coisa que eu quero fazer é realmente importar esses dados GLD. E então o que eu fiz foi ir para o Yahoo Finance e eu fiquei morto GLD ETF. Então eu tenho minha janela de codificação na minha frente. Então a primeira coisa que quero fazer aqui é criar uma mesa, e vou chamá-la de ouro de mesa. E então eu vou fazer f, date porque o primeiro campo é no valor de data e hora. E depois há f aberto. E eu não vou usar esses dados de campos, mas eu vou ir em frente e salvar. Vou em frente e varchar. Então, se for um varchar, mas eu não vou usar o campo. Eu vou fazer “oi”. E isso vai ser um varchar, f baixo. Isso vai ser um varchar. F perto. Isso também vai ser um varchar. E depois vou ajustar as roupas que vou manter. E então isso vai ser 228. E então eu vou fazer f volume. E isso vai ser um varchar. E na verdade eu vou fazer uma diferença aqui, encontro GLB. Então, basicamente, os campos que eu vou manter vão estar tão perto aqui e esta data bem aqui. E eu vou mantê-lo muito simples e simples novamente para que os iniciantes possam entender isso. Toda a lógica vai ser escrito em sql. Existem outras línguas que você poderia escrever isso, mas isso é SQL novamente, isso é principalmente para iniciantes para tomar, para obter. E então, claro, lei inadimplente, devo dizer. E para pessoas avançadas olharem de uma perspectiva de como eu poderia fazer isso ainda melhor? Ok, então há mar e é eu acredito ETL e neste computador em GLD dot csv. Ok, é aí que eu mantenho isso fora. Ok, então com, e então nós vamos fazer a inserção de livro padrão aqui. E vai ser terminador de campo. E isso está vindo, assim como esses campos aqui. Isso vem da primeira linha do arquivo. Então, quando você baixar o arquivo GLD como um CSV com todos os dados. A propósito, você quer ter certeza de que são todos os dados. É a isso que estamos nos referindo. Então o terminador de campo, como sabemos, é uma vírgula. E então o terminador de linha é uma nova linha, então isso é 0 x 0 a. E então vamos salvar que a primeira linha, que é a verdade. Aqui, vai ser para fazer é vamos pular, vamos estar pulando a linha de cabeçalho. Então a primeira coisa que queremos fazer é criar nossa mesa. E a próxima coisa que queremos fazer é inserir nossos dados em massa. E nós fizemos isso. E a próxima coisa que queremos fazer é apagar da TV G dourado. Desta forma, todos nós podemos estar no mesmo período de tempo. Então, todos vocês que estão acompanhando onde a data do GLD é maior que. E vamos fazer 2020. Vamos fazer o August. Vamos fazer 31. Oops. Então, queremos remover isso da mesa. Então nos livramos disso. Ok? E então o que vamos fazer é selecionar a data do GLD. E vamos cortar o ajuste de perto. Vamos selecioná-los para avaliação. E vamos fazer a partir de ouro TB G. Ok. Tudo bem, então já fizemos isso. Esta é a estrela Select para isso cria outra tabela. Então agora temos esta mesa bem aqui. E então o que podemos fazer apenas para verificar isso, e você deve ver isso também. Quando formos para a data GLD, você deve ver isso em sua falta de avaliação e podemos ver a data mínima. Ok. Vamos olhar para isso. E então a outra coisa que vamos olhar é vamos olhar para o máximo. Eu só fechei. Queremos ver o preço do Mac. E vemos que é um 193. Como eu disse, o GLD como ETF é um pouco diferente dos outros. Agora, o que eu vou fazer aqui, então eu posso apenas executá-lo facilmente é eu vou codificar um comentário isso fora. E isso é o que eu fiz muito rápido como comentar isso. E assim posso executar o código como um louco. Ok? Voltando para esta imagem aqui, ok, então o que vamos fazer é este COP, ok? Então vamos pensar sobre isso de uma perspectiva lógica, ok? Quanto ao que estamos fazendo aqui, estamos essencialmente procurando por um intervalo de tempo aqui, um período de tempo. E entre este intervalo de tempo como um ponto de partida que está aqui. E há um Indian Point que está dentro de um alcance daqui, certo? Então, tecnicamente isso, parece que estou desenhando uma carinha sorridente. Posso ver como os alunos pensam isso. Mas tecnicamente este, este período, temos este período alto. Se você tivesse esse preço alto, há um período de tempo e então há outro preço alto. E tenha em mente, isso pode acontecer por um longo período de tempo ou um curto período de tempo, certo? Vemos neste foi como 2011, mas também 2012. Há um período alto aqui, certo? E então vemos mais tarde, há um período alto aqui, certo? E depois há esta parte do copo aqui. E de novo, sim, parece uma cara sorridente agora que estou desenhando isso do jeito que estou desenhando isso. Ok? Então, e eu vou voltar. Ok. Então essencialmente uma das coisas e a razão pela qual eu estou destacando isso, o que nós não queremos fazer neste caso, e eu não sei quão específicas as regras de TA ou você teria que perguntar a ele no especialista em TA. Mas o que não queremos procurar é algo que é super fino, certo? Então, se há um período de tempo em que ele atinge um alto e então há um canal e, em seguida, há outro período de tempo. Isto é mais como uma bifurcação, certo? Em outras palavras, vamos supor que, se qualquer que seja o período que começa aqui, bem aqui, digamos que o período entre aqui é mais longo, pelo menos três vezes maior que o período aqui. Então o que quero dizer com isso é, digamos, dizemos que é um fraco que é preciso para chegar a esta altura. E é uma semana que leva para chegar a esta altura. Vamos assumir que isto aqui é 21 dias, certo? Então vamos supor que o período de tempo que leva para chegar aqui que diz se é um sete dias, o preço médio dos Sete Dias e o preço médio desses sete dias. Isto aqui vai ser 21 dias entre estes, está bem? Isso não é necessariamente regras difíceis e rápidas de TA A propósito, você teria que perguntar a um especialista, mas eu não tenho 100% de certeza se isso seria definido como um copo. Ou em termos de parte de uma empresa ou se é como se tivesse que haver um período de tempo. Ok, então a razão pela qual eu realço isso é porque nós estamos olhando para o ouro aqui e nós sabemos que o ouro é, é claro , é muito bem, ele está muito esticado até quanto tempo isso vai? Vai de 2011 a 2020. Problema porque você tem este ano nós atingimos um alto a partir do momento deste vídeo. Então o que isso significa é vamos olhar, vamos definitivamente querer declarar algumas variáveis. E uma dessas variáveis será máxima. E isso vai representar o preço do Mac. E usamos o decimal 228. Então, primeiro queremos saber qual é o máximo, porque vamos usar isso como esta área aqui em cima. Então é isso que estamos fazendo quando falamos sobre o Mac, estamos olhando para isso ou vai ser isso aqui, certo? Então isso pode, na verdade, neste caso, o máximo vai ser este porque nós sabemos que olhando para este gráfico, este é o lugar onde nós vamos estar definindo. Ok, então é isso que estamos realmente procurando, no início. O outro é, bem, é que mesmo que descrevamos como um copo, mais do que provavelmente vai estar dentro de um alcance. Então eu vou ter outro chamado o percentual. E esse percentual vai ser decimal e vai ser 32. Ok? E eu vou seguir em frente e definir algumas dessas variáveis enquanto eu estou fazendo isso. Então vamos fazer selecionar MAX. E isso é igual ao máximo por apenas perto da avaliação. E você fez um lobo. Eu digo-te enquanto faço isto num segundo. Então isso vai ser, digamos, a parte superior do copo. E vamos procurar agora um alcance. E eu vou definir o intervalo definido percentual igual a 10%. Sim. Então o que isso significa, novamente é que eu quero, onde quer que este oi esteja, eu estou procurando por outro alto que está dentro de 15% disso. Poderíamos defini-lo mais rigoroso, e na verdade, vamos brincar com ele sendo mais rigoroso. Mas vamos começar em 15%. Acho que podemos fazer 20%, mas vamos começar por isso, começar em 15%, e então vamos brincar com números à medida que o desenvolvemos. Neste caso, eu estou olhando para este gráfico aqui e eu cabi atingiu 2 mil, e este foi 1810% do que é? 2 mil é 200. Para que possamos ser capazes de esticar até 10%. Ok. Tudo bem. Então. Oh, ok. Sim. Será que eles sentam que sim. No máximo na firma. Isso é bom. Ok. Então o que queremos fazer é fazer o que é? Este seria um período de tempo. Então o período de tempo e pequeno e com certeza porque nós não precisamos quero dizer, nós não precisamos de um grande int para período de tempo é o período de tempo que nós vamos obter a média. Então, neste caso, é o período de tempo que chega a este ponto ou a este ponto, certo? Então, por exemplo, novamente, usando o gráfico em ouro. E então este seria um período de tempo bem aqui. E este seria um período de tempo porque realmente é, você poderia dizer um top duplo lá e então este seria um período de tempo, certo? E assim, neste caso, vamos dizer que o período de tempo vai ser definido, período de tempo igual a 90. Agora vamos, vamos fazer 60 mm. É um pouco difícil. Quero dizer, poderia ser, nós poderíamos até fazer é resistente, mas isso realmente parece que levou um pouco mais. Isto pode ter demorado um pouco mais porque estes são anos e eu tenho que me lembrar disso. Mas vamos usar 60. Vamos, podemos sempre novamente, fazer mais tempo, quanto mais tempo leva para alcançar o, quanto mais isso seria, o menor tempo que leva para chegar como um atalho e manipulado. By the way, você vai ver estes às vezes que acontecem durante um período de duas semanas, então nós usaríamos um período de tempo como um, embora nós não precisaríamos como provavelmente os valores em durante o dia. Ok? Então vamos ter que fazer um loop para este exemplo. Então vamos em frente e vamos ter que fazer loop. Então, queremos fazer um loop start. E isso é uma coisa. Começo diluído vai ser que tem que ser um encontro porque estamos iterando ao longo de períodos de tempo. Então vamos chamar este datetime e o início do loop vai ser a data de hoje. Agora sabemos que nos livramos dos valores para hoje, mas vamos continuar iterando sobre os valores até voltarmos para trás, porque é isso que essencialmente vamos fazer e pensar em voz alta enquanto eu estiver fazendo isso. Mas, essencialmente, vamos andar para trás. Então esse é o loop start vai ser apenas o início de um loop e então ele vai voltar para trás. Ok? Então isso significa que se nós temos um loop start, então nós temos um loop end. E esse vai ser o original, o valor mais antigo da tabela. Então esse é o nosso valor mínimo, isso é o que é. Certo, então termine o loop. Mais uma vez pensando enquanto eu estou fazendo isso, então o fim do loop vai ser o mínimo. E esta vai ser a data do GLD da avaliação. E eu só vou subir aqui, ter certeza que você assiste o encontro GLD. Na verdade, o que eu quero fazer é rolar isso para baixo. Isso faz com que seja mais fácil para todos verem. Ok, então nós temos um loop start que vai ser o início do loop e, em seguida, o loop end. Ok? E depois vamos ter, está bem. Então nós temos esse período de tempo, que vai ser 60, mas nós precisamos obter o preço para esse período de tempo. Então o que precisamos é da média atual. E essa é a média atual para o período de tempo. E neste caso, a média atual será decimal 228. Ok? E então, é claro, vamos ter que fazer isso. Queremos pular. Sim, não acho que precisemos de outro. Acho que podemos fazer isso. Estou pensando em voz alta aqui, mas eu acho isso, então aqui está o problema. Se iniciarmos imediatamente o loop, ele está indo para trás. Então vamos dizer que ele recebe o preço médio. Então vamos seguir o que nosso algoritmo faria. Como vamos fazer isso? Vamos conseguir o preço do Mac nesta área por mais de 60 dias. Ele vai pegar o preço máximo, então ele vai começar a ir para trás. Mas não queremos porque pense em onde eu já estou. Já estou em 2009. Você já passou um ano porque esta imagem está tão esticada. Não quero procurar o próximo Max Price por pelo menos um ano. Então o que isso significa, uma maneira que poderíamos fazer isso é que poderíamos ter uma conta que pularia uma certa quantidade de períodos. Mas outra maneira, agora que eu penso sobre isso é que eu poderia selecionar apenas definir o loop, começar igual a data anúncio, que vai adicionar dias, dia, dia, que vai adicionar dias. Heck, alguém faria uma subtração. É assim que subtraio dias, por sinal, 365 e consigo data. Então, na verdade, eu vou só por causa da ordem do que eu vou fazer é eu vou fazer isso e há aquilo. E então o que eu posso fazer agora é que eu posso apenas fazer isso. Então início loop é um é mais de um ano. Então vamos obter o valor máximo. Ou seja, vamos obter esse valor máximo para primeiros 60 dias e então vamos pular um período de tempo. Ok. Só estou pensando nisso. É tudo o que preciso? Porque se eu for a esta imagem, basicamente vamos começar aqui. Nós vamos estar indo para trás e nós vamos estar recebendo essas médias ao longo do período de tempo. Então, apenas como um caso em questão, nós obteríamos a média a partir daqui. Desta vez obtemos a média e este período de tempo, esta média , esta média, esta média, esta média. E então o que vamos fazer é olhar se essa média está dentro de uma faixa percentual do preço máximo que temos. Então vamos em frente e vamos começar a trabalhar nossa lógica com um loop while. E isso é, isso vai ser bonito, aqui é onde fica um pouco intenso, ok, no início. E então eu provavelmente vou fazer um pouco do loop inicialmente apenas para mostrar o que está acontecendo. Então o que estamos fazendo é ir para trás. Então o que estamos olhando é que estamos olhando quando o loop onde estamos atualmente, estamos procurando por isso é uma boa pergunta. Basicamente, estamos procurando enquanto ainda são encontros para repetir. Em outras palavras, enquanto ainda há datas para retroceder, nós vamos continuar indo. Então, essencialmente, o que estamos dizendo é enquanto Date Ad dia, dia menos 60. E isso é loop start. Então, enquanto Data de anúncio é maior do que Loop End por este é o desafio de codificação ao vivo. Comece, fim. Ok? Então, tudo bem. Então, se fôssemos executar isso, isso é divertido, mas queremos fazer é que queremos selecionar enquanto Date Ad. Vamos em frente e selecione esse valor. E o que queremos fazer, tem que haver uma operação. Vamos definir o início do ciclo, precisamos. É por isso, porque está usando esse loop start. Precisamos definir esse loop começar igual ao anúncio de data, e então nosso dia, dia menos 60. E então ele vai ser loop começar a referir-se a si mesmo. E me ocorreu que nós realmente temos o período de tempo aqui. Então o que eu vou fazer aqui, eu posso substituir isso e eu posso substituir isso. E posso substituir isto. Então e sim, se você colocar um período de tempo negativo, ele fará o período de tempo negativo. Então, quem é o vínculo, há isto e depois a data do cheque. Então vamos verificar essa data. Então, o que deve acontecer aqui? Deixe-me puxar isso para cima, é o que deve acontecer é ele vai iterar sobre isso. E enquanto ainda há, enquanto este loop começar essencialmente é maior do que o loop end, ele vai continuar indo uma e outra e outra vez. Mas, eventualmente, não é. É o que esta operação vai fazer. Eventualmente loops começar vai ser mais cedo do que Luke fim e ele vai sair do loop. Então, vamos fazer seleções. Oh, sim, eu posso fazer é como me disseram que eu poderia fazer impressão também. Mas vamos em frente e vamos selecionar. Então, se fizermos isso, ele deve ir para trás devagar, mas seguramente. E assim vemos 20191086422018108, e continua e há alguns valores, mas isso é exatamente o que queremos que ele faça. Então, para aqueles de vocês que estão perguntando, ok, então o que vamos fazer com isso? O que vamos estar recebendo a média do preço neste período de tempo. Agora é interessante, eu só bati em mim como eu estou olhando para este espera em 1 segundo. Que isso realmente começa aqui por causa do 365. Ok? Está bem, mas já estamos a declarar que o Max está aqui, por isso devemos ficar bem. Estou a pensar que estamos a declarar que o Max está a par, mas não é o caso. Estamos declarando Max aqui. Então devemos ficar bem, porque eu ia dizer que está pulando no preço máximo de 2020, mas isso já está declarado fora disso. Então isso faz sentido porque estamos olhando para o preço atual e é sobre isso que estaríamos fazendo uma avaliação. Ok? E este é sempre o desafio da codificação ao vivo, mas é muito útil para os alunos verem porque, de novo, é uma boa prática. Ok, então nós queremos manter nós definitivamente queremos manter o nosso set aqui. Isso é certo. Na verdade, não precisamos manter essa seleção e verificamos nossa data. Agora o que queremos fazer é começar a codificar a lógica do que vamos fazer. Então o que queremos fazer a seguir é selecionar, lembre-se que uma das chaves é que queremos obter essa média atual, certo? Queremos obter a média atual sobre a iteração leste de um loop. Portanto, queremos dizer que a média atual será igual à média e que foi ajustada de perto, se bem me lembro aí mesmo a partir da avaliação. Da avaliação. E nós queremos definir que onde o GLD data. E temos que lembrar sempre disso. Esqueça essa parte quando se trata de qualquer lógica aqui, mas eu sempre tenho que começar do início ao fim. Então, onde é entre entre e seu anúncio de data. E vai ser dia, data menos período de tempo. E vai ser loop start e loop start. E eu já me vi na lógica antes, fazer loop start e, em seguida, aqui colocar o fim e, em seguida, outra coisa. E nunca vai encontrar nada porque está ao contrário. Então eu cometi esse erro com data, às vezes com o operador entre. Então, o mais antigo para o mais recente, é assim que tem que ser. Não pode ser mais cedo, isso é ao contrário. Não vai aparecer com nada. Ok? E tudo bem, então temos a média atual. E então, na verdade, se eu fiz isso e eu selecionei a média, Na verdade, eu acho que vamos em frente e fazer isso. Vamos ver o que acontece. Média atual. E vamos ocorrer um VG. Ok? Vamos fazer uma verificação. E há a média atual. Ele vai e obtém a média atual. E a propósito, novamente, se você for mais avançado, é aqui que você pode descobrir otimizações. Este é um ótimo vídeo para iniciantes, e este é um ótimo vídeo para alunos avançados descobrirem como melhorar. Ok? Então nós realmente ir obter a nossa média atual. Isso é exatamente o que queríamos. Ele vai fazer loop e vai obter a média atual de todos esses períodos de tempo. Ok, mas lembre-se que queremos que ele volte, voltando para a nossa imagem, queremos que ele devolva este alcance aqui. E é aqui que vamos conseguir essa porcentagem, certo? Então, essencialmente, o percentual que estamos olhando é quando está dentro de 15% do preço do Mac. Então o que vamos dizer aqui, agora vamos escrever uma declaração If. Vou rolar para baixo. Acho que não preciso de uma mesa. Sim. Ok. Então, se dissermos se dissermos a corrente, eu coloco isso entre parênteses antes do tempo, se a média atual estiver entre, eu colocarei isso entre parênteses e, e isso entre parênteses. Se estiver entre o preço máximo do Mac. E eu vou colocar isso, vai ser um menos o percentual. Por cento aí está. Então, um menos o percentual, certo? Então por que é um menos o percentual? Porque vai custar 85% do preço, certo? E o máximo de vezes. E isso vai ser diferente, um mais o percentual, certo? Então é entre esse valor, ou será entre basicamente 85% do preço do Mac e 115%. É o que estamos fazendo aqui. Estamos conseguindo essa faixa percentual. Pode ser um pouco menos, um pouco maior. E como eu disse, podemos apertar. Então, se a média atual estiver entre lá, então vamos começar e terminar. E nós vamos, vamos ver, estamos iterando sobre. Vamos pensar sobre isso nós poderíamos, nós poderíamos fazer é nós, vamos selecionar a partir da tabela. E vamos fazer o mínimo, min. E vamos fazer a data do GLD. E vamos fazer a data máxima do GLD. E então vamos fazer o preço da AVG. E então vamos fazer a partir da avaliação. Isso mesmo, porque isso existe. E vamos pegar emprestado aqui mesmo. Opa, sinto muito. É isto aqui mesmo. Porque este é o período de tempo em que estamos atualmente. Então isso vai nos dizer quando a média atual, como está iterando sobre tudo, está entre esse intervalo. E eu estou pensando no preço. Agora, isso é o que é, mas na verdade está ajustado de perto. Então, ok, então se fizermos isso, vamos ver o que acontece. Ok, vamos rolar para cima e vamos olhar para os nossos valores. Então temos 2012201220112011. Então vamos realmente voltar para a imagem e o que veríamos. E sim, vamos em frente e usar esta cor aqui. É aqui que a nossa alta está tecnicamente. Então é porque estamos usando 15%, ele vai encontrar algo aqui, que é 20112012. Isso seria correto. Vamos olhar para ele. Esse valor é 168166165171. Certo, vamos voltar aqui. Isso é, isso. Isso está correto. Agora lembre-se que usamos 15% e eu sei, como eu disse, que podemos experimentar com outros. Vamos usar 12%. Vamos ser um pouco mais rigorosos aqui. E temos 2011 e temos 171. Era um filtro mais forte. Certo, então sabemos que o preço R máximo era 193. Tecnicamente 19.3 e isso é ouro, isso não é GLD, mas 193 seria provavelmente meu palpite é que vai estar acima desta área de qualquer maneira. Então, você sabe, se eu estivesse fazendo apenas um copo cheio, eu provavelmente começaria como 185, mas sim, isso está realmente correto. Então vamos, novamente, vamos voltar e olhar para a nossa lógica aqui. E só para mostrar, mas o que fizemos. E, novamente, existem muitas outras maneiras de resolver esse problema. Então não me entenda mal. Esta não é a única maneira de resolver este problema. Esta é apenas uma boa prática, eu acho que para iniciantes ver. Mas o que fizemos é que passamos em um valor máximo ou o valor basicamente que queremos comparar dois fatores seria melhor chamado comparar dois. Vamos com o Max por enquanto. Neste caso, nós conseguimos como o máximo para fora daquela mesa. Tínhamos um percentual que não é um percentual dentro do máximo que usamos aqui, certo? É a porcentagem acima dela, na porcentagem abaixo dela, e é isso que estamos fazendo. A porcentagem abaixo. O percentual acima, certo. Ok. Então temos o período de tempo. Neste caso, são 16 dias. Estamos à procura de uma média durante esse período de tempo. Tenha em mente, se estivéssemos olhando para uma empresa tratada com mais de três meses, isso seria muito, muito menor. Isso provavelmente seria apenas cinco dias ou talvez até três dias, certo? Então isso realmente depende do tempo que estamos procurando. Então temos o nosso ciclo de partida. E, e este é outro ponto onde nossos loops começam não estaria longe de tudo. Como, por exemplo, se você está procurando uma empresa lidar com mais ou um copo, sinto muito, mais de 30 dias. Eu teria a data de início do loop na data do dia menos provavelmente no máximo três ou 55 seria empurrá-lo. Definitivamente três em 30 dias. Sim, não quero pular muitos dias, certo? E então nós tivemos esse loop final e isso é apenas uma data mínima de qualquer conjunto de dados que nós temos. E então passamos e obtemos a média atual de cada um desses grupos de dados. E então verificamos a média atual se estiver entre esse intervalo, e então a devolvemos se estiver. E, em seguida, é claro, nós iterar sobre o nosso período de tempo de início loop. Agora, a grande coisa é que isso não é SQL, que é claro definitivamente uma das coisas neste curso. Mas tenha em mente que existem outros idiomas que provavelmente já tinham isso adicionado automaticamente. Então isso faz um ótimo exercício de codificação, que é o propósito disso. Mas se você tem outro idioma que você prefere, que você faria isso em, você não teria que fazê-lo em SQL. Mas se você é um grande jantar em geral e você está começando SQL e você nunca trabalhou com SQL em tudo. Este é um grande desafio para você acompanhar e , em seguida, otimizá-lo como quiser e torná-lo seu, talvez fazê-lo em um período de tempo mais curto. Se você é um especialista, olhe para isso e pense em como você iria otimizá-lo com qualquer uma das ferramentas, não apenas SQL, mas com qualquer ferramenta também. Mas isso faz uma ótima prática e eu acho que é um ótimo exemplo de algo que, você sabe, algumas pessoas, por sinal, para x e eles acham que as empresas são legítimas. Algumas pessoas pensam que não são reais. Eu acho isso engraçado, mas meus amigos, alguns deles, eu deveria dizer que eles realmente gostam muito, mas eu acho que é um exercício divertido. E para que conste, eu sugiro vivamente qualquer um de vocês que queiram melhorar, digamos revestimento sql, brincar com todos os tipos de padrões técnicos como o Head and Shoulders, padrão inverso, etc, certo? Como estes são exercícios de codificação muito divertidos e ele definitivamente vai ficar melhor em escrever SQL. 10. Desafio de bônus - Prática de codificação ao vivo 2: Neste vídeo, vamos estar olhando para a segurança quando se trata de entrada de injeção e sanitização SQL, isso se aplica a todo o contexto de banco de dados e todos os bancos de dados SQL. Quando realmente queremos estar pensando sobre isso a qualquer momento permitimos a entrada de usuários. Então o que vamos fazer aqui, este vai ser um vídeo completo em codificação. Vamos olhar para alguns exemplos. E o primeiro é um exemplo inventado e o segundo vai ser codificação ao vivo. Então vai ser alguma prática de codificação ao vivo. Vou anexar o script, a segunda codificação ao vivo porque acho que será muito útil para todos vocês brincarem e verem. Então isso se aplica ao desenvolvimento do seu banco de dados. Há se aplica para extrair, transformar e carregar. Isso se aplica a qualquer coisa em que a segurança esteja envolvida. E eu vi SQL dinâmico ser usado de forma eficaz, mas se não for bem escrito, ele poderia potencialmente comprometer os hackers e assim poderia permitir a injeção de SQL. Então vamos começar olhando para SQL não higienizado e impuro. E vamos usar um exemplo inventado. E digamos que o que estamos fazendo aqui, e eu vou explicar isso por que é ruim por várias razões é que temos uma variável chamada qualquer coisa vai. Veremos que este é um varchar de 1000. É muito tempo neste caso. E o que vale tudo é suposto ser apenas para selecionar a estrela da nossa mesa, certo? Isso é o que deveria ser. Na verdade, vamos em frente e eu não percebi isso quando fiz isso, mas vamos fazer qualquer coisa, digamos que era um valor legítimo. Então o que deve ser é só a nossa mesa, certo? Vou codificar isso. Então, o que devemos obter quando executamos isso é nós devemos basicamente selecionar estrela da nossa tabela, e esta é a saída enterrada como vemos, eu estou selecionando essa saída enterrada, isso é o que é passado e isso é o que sai, que é ID na tabela está em branco. Não há nada nele. Certo, vamos supor que um hacker usasse isso porque não estamos limpando essa entrada como vemos, estamos permitindo qualquer coisa. E também estamos vendo que há um varchar de 100, certo? Isso não é bom, certo? Então vamos supor que eles estavam para executar isso. E o que veremos é muito, muito preocupante, certo? Nós vemos isso, que ele realmente corre esta estrela seletiva da nossa mesa, certo? Mas, em seguida, ele quebra bem aqui e ele executa esta instrução select. Assim, o hacker é capaz de obter informações de nossas tabelas do SIS, onde é como Admin. Este aqui é um exemplo no backend de como a injeção SQL se parece. Em outras palavras, eles foram capazes de injetar mais SQL e mais informações para extrair detalhes. No entanto, o exemplo mais comum é o que acontece se eles executarem uma instrução de tabela suspensa? E há outra vez alguma verdade nisso. Mas muitas vezes hackers querem fazer reconhecimento, e assim eles estão procurando por mais informações. Ok, então vamos olhar para este mesmo exemplo e vamos olhar para higienizá-lo, e vamos ver por que isso é melhor higienização. Então, na verdade, vou começar usando o ferimento grave. Então vamos voltar aqui. Estou usando as mesmas entradas, mas quero dizer que ele é um mau engenheiro, então usaremos a boa entrada. Ok? Então nós temos, neste caso, o que temos em vez de qualquer coisa vai como uma variável. Temos uma variável de tabela. Você vai notar uma das coisas é notar como a variável tabela é 25. Agora estamos limitando isso. Então, novamente, se este, se qualquer um destes procedimento armazenado linha. Isso permitiria qualquer coisa. Isto aqui só permitiria 25, certo? Ou se isso é SQL diretamente no código, observe como isso é mais restritivo e isso permite qualquer coisa. Então vemos o hacker novamente passa em seu valor malicioso. Vamos ver o que acontece quando executamos isso e que diabos para valor acaba por ser que é, é tabela, nosso nome de seleção de tabela que iria, que iria, que iria, que iria falhar mesmo aqui em cima. E, na verdade, nós poderíamos, vamos em frente e fazer isso. Na verdade, vamos, eu não deveria viver um código assim. Vá em frente e faça isso. E apenas como um experimento, mas nós vamos, tudo corre bem. Então vamos fazer o mesmo e veremos falhas, certo, porque isso não é uma consulta legítima, certo? Como se já falhasse. Certo, vou desfazer isso. Ok? E vamos descer até aqui. Então vamos ver quando executarmos isso, isso já falha, que não é tempo suficiente. Mas mesmo que fosse legítimo e veremos um exemplo de ser legítimo em um segundo. Se fôssemos executar esta coisa toda, vai falhar. E a razão é porque não estamos selecionando dinamicamente da tabela que essa pessoa está entrando. O que estamos a fazer é declarar uma tabela seleccionada aqui em baixo. E nós vamos, e estamos recebendo, estamos definindo essa tabela de seleção igual ao esquema de tabela. É por isso que, a propósito, este é mais longo ponto o nome da tabela. Somos o nome da tabela igual a tabela. O que isto é, isto é uma sanitização, certo? Não vamos levar o que, quem quer que seja, os usuários, o hacker neste caso, estamos, na verdade, em primeiro lugar, a sanitizá-lo. E quando passarmos em uma variável legítima, veremos como tudo isso funciona. Mas você vai notar que é nulo. Isso é porque está procurando uma mesa com o nome completo dele e não há nenhuma, certo? Isso realmente não existe. Will, na verdade, eu os levaria para fora. Está à procura de uma mesa que se chama isto, desculpa. Seria isso aí mesmo. Certo. Mas não há nome de tabela que e por isso não encontra nenhuma tabela, por isso não retorna nada. Então, o que acontece com essa saída quando passamos em uma tabela legítima? Opa. Certo, vamos fazer isso. Vemos que temos, estamos obtendo nossa saída Intrade, correto, certo? Então o que acontece é, e eu não tenho a consulta select dinamicamente construída aqui primeiro, eu vou fazer isso na verdade, logo depois disso. Posso fazer essa codificação ao vivo, mas vemos que ela passa para um valor legítimo. Não deveria ser uma entrada hackeada neste momento. Então isso é um valor legítimo e ele retorna tabela DIYBio, nossa tabela. Então ele retorna isso aqui, esta tabela de seleção, e vemos o que o nome da citação faz é envolvê-lo entre parênteses, certo? Então ele envolve o nome entre parênteses. Em seguida, tem este período aqui e citação nome. By the way, este é um bom exemplo de bom desenvolvimento de banco de dados aqui em bom desenvolvimento SQL, certo? Há legitimar a entrada. Mas você percebe por legitimar a entrada, obtemos isso a partir deste esquema de informações tabelas de pontos. Não estamos recebendo do usuário, certo? Então, agora o que acontece se fizermos essa mesma pergunta aqui em cima? Ok. E eu ainda não escreveria desta forma, mas se quiséssemos escrevê-lo desta forma, e nós selecionamos estrela da tabela selecionada. Ok? E então nós, e eu vou realmente ir em frente e discutir isso aqui fora porque nós já sabemos o que é isso. Então vamos em frente e executar isso. E veremos que o ID está em branco porque, novamente, não há valores nessa tabela, mas ele retorna essa seleção. Agora, novamente, isso não é limpo, Eu não sou um grande fã disso, mas ainda é um 1000 vezes melhor do que esse caso. E a razão é porque o que isto está essencialmente a correr é isto aqui mesmo. E isso é bem aqui, certo? E lembre-se que você diz, bem, o que acontece se eles colocarem um ponto-e-vírgula? Bem, eles não podem, porque esta variável de tabela select vem disso. Não há como eles adicionarem informações a isso, certo? Então é por isso que não temos que nos preocupar com essa situação. Ok, legal. Então agora vamos realmente fazer um exercício de codificação ao vivo. E isso vai levar um pouco de trabalho. Então eu vou mover meu microfone um pouco porque eu vou ser realmente roupas ao vivo. E o que nós vamos fazer é olhar para um exemplo porque eu posso ver alguns alunos dizer, bem, por que nós nunca usaríamos SQL dinâmico? E se estamos fazendo desenvolvimento de banco de dados ou desenvolvimento ETL ou qualquer tipo de desenvolvimento, há casos de uso legítimos para SQL dinâmico, mas devemos estar cientes de algumas das desvantagens disso, como acabamos de ver. Queremos desinfetá-lo. Então este é um exemplo de um caso de uso legítimo de SQL dinâmico e por que ele é útil. Então eu tenho uma tabela aqui e o que eu vou fazer aqui é eu vou criar um CTE. Vou chamar de “cai” aqui. E eu vou fazer como e eu vou fazer selecionar, selecionar estrela de grupos de tabela. E então eu vou fazer uma estrela de mergulhos, ok? E assim isso deve retornar a saída. Sim, vemos que esses três valores são duplicados. Vemos esses dois valores são duplicados e vemos esses valores são duplicados. Então fazer matemática no apartamento parece que para valores fora desta tabela são duplicatas que gostaríamos de ser removidos. Ok? Tudo bem, então nós poderíamos escrever a lógica duplicada e nos livrar da lógica duplicada cada vez, certo? E isso é algo que muitas pessoas fazem e depende, podemos querer um subconjunto de colunas, mas posso dizer que há muitos ambientes em que eu entrei onde queremos remover duplicatas por todos os nomes das colunas. Então o que queremos é toda a lista de colunas. E queremos ser capazes de remover duplicatas por toda a lista de colunas. Se tivermos uma situação como esta, se pensarmos bem, todas as colunas são duplicadas. É verdade que, por vezes, podemos apenas ter estes dois duplicados que queremos remover. Mas há muitas situações em que queremos remover as linhas da tabela que têm colunas duplicadas na tabela. Então, como podemos fazer isso dinamicamente? Tudo bem, então vamos em frente e vamos escrever algum código ao vivo. O que vamos fazer é obter dinamicamente toda a lista de colunas. Então o que eu vou fazer antes de tudo aqui é eu vou declarar, e eu vou declarar uma grande variável aqui porque ela vai ser grande. E esse é o carro de Navarra 1000. E eu vou declarar outra variável chamada coluna, e vai ser do mesmo tamanho, 1000. E é porque isso armazenaria todas as colunas. E então SQL vai ser nenhum varchar max. E nós vamos, eu vou demonstrar SQL em um segundo e por que torná-lo Max. Mas por enquanto, isso aqui é como isso, a razão por que isso é tão longo é porque eu estaria armazenando todos os nomes das colunas, id I name, I date. Mas pode haver mais nesta, nesta, nesta lista de colunas. Ok, então eu vou declarar uma tabela como a outra, que vai ser uma variável. E vamos fazer isso como varchar 100 e vamos defini-la igual a grupos de mesa. Lembramos que era a nossa mesa. Ok, agora a próxima coisa que eu vou fazer é selecionar estrela das tabelas de pontos do Esquema de Informação. E eu vou explicar por que isso, sinto muito, não mesas, eu fiz isso errado. Colunas. Isto é porque me dá todos os nomes das colunas de uma tabela. E eu vou dizer onde o nome da tabela é igual a Paypal. Ok, então vamos em frente e fazer isso. E vamos ver a saída, veremos o banco de dados, o esquema da tabela e veremos isso, os nomes das colunas, certo? Isso é legal. Tudo bem, então agora o que eu vou fazer daqui é eu vou usar nosso SQL dinâmico e eu cometi um erro aqui. Preciso definir isto igual a um espaço em branco. Ok? E é por isso que codificação ao vivo pode ser tão desafiador é porque às vezes eu esqueço o que estou fazendo. E eu estou tipo, ok, espere um minuto, como eu fiz isso antes? Ok, então o que eu vou fazer é eu vou definir esta lista de colunas mais iguais. Isso significa adicionar o que você tem aqui e, em seguida, adicionar também o nome da citação. Já vimos isso usado no outro. O que isso faz é envolvê-lo entre parênteses. Lembre-se, e nós vamos dizer o nome da coluna. Então, voltando para este exemplo, quando usamos esse nome de aspas, ele envolveu-o entre parênteses como este. Ok, então nós vamos realmente olhar para a saída aqui. Mas você vai notar que estamos selecionando a coluna n e estamos adicionando lista de colunas, sinto muito, e estamos adicionando cada um dos nomes de coluna mais uma vírgula. Ok, então vamos olhar para a saída de como isso seria parecido. Todos colunistas. Certo, vamos ver isso. Vemos que temos identificação, eu nome, namoro, depois temos uma vírgula no final. Agora veremos a lógica em um segundo, mas a linha final é que queremos que a vírgula indiana seja removida. Então o que vamos fazer é selecionar o comprimento desta string. Opa. Então, o que acontece quando você usa muitos idiomas já que é válido em outro idioma, ok? E veremos que são 21. No entanto, há uma função em T-SQL chamada substring. E substring, vamos inserir a expressão que é a lista de colunas, vai começar na primeira posição. E vamos fazer o comprimento vai ser o colchete de fechamento aqui para o comprimento da lista de colunas menos um K. Sim, isso está correto. Fazemos isso e vemos o que ele retorna é esse ID I name, não há nenhuma vírgula atrás. Isso é exatamente o que queremos aqui. E então o que eu vou fazer é dividir o comprimento da calma era 21 caracteres. Vemos o que esta lista de colunas é. É essa coisa cheia. O que vou fazer é codificar isto. Vou anexar o código. Mas quando eu anexei o código, ele vai ficar assim em vez de outro. Eu vou realmente codificar isso também. E o que eu vou fazer aqui é eu vou definir coluna. Vou chamar isto de colunas. Eu não fiz isso certo? Igual a e é substring isso. Então, esta variável é igual a isso. Ok? Agora vocês, alguns de vocês provavelmente estão se perguntando corretamente, ok, então, você sabe, por que estamos fazendo isso dinamicamente assim? E essa é uma boa pergunta. Como vemos agora, o que fomos capazes de fazer é que fomos capazes de conseguir. E a lista de colunas, e nós fomos capazes de remover as colunas finais, guarde isso. Agora o que vamos fazer é selecionar, não vamos remover, vamos selecionar os valores duplicados. Este é o lugar onde vamos usar este SQL e o varchar max e foram a razão pela qual estamos configurando SQL varchar max é porque temos um monte de SQL que vamos colocar aqui. E então nós vamos estar usando essa expressão de tabela comum com As de Hadoop, e nós vamos seguir a mesma lógica. A primeira coisa que vou fazer é a mesma coisa que fiz antes. Vou fazer uma estrela selecionada da TV. Não, tenha em mente, podemos adicionar dinamicamente drogas aqui. Poderíamos fazer uma vantagem e depois o nome da tabela. A razão pela qual eu estou realmente eu vou voltar e dependendo de quanto tempo nós vamos voltar e fazer isso na verdade, e se não, nós poderíamos fazer isso. Podemos torná-lo mais uma dinâmica. Quero demonstrar que a natureza nomeada mais dinâmica dessas colunas. Mas se tivermos tempo, vou fazer isso. Então eu vou fazer uma estrela selecionada do Duke's. Isso é da expressão de tabela comum. A expressão de tabela comum está recebendo seus valores a partir daqui. Mas eu estou selecionando a partir desta expressão de tabela comum. E vou deixar assim por enquanto. E sei o que vou acrescentar. Bem, na verdade vou comentar isso, mas vou dizer onde du by dy, que vai ser o nome da coluna e o futuro é um. Basicamente, nós não temos nenhum dos valores duplicados. No entanto, eu estou comentando que isso não vai correr e isso vai correr quando eu executar isso. Ok, e então eu vou executar SP, Executar SQL, e eu vou executar o SQL. Eu poderia passar um vídeo inteiro e por que devemos usar isso em vez disso. Mas por enquanto, eu sugiro se você realmente quer saber, você pode definitivamente procurar por y. mas este é um procedimento que definitivamente torna Running dinâmico SQL. Se estiver bem escrito, acrescenta uma camada de segurança. Faz um pouco de sanitização, mas vou deixar isso por enquanto, porque é um tópico um pouco mais avançado e vamos fazer isso, ok? E assim vemos que ele realmente seleciona tudo. Lembre-se que havia nove valores. Lembramos que existem quatro valores que são duplicados. Ok? Então ainda não fizemos nada para remover as duplicatas, mas vemos nossas execuções SQL dinâmicas, certo? E tenha em mente que não há entrada neste SQL dinâmico. Então, se alguém dissesse que não é seguro, isso é incorreto porque na verdade não há entrada, mas estamos prestes a usar a entrada da lista de colunas. Usar esta sanitização é tão importanteque não vamos usar o valor direto que eles passaram, certo? Usar esta sanitização é tão importante Se isso fosse um procedimento, se isso fosse vindo do lado de fora, não estamos usando esse valor. Na verdade, vamos usar esses valores higienizados, certo? Ok, então vamos ver isso aqui. Ok? Então vamos fazer uma vírgula aqui, e vamos fazer o número da fila. E eu estou indo da memória aqui, então número da linha acima e é partição por espaço mais, mais isso. E eu vou voltar a isso em uma segunda ordem por mais isso. E então eu vou chamar essa identidade falsa. É onde está a nossa coluna, está bem? Agora estamos particionando por um conjunto de colunas, que irá, estamos organizando por um conjunto de colunas. E então vamos ordenar por essas colunas. E de onde vamos conseguir isso? Vão ser as colunas. E lembre-se que estes já estão na forma de colchetes, certo? Portanto, não precisamos adicionar colchetes ao nosso SQL dinâmico. Então o que estamos fazendo aqui, na verdade, eu vou realmente selecionar o ID duplicado primeiro. Vamos selecionar a estrela da mesa. Então vamos fazer isso para que as pessoas possam, os alunos podem ver a saída. Ok. Então, o que estou fazendo aqui, porque para ser justo, este vídeo pressupõe que pessoas de iniciantes a pessoas avançadas estão olhando para isso. Assim, as pessoas avançadas vão entender que os iniciantes não vão tanto. O que estou fazendo aqui é que estou passando por essas colunas. Agora tenha em mente que essas colunas não são algo que eles introduziram, certo? Isto é, é por isso que SQL dinâmico pode ser muito útil, é que nós obtivemos isso porque nós higienizá-lo. Então, nosso passo de higienização realmente conseguiu isso. Ok, então agora vamos fazer isso. E nós vemos, a propósito, o du by dy, certo? E isso está correto. Isso é o que acontece quando você particiona por, estamos particionando por essas colunas e está dizendo, bem, espere um minuto, há três partições porque estas são exatamente as mesmas. Se olharmos para estes valores, estes são exactamente os mesmos, certo? Então, se você olhar para isso, esta particionada por 123 partição, há duplicatas aqui, há 12. Veremos que não há duplicatas aqui. Não há duplicatas aqui, mas há duplicatas aqui, certo? Há esses dois. E então isso é o, que particionamento faz e nós estamos apenas ordenando por esse conjunto de colunas. Isto é menos importante em termos de remoção, mas ainda temos de o incluir. Tem que estar lá tem que haver um pedido quando estamos especificando o número da linha. Ok, bem, o que acontece se escolhermos o du por dy onde du por dy é igual a um, o que vai escolher são duplicatas, certo? Veja como isso funciona. Então vamos voltar para aqui, só para comparar. E novamente, o roteiro vai ser anexado. Veja como vemos o du por dy 1231212. Ele vai selecionar onde é um, certo? E isso vai eliminar todos os nossos deveres, o que significa que quatro valores são eliminados e ficamos com cinco valores. Ok? Então este é um bom exemplo de onde e isso surge em muitos ambientes. Às vezes teremos duplicatas em todas as colunas da tabela. E queremos selecioná-lo. E você notará que estou usando SQL dinâmico. Eu realmente não tenho que reutilizar o que está na mesa cada vez. E não tenho olhos para dizer, sinto muito, não preciso reescrever isso. O que é para CTE cada vez que isso funcionará para qualquer tabela com duplicatas, certo? Essa é a beleza do SQL dinâmico. Agora é verdade que pode haver tantas colunas é que isso tem que ser muito mais longo. Isso é, isso é possível. Ok. A outra coisa também, e eu vejo isso. A única coisa que estou olhando para isso é que não estamos tornando o nome da tabela dinâmico. Então o que eu quero fazer aqui, e como eu disse, se eu tivesse tempo, eu voltaria a isso. Vamos apenas ver. Vou fazer isso muito rápido. Ok? E do topo da minha cabeça, eu não tentei isso, mas isso novamente é, é mais codificação ao vivo. Portanto, apenas esteja ciente que esta é a vantagem e desvantagem da codificação ao vivo. Se eu fosse criar outra variável aqui chamada tabela selecione varchar. E acho que a mesa é 100. Ok? E eu não sei se eu posso fazer isso, mas se eu fosse para selecionar tabela igual, aspas, nome. E eu vou fazer esquema de tabela. E então eu vou fazer isso, e então eu vou fazer citação nome. A razão deles é que podemos sempre fazer isso em outras declarações selecionadas para que pudéssemos ter a nomeação, um nome de tabela, ok? Podemos sempre ter outro lote de selecionar a partir daqui para colunas de esquema de informações, e podemos ter outro. No entanto, podemos ser capazes de economizar algum espaço apenas fazendo isso aqui. Eu não sei se podemos fazer isso. Então é por isso que estou fazendo isso como um teste. Mas vamos ver, sintaxe incorreta perto. Oh, eu sinto muito. Selecione, selecione, tabela, selecione. Isso é agora definido. Ok, isso funciona. Bem, mas deixa-me ver as colunas, está bem? Selecione colunas. Deixe-me, eu tenho que verificar essa. Sim, tudo bem. Ok. Então podemos fazer as duas coisas. Ok, legal. Então podemos realmente fazer os dois. Ok, legal. Então vou deixar isto. Agora que eu penso sobre isso, codificado, comentou no script que eu vou anexar no script ou qualquer outra coisa. Ou para aqueles de vocês que estão apenas replicando, devo dizer. Você pode simplesmente replicá-lo. Para aqueles de vocês que estão passando por este exercício, há, definitivamente, há plataformas em que eu posso adicionar o script e então há plataformas que eu não posso adicionar o script. Ok. Então agora tudo que eu tenho que fazer para tornar essa dinâmica ainda mais é eu vou fazer de e depois mais, e depois mais e então isso OK. E então o que eu vou fazer é selecionar tabela. Ok. E agora vamos em frente e deixe-me ver se perdi alguma coisa. Sinto como se tivesse conseguido tudo. Ok, então agora vamos fazer isso e lá está. Então, agora, se isso foi um procedimento armazenado, eu nunca tenho que reescrever isso. Novamente. A parte que posso ter que reescrever é o link desses parâmetros. E a razão é porque é possível que a tabela tenha muitas colunas. Eu vi mesa, mesas com centenas e centenas de colunas. E isso é definitivamente possível. Mas você pode ver com este código, o que somos capazes de fazer e é por isso que eu não sou contra SQL dinâmico. Se vamos usar SQL dinâmico no entanto, como você pode ver, eu sou um grande defensor de sanitizar a entrada. Então, para aqueles de vocês que estão em plataformas que o, Isso permite que você, Eu devo dizer também, que me permite anexar o código. Este código será anexado se você não estiver, e você está em mais do curso iniciante onde ele não permite, isso é realmente muito fácil de replicar, porque o que você está realmente replicando é apenas isso, isso aqui. E então você está replicando isso aqui. E então você está replicando isso. Então indo junto e fazendo isso, mesmo no SQL Express, tudo isso funciona, não há T-SQL avançado, linguagens diferentes, diferentes linguagens SQL como MySQL ou PostgreSQL pode ser um pouco diferente, mas isso é muito fácil de replicar. E agora você tem uma função SQL dinâmica que você pode criar dentro de um procedimento armazenado que permite que você se livrar de duplicatas em qualquer tabela onde a duplicata é baseada em cada coluna única. Então você pode se livrar de linhas duplicadas onde todas as colunas são exatamente as mesmas. 11. Série de entrevista Sql Introdução 1: Nesta série, vamos analisar algumas perguntas populares da entrevista SQL. Esta série apresentará codificação ao vivo e isso é para que todos vocês não precisem baixar nenhum dado ou qualquer código ou banco de dados. Você poderá criá-lo em tempo real. E veremos algumas das perguntas mais populares que são apresentadas em entrevistas SQL. E então vamos passar por isso. E dessa forma você tem uma boa ideia do que se preparar. Uma coisa que eu quero notar é quando você está em uma entrevista e digamos que você não sabe a resposta para uma pergunta. Na verdade, é aceitável dizer em uma entrevista. Não tenho certeza sobre a resposta para isso, mas deixe-me escrever isso muito rápido que eu possa ir procurar isso depois desta entrevista. E a razão é que é perfeitamente compreensível do lado do entrevistador. E tenho sido entrevistador muitas vezes que alguém pode não saber a resposta para tudo. E, na verdade, é um traço positivo ao entrevistar alguém. Quando a pessoa disser, vou procurar isso. Entrevistei centenas de pessoas predominantemente em torno de administração de banco de dados, desenvolvimento de banco de dados, engenharia de dados, arquitetura de dados e desenvolvimento de ETL. E publiquei centenas de artigos técnicos, abrangendo principalmente arquitetura e administração de dados. Então, em alguns casos, com entrevistas, você vai escrever o código enquanto em outros casos explicará a lógica apenas com a história do problema que você resolveu. Então, o que vamos fazer nesta série, vamos fazer as duas coisas. Vamos escrever algum código, mas também falaremos sobre alguns problemas que você poderia resolver com o código que escrevemos. Dessa forma, você entende a lógica, mas também tem algum código que, se precisar escrever o código, você pode escrever o código. E dessa forma você é abordado em ambos os tipos de entrevistas.