Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Banco do Brasil Escriturário - Agente de Tecnologia 1. Aprendizagem de máquina: Fundamentos básicos; ......................................................... 1 Noções de algoritmos de aprendizado supervisionados e não supervisionados; ................. 1 Noções de processamento de linguagem natural. ............................................................... 4 2. Banco de Dados: Banco de dados NoSQL (conceitos básicos, bancos orientados a grafos, colunas, chave/valor e documentos); MongoDB; Linguagem SQL2008;................................... 9 Conceitos de banco de dados e sistemas gerenciadores de bancos de dados (SGBD); ... 31 Data Warehouse (modelagem conceitual para data warehouses, dados multidimensionais); Modelagem conceitual de dados (a abordagem entidade-relacionamento); ........................... 60 Modelo relacional de dados (conceitos básicos, normalização); ........................................ 64 Postgre-SQL; .................................................................................................................... 93 3. Big data: Fundamentos; Técnicas de preparação e apresentação de dados. ................ 97 4. Desenvolvimento Mobile: linguagens/frameworks: Java/Kotlin e Swift. ........................ 102 React Native 0.59; ........................................................................................................... 117 Sistemas Android api 30 e iOS xCode 10. ....................................................................... 118 5. Estrutura de dados e algoritmos: Busca sequencial e busca binária sobre arrays; Ordenação (métodos da bolha, ordenação por seleção, ordenação por inserção), lista encadeada, pilha, fila e noções sobre árvore binária. .......................................................... 130 6. Ferramentas e Linguagens de Programação para manipulação de dados: Ansible; .... 215 Java (SE 11 e EE 8); ....................................................................................................... 221 TypeScript 4.0; ................................................................................................................. 280 Python 3.9.X aplicada para IA/ML .................................................................................... 281 Analytics (bibliotecas Pandas, NumPy, SciPy, Matplotlib e Scikit-learn). ......................... 285 Olá Concurseiro, tudo bem? Sabemos que estudar para concurso público não é tarefa fácil, mas acreditamos na sua dedicação e por isso elaboramos nossa apostila com todo cuidado e nos exatos termos do edital, para que você não estude assuntos desnecessários e nem perca tempo buscando conteúdos faltantes. Somando sua dedicação aos nossos cuidados, esperamos que você tenha uma ótima experiência de estudo e que consiga a tão almejada aprovação. Pensando em auxiliar seus estudos e aprimorar nosso material, disponibilizamos o e-mail professores@maxieduca.com.br para que possa mandar suas dúvidas, sugestões ou questionamentos sobre o conteúdo da apostila. Todos e-mails que chegam até nós, passam por uma triagem e são direcionados aos tutores da matéria em questão. Para o maior aproveitamento do Sistema de Atendimento ao Concurseiro (SAC) liste os seguintes itens: 01. Apostila (concurso e cargo); 02. Disciplina (matéria); 03. Número da página onde se encontra a dúvida; e 04. Qual a dúvida. Caso existam dúvidas em disciplinas diferentes, por favor, encaminhar em e-mails separados, pois facilita e agiliza o processo de envio para o tutor responsável, lembrando que teremos até cinco dias úteis para respondê-lo (a). Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 2 Não esqueça de mandar um feedback e nos contar quando for aprovado! Bons estudos e conte sempre conosco! Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 1 APRENDIZADO DE MÁQUINA1 O termo Inteligência Artificial (IA) não é novo, a primeira abordagem foi feita por pesquisadores em uma conferência de Dartmouth, no ano de 1956. Desde então, muitas expectativas envolveram o assunto, abordada como a tecnologia do futuro, ficção científica ou realidade atual. Depende do ponto de vista, pois atualmente a Inteligência Artificial tem se tornando realidade, apesar de que ainda é um campo de estudo a ser muito explorado. Porém, quando falamos de IA, o termo mais conhecido e abordado na atualidade é o de Aprendizado de Máquina, ou Machine Learning no inglês. A área de Aprendizado de Máquina também não é nova, e já vem sendo praticada há um bom tempo. Tudo bem que o aumento da velocidade do processamento dos computadores, o barateamento das tecnologias e a evolução das GPUs influenciam. Mas nunca na história da humanidade se produziu tantos dados como atualmente. Um artigo da Scientific American revela que em 2016 a humanidade produziu mais dados do que em toda a sua história, são cerca de 2,5 Exabytes de dados produzidos por dia. E é essa quantidade de dados disponíveis é que alimenta e fortifica o Aprendizado de Máquina. Mas a máquina consegue aprender? Aprendizado de Máquina é um método de análise de dados que automatiza o desenvolvimento de modelos analíticos. É possível utilizar algoritmos para coletar dados e aprender com os dados, levando em consideração todo o histórico para então fazer uma determinação ou predição sobre alguma coisa ou situação do mundo real. O que acontece é que o computador aprende através de técnicas que utilizam algoritmos computacionais. Os algoritmos trabalham com certa base de dados, então conseguem aprender através de treinamento e prever situações com a experiência adquirida com aqueles dados. O mais interessante é que os algoritmos começam a trabalhar de certa forma autônoma, retornando resultados para que nem foram programados, ou seja, começam a ter insights sobre algo específico. Atualmente não é difícil encontrar históricos da utilização do Aprendizado de Máquina na vida real. Exemplos de que realmente a máquina aprende com dados e treinamento. Posso citar os carros autônomos do Google, que dirigem sozinhos (não começaram a dirigir do nada, eles aprenderam a dirigir sem a intervenção humana), as ofertas e recomendações online da Netflix, Facebook, Amazon e outras redes sociais e lojas virtuais, detecção de fraudes automáticas em cartões de créditos e contas bancárias, e até uma rede neural que é capaz de sonhar. Sim, esse último exemplo é uma rede neural do Google, que foi ensinada a reconhecer imagens e, enquanto aprende, os responsáveis do projeto dizem que a IA consegue produzir novas imagens. 1 https://www.profissionaisti.com.br/2017/12/aprendizado-de-maquina-conceitos-e-praticas-da-area-que-esta-movendo-o-mundo/ 1. Aprendizagem de máquina: Fundamentos básicos; Noções de algoritmos de aprendizado supervisionados e não supervisionados; Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 2 Métodos para o Aprendizado de Máquina A pergunta que pode ter ficado no ar é, como fazer a máquina aprender? Anteriormente foi mencionado que o combustível para a máquina aprender são os dados, porém, existem métodos de aprendizagens que são utilizados para realizar o Aprendizado de Máquina. Basicamente, existem quatro métodos: aprendizado supervisionado, aprendizado não supervisionado, aprendizado semi supervisionado e aprendizado por reforço. Porém, dois são os mais utilizados, o aprendizado supervisionado e o aprendizado não supervisionado, que são descritos logo abaixo: Aprendizado supervisionado: neste método de aprendizado, a máquina é treinada através de um conjunto de dados onde para cada entrada a saída é conhecida. Os dados para este tipo de método devem possuir rótulos. Podemos comparar a um aprendizado acompanhado, onde o professor supervisiona todo o processo de aprendizado, dizendo o que é certo, o que é errado e aonde sequer chegar. O desafio fica para quando se quer prever futuras situações. Com uma entrada de dados, quais serão os resultados previstos para aquela situação. Neste caso o algoritmo deve se ajustar para chegar aos resultados corretos e com o máximo de acerto. Para isso o aprendizado pode ser constante, aumentando assim a experiência com aquele problema. Um bom exemplo para esse caso é conseguir prever se uma transação do cartão de crédito de certa pessoa é falsa ou não. Aprendizado não supervisionado: neste método de aprendizagem, ao contrário do anterior, os dados não possuem rótulo, ou seja, a saída correta não é informada. Podemos comparar a um aprendizado autodidata, onde o aluno tem que descobrir o caminho e alcançar os resultados. Neste caso, o algoritmo deve descobrir a base de dados e o que está sendo mostrado, explorando os dados e buscando encontrar alguma estrutura neles. Dependendo da técnica utilizada, o algoritmo vai encontrar agrupamentos entre esses dados, aproximando os dados que tem alguma semelhança entre si. Um exemplo pode ser a classificação de pessoas que tenham a tendência de adquirir diabetes, analisando a sua alimentação e rotina, porém não é informado quais pessoas realmente tem ou não diabetes. Neste caso o algoritmo tem que agrupar e contextualizar esses dados para chegar a predição correta dos casos. Processo de aprendizado Como o ser humano, a máquina precisa passar por alguns processos para que ela possa aprender. Como discutido anteriormente, os dados são essenciais, então o primeiro passo é escolher quais dados serão trabalhados e disponibilizados para o processo do Aprendizado de Máquina. Porém, nem todo conjunto de dados, seja ele adquirido em bases de dados abertas, coletados em tempo real ou de um banco de dados, estará de forma estruturada e pronta para ser passados para a máquina aprender. Como nós, que precisamos de um material para estudo de qualidade para podermos aprender, a máquina precisa de um conjunto de dados razoável para também poder aprender. Como citado, muitas das vezes os dados estão completamente desestruturados e fora de um padrão e para isso é necessário a realização da técnica de Data Cleaning. Data Cleaning, ou Limpeza de Dados, é uma técnica utilizada para trabalhar com os dados. Nesse processo é realizada a normalização, a estruturação, padronização e contextualização dos dados. Pode ser que nem todas as bases de dados precisem passar por esse processo, porém, é bom validar dependendo do problema e qual o resultado desejado. Após ter um conjunto de dados estruturados, o próximo passo neste processo de aprendizado é a aplicação de um método de aprendizagem juntamente com uma técnica de Aprendizado de Máquina. As técnicas de Aprendizado de Máquina utilizam algoritmos, que por sua vez faz o trabalho computacional e todo o processamento dos dados. Logo abaixo, algumas técnicas de Aprendizado de Máquina: Redes Neurais: são baseadas em como o cérebro humano funciona. Existem diferentes tipos de Redes Neurais, mas basicamente elas consistem em um conjunto de nós (ou neurônios) dispostos em várias camadas com interconexões ponderadas entre eles. Cada neurônio combina um conjunto de valores de entrada para produzir um valor de saída, que por sua vez é passado para outros neurônios nas camadas seguintes. Árvore de Decisão: essa técnica utiliza algoritmos do formato de árvore. Cada árvore possui nó, ramos, folhas e ligações entre eles. Um ramo é um conjunto de nó que testa cada atributo da classificação e cada ramo corresponde ao valor do atributo. E as folhas atribui uma classificação para os ramos. A classificação é o resultado final que se quer chegar ou prever com o algoritmo. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 3 Regressão: é a técnica utilizada quando se quer prever valores de algo futuro, baseado em comportamento de variáveis passadas. Um exemplo seria prever o valor de mercado de um imóvel utilizando um algoritmo de regressão linear. Depois da aplicação da técnica de aprendizado e do treinamento do algoritmo, devemos confirmar o seu desempenho para prever os casos. Nesse momento é a hora da aplicação da prova. Existe algumas métricas que podem ser utilizadas para assim ter uma medida que fale a quantidade de acertos, erros ou o desempenho da técnica utilizada. Abaixo, são descritas algumas métricas interessantes: Acurácia: essa métrica é a mais básica para medir o aprendizado, leva em consideração a proporção de predições corretas, sem levar em consideração a quantidade de erros. Sensibilidade: é a proporção de verdadeiros positivos, ou seja, a capacidade do algoritmo em prever casos corretamente para os casos que são realmente verdadeiros. Especificidade: A proporção de verdadeiros negativos: a capacidade do algoritmo em predizer situações erradas que realmente são falsas. Eficiência: é a média aritmética da sensibilidade e especificidade. Indica se o algoritmo está mais suscetível a ter verdadeiros positivos ou verdadeiros negativos. O Aprendizado de Máquina é uma área que está movendo o mundo e influenciado no nosso dia a dia. A área de IA já é uma realidade e está presente nas nossas atividades, seja no trabalho, estudo ou no lazer. Uma coisa é certa: a organização ou profissional que investir em Inteligência Artificial tem a grande chance de sair à frente competitivamente dos demais em uma das áreas que mais cresce e evolui na atualidade. Questões 01. (Banco do Brasil - Escriturário – CESGRANRIO/2018) Um desenvolvedor de uma instituição bancária foi designado para tentar usar técnicas de aprendizado de máquina para, dado o saldo diário durante um ano de um cliente, classificá-lo como BOM ou MAU candidato a receber um cartão de crédito VIP. Para isso, a única informação que pode usar — e que ele recebeu — é um conjunto de treinamento com 50.000 clientes pré- classificados pelos seus gerentes, contendo 365 campos com os saldos diários e um campo com o número 1, caso o cliente fosse um BOM candidato, ou o número 0 (zero), caso fosse um MAU candidato. Essas respostas são consideradas corretas. Considerando as práticas tradicionais de aprendizado de máquina, o desenvolvedor deve escolher um algoritmo: (A) supervisionado, porque humanos precisarão verificar a execução do algoritmo. (B) supervisionado, porque o conjunto de treinamento possui dados e rótulo, sendo necessário aprender a função que prediz o rótulo correto. (C) não supervisionado, porque humanos não precisarão verificar a execução do algoritmo. (D) não supervisionado, porque o conjunto de treinamento possui dados e rótulo, sendo necessário aprender a função que prediz o rótulo correto. (E) não supervisionado, porque, no futuro, os rótulos não estarão disponíveis. 02. (SERPRO - Analista - CESPE) Em relação às soluções existentes para o problema de tomada de decisão nas organizações, julgue os itens a seguir. Algumas das principais técnicas utilizadas para a realização de Datamining são: estatística, aprendizado de máquina, datawarehouse e recuperação de informações. ( ) Certo ( ) Errado Respostas 01. Resposta: B Os algoritmos de aprendizado supervisionados fazem previsões com base em um conjunto de exemplos. Por exemplo, as cotações históricas podem ser usadas para arriscar palpites em preços futuros. Cada exemplo usado para treinamento é rotulado com o valor de seu interesse — neste caso, o preço da ação. Um algoritmo de aprendizado supervisionado procura por padrões nesses rótulos de valor. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 4 Ele pode usar qualquer informação que possa ser relevante – o dia da semana, a temporada, os dados financeiros da empresa, o tipo de setor, a presença de eventos geopolíticos perturbadores – e cada algoritmo procura tipos diferentes de padrões. Depois que o algoritmo tiver encontrado o melhor padrão possível,usará esse padrão para fazer previsões para dados de testes sem rótulos — os preços de amanhã. No aprendizado não supervisionado, os pontos de dados não têm rótulos associados a eles. Em vez disso, a meta de um algoritmo de aprendizado sem supervisão é organizar os dados de alguma forma ou descrever sua estrutura. Isso pode significar agrupá-los em clusters ou encontrar diferentes maneiras de consultar dados complexos para que eles pareçam mais simples ou mais organizados. 02. Resposta: Certo A questão fala sobre algumas das principais técnicas utilizadas para a realização de Datamining. Então a questão informa claramente, que se trata de técnicas para realizar o datamining, e não que são técnicas do datamining. PROCESSAMENTO DE LINGUAGEM NATURAL: ENTENDA COMO FUNCIONA, IMPORTÂNCIA E APLICAÇÃO2 O processamento de linguagem natural, ou apenas PLN, é uma tecnologia que permite que computadores entendam, interpretem e manipulem a linguagem humana. A ideia por trás dessa solução é dar aos computadores a capacidade de lidar com textos escritos por pessoas, isso inclui analisar o seu contexto, considerar diferenças de linguagem, retirar informações, ponderar sobre sentidos das frases e até compor textos em resposta. Para as empresas, o processamento de linguagem natural ajuda a promover uma comunicação mais fluida e efetiva entre máquinas e humanos, aprimorando, principalmente, o serviço de atendimento ao cliente. Mas por que soluções como essa são tão importantes nesse setor? Entre os motivos está a promoção de experiências melhores para os consumidores, mais dinâmicas, otimizadas e precisas. O relatório “Tendências para experiência do cliente 2021”, da Zendesk, mostrou que 65% dos clientes querem comprar de empresas que oferecem transações on-line fáceis e rápidas. Quanto ao atendimento, especificamente, 64% dos entrevistados disseram que usaram um novo canal de suporte em 2020, e 73% pretendem continuar usando ao longo deste ano. Inclusive, um dos canais de atendimento que ganhou mais destaque nos últimos tempos foram os aplicativos de mensagem. O uso do WhatsApp, por exemplo, cresceu acima de 90% entre as opções de suporte no Brasil em 2020. Em ferramentas como essa, o processamento de linguagem natural pode aprimorar ainda mais o atendimento ao cliente, aumentando o seu nível de satisfação e de interação com a marca. Neste artigo, você vai entender tudo sobre PLN, incluindo: - O que é processamento de linguagem natural - Principais objetivos do PLN - Como o processo de linguagem natural evoluiu ao longo dos tempos - Como funciona o processo de linguagem natural - Quais são os maiores desafios do processamento de linguagem natural - Por que o PLN é importante para as empresas - Quais são os métodos do processamento de linguagem natural - Em quais situações do dia a dia pode ser usado o PLN 2 https://www.zendesk.com.br/blog/processamento-de-linguagem-natural/ Noções de processamento de linguagem natural. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 5 O que é processamento de linguagem natural? PLN, processamento de linguagem natural, ou NLP, natural language processing, é uma área da Inteligência Artificial (IA) que tem como objetivo desenvolver tecnologias que permitam que máquinas entendam a linguagem humana. O processamento de linguagem natural funciona como uma espécie de “tradutor” que garante que, quando um humano se comunica com um computador, esse consiga entender claramente o que essa pessoa quer dizer. O conceito diz respeito, basicamente, às soluções que já utilizamos no nosso dia a dia. Dois bons exemplos são quando digitamos algo em sites de pesquisa e esperamos que esse nos entenda e dê a resposta que precisamos, ou quando damos um comando de voz para uma assistente virtual. Porém, esse processo não é assim tão simples. A tecnologia PLN não só permite que o dispositivo compreenda a linguagem do usuário, como também garante que a sua experiência seja cada vez melhor. Além disso, o processamento de linguagem natural capacita os dispositivos para que criem respostas aos usuários, que podem ser tanto escritas quanto em áudios. Em resumo, o NLP entende, interpreta e simula a linguagem natural dos seres humanos, promovendo uma interação e uma conversação bastante similar à que acontece entre duas pessoas. Principais objetivos do PLN O processamento de linguagem natural faz parte do leque de conceitos da Inteligência Artificial, tais como machine learning e deep learning que, em resumo, são tecnologias que ajudam máquinas a se comunicarem cada vez melhor com os humanos. Dica de leitura: “Entenda a diferença entre inteligência artificial, machine learning e deep learning” O principal objetivo do processamento de linguagem natural é garantir que máquinas (computadores e diferentes dispositivos) entendam com perfeição o que uma pessoa está dizendo. Ou seja, o PLN prepara esses equipamentos para “conversarem” com os usuários, melhorando suas experiências em diversos aspectos. Essa tecnologia é bastante complexa, ela permite, por exemplo, que mensagens enviadas por um cliente em uma plataforma de atendimento sejam lidas e interpretadas. E quando falamos “interpretadas”, isso contempla compreender os diferentes contextos que uma mensagem escrita ou falada pode ter. O processamento de linguagem natural garante que o computador reconheça o contexto da mensagem, faça uma análise morfológica, semântica e sintática, analise sentimos e interprete sentidos. Com base nisso, a máquina obtém a capacidade de entender e de criar respostas para atender o que foi apontado pelo cliente. O PLN também permite extrair informações dessas conversações e, com isso, aprimorar a comunicação que está sendo realizada com a pessoa. Vale destacar que, mesmo com todos os avanços tecnológicos, o processamento de linguagem natural foi essencial para atender a uma necessidade bem pontual das empresas, que era de melhorar o tratamento computacional de diferentes linguagens (escritas e faladas). Esse melhoramento, por sua vez, reflete no aprimoramento de diferentes soluções, produtos e serviços entregues aos clientes. Como o processo de linguagem natural evoluiu ao longo dos tempos? O NLP não é uma ciência assim tão nova. No entanto, está avançando e se aprimorando rapidamente por conta da necessidade cada vez maior de melhorar o relacionamento entre máquinas e pessoas. Esse avanço também é devido à transformação digital das empresas, que acontece paralelamente à utilização mais ampla de soluções de Big Data e de algoritmos mais complexos e robustos para diferentes finalidades. A origem do processamento de linguagem natural O processamento de linguagem natural que conhecemos atualmente tem como base um teste chamado Teste de Turing, de 1950. Proposto por Alan Mathison Turing, matemático e cientista da computação, e publicado no artigo Computing Machinery and Intelligence, o objetivo era conseguir identificar quem era a máquina e quem era a pessoa em uma conversa entre eles, considerando apenas as perguntas e respostas dessa interação. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 6 Mas para que Turing conseguisse propor esse teste, antes dele, outros cientistas já faziam estudos com foco no PLN. A primeira máquina de tradução A história aponta que na década de 1940, surgiu a primeira máquina de tradução, denominada Machine Translation. O equipamento foi desenvolvido pelos cientistas Booth e Weaver, que usaram como base a criptografia utilizada na Segunda Guerra Mundial para interpretar comunicações de inimigos. A partir desse feito, diversos outros projetos foram desenvolvidos, inicialmente com a intenção de diferenciar idiomas e resolver problemas de tradução de palavras. A inclusão do PLN no campo da linguística Em 1950, o estudo sobre o processamento de linguagemnatural sofreu um importante avanço. O cientista Noam Chomsky publicou um estudo que abordava o conceito de gramática gerativa, que considerava as transformações sofridas pela linguagem, bem como o seu aspecto criativo. Assim, o PLN que, até então, fazia parte das pesquisas voltadas para a área de computação, passou a integrar também o campo da linguística. Também por isso, hoje, os estudos sobre processamento de linguagem natural envolvem Inteligência Artificial, ciência da informação e linguística. Ainda que o apontamento de Chomsky tivesse grande peso no NLP, o Comitê de Processamento de Linguagem, ALPAC, entendeu que ainda não era possível realizar uma tradução completa utilizando esse recurso. Com isso, os estudos somente voltaram a ter ênfase no final da década de 1960, início dos anos 1970, também pelas mãos de Chomsky, através do um trabalho do cientista voltado para competências linguísticas A criação do ELIZA Ainda que os estudos de Chomsky fossem difíceis de serem interpretados, alguns cientistas tentaram comprovar que a sua teoria poderia se tornar realidade. Um dos trabalhos que foi desenvolvido com essa finalidade foi o software chamado ELIZA, criado com o objetivo de promover uma conversa entre um psicólogo (computador) e um paciente (humano). ELIZA se baseava nas informações que tinha sobre as emoções e pensamentos dos seres humanos para elaborar respostas aos questionamentos do paciente, criando, assim, uma conversação entre homem e máquina. Se, porventura, o apontado pelo paciente estivesse além do conhecimento do software, ELIZA elaborava respostas genéricas para promover a continuidade do processo. O PLN nos dias de hoje Em setembro de 2019, o Allen Institute for AI criou o Aristo, software que integra tecnologias voltadas para leitura, aprendizagem, raciocínio e explicações. A solução conseguiu, rapidamente, resolver um teste científico, similar a um aplicado a um aluno do 9º ano escolar aqui do Brasil, com 90% de acerto. Em um primeiro momento, essa tarefa parece algo extremamente simples, especialmente quando atribuída a um computador. No entanto, para que o Aristo conseguisse esse feito, foi preciso que ele entendesse e analisasse bilhares de documentos para extrair apenas as informações que precisava. Juntando todos esses avanços do processamento de linguagem natural, ao aprimoramento do machine learning e do deep learning, hoje, as soluções que utilizam o PLN estão cada dia mais aptas a passarem com êxito pelo Teste de Turing. O uso em chatbots, por exemplo, ajuda a compreender os sentimentos dos clientes com relação a produtos e serviços e, com isso, promover um atendimento mais humanizado, ainda que esteja sendo realizado por uma máquina. Como funciona o processo de linguagem natural? Para a criação do PLN é preciso utilizar diferentes técnicas que visam interpretar a linguagem humana, isso inclui métodos estatísticos, abordagem de algoritmos e machine learning. Mas para contemplar todos esses pontos, o processamento de linguagem natural é dividido em níveis e em tipos de abordagem. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 7 Níveis de processamento Os níveis de processamento são definidos com base nas diferentes análises que uma forma de linguagem por ter. Por isso, são divididos em 7 níveis distintos, organizados de acordo com a dificuldade de implementação. São eles: - Fonologia - Morfologia - Léxico - Sintático - Semântico - Discurso - Pragmático - Fonologia Nível de processamento voltado para o desenvolvimento de aplicativos de voz, a fonologia tem como objetivo entender e interpretar o som das palavras, considerando, inclusive, a maneira como são pronunciadas. Morfologia Visa entender a composição das palavras, dividindo-as em morfemas que, ainda que sejam fragmentos com significado, não representam, propriamente, uma palavra. Léxico Este nível de processamento tem como função interpretar o significado individual de cada palavra dita em uma interação entre humano e máquina. Sintático O sintático, por sua vez, faz a análise completa de cada frase dita ou escrita na conversão. Semântico O processo semântico complementa o anterior, e busca compreender o significado da frase em questão. Discurso Já o discurso tem uma função mais ampla. Seu objetivo é fazer uma análise completa e encontrar o significado do texto, seja ele falado ou escrito. Pragmático O último nível do funcionamento do processamento de linguagem natural interpreta a mensagem e extrai informações e significados extras que podem não estar explícitos nas palavras. Tipos de abordagem Os tipos de abordagem do PLN dizem respeito à maneira como os softwares vão tratar os níveis de processamento que acabamos de mencionar. Para isso, são divididos em 4 diferentes categorias, sendo elas: - Simbólica - Estatística - Conexionista - Híbrida Simbólica A abordagem simbólica tem como base regras bem definidas e estruturadas de linguística. Por não terem ambiguidades, são criados algoritmos que possibilitam a realização de processamentos de linguagem simples. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 8 Estatística Já a abordagem estatística se baseia no próprio texto ou fala para realizar as suas deduções de interpretação. Para isso, são utilizados modelos matemáticos que dispensam o emprego das regras linguísticas. Conexionista Similar à abordagem anterior, a conexionista também cria modelos genéricos para a criação e interpretação das linguagens. Porém, mescla teorias de conhecimento com aprendizado estatístico para conseguir deduzir, transformar e manipular os textos. Híbrida A abordagem híbrida, por sua vez, reúne todas as anteriores. Sua utilização ajuda a tratar de maneira mais profunda problemas relacionados ao processamento de linguagem natural, conferindo maior flexibilidade a essa atividade. Quais são os maiores desafios do processamento de linguagem natural? Neste ponto você deve estar pensando quanto o processamento de linguagem natural pode resolver diversas questões do dia a dia da sua empresa, especialmente no que diz respeito ao atendimento ao cliente, certo? Obviamente, esse pensamento está correto, visto que um dos objetivos de utilizar a tecnologia NLP é justamente esse. No entanto, por mais que aprimore diversos pontos desse relacionamento, há alguns desafios que essa solução ainda precisa enfrentar para se tornar mais completa e precisa. Os três que mais se destacam são: - Se ajustar à evolução do idioma - Compreender o que há além das palavras - Evoluir dentro do seu próprio objetivo Se ajustar à evolução do idioma Você já deve ter ouvido que a língua portuguesa é um idioma vivo, não é? Isso acontece porque a linguagem sofre uma série de influências, incluindo as mudanças e hábitos da sociedade. Um bom exemplo disso é a palavra “você”. Em tempos passados, esse pronome de tratamento era “vossa mercê”, que evolui para “vosmecê”, até chegar ao formato que utilizamos hoje, “você”. No entanto, se considerarmos uma linguagem coloquial, ou seja, mais informal, esse pronome também pode se resumir a “cê”, por exemplo, “Cê vai hoje de carro para o trabalho?” Além disso, é preciso considerar que, em várias regiões do Brasil, o “você” não é tão utilizado, sendo substituído pelo “tu” com a mesma finalidade. Esse é só um exemplo de como o nosso idioma pode mudar com o passar do tempo e de acordo com a região onde falado. Por isso, um dos desafios do processamento de linguagem natural é garantir que os computadores e dispositivos entendam todas essas mudanças e se adaptem a elas conforme evoluem. Compreender o que há além das palavras Pontuações, tom de voz, erro de digitação, grafias incorretas, tom de voz etc. Essas são mais algumas variações que as palavras e as frases podem sofrer e que afetam a interpretaçãoe o entendimento das soluções com tecnologia PLN. Imagine a seguinte situação: um cliente entra em contato com uma empresa através do chat de suporte help desk e digita a seguinte frase: “Quero solicitar o concerto da minha máquina de lavar”. Se o software interpretar o significado da palavra “concerto” isoladamente, é bem provável que não consiga prosseguir com o atendimento adequadamente. Há também a questão do significado das palavras, que pode variar bastante de região para região. Por exemplo, um cliente pode solicitar o “reparo da sua calçada”, enquanto outro o “reparo do seu passeio”. Alguns podem acionar o seguro do carro via robô do WhatsApp e informar na mensagem como ponto de referência o "semáforo da Rua 2”, já outros “o farol da Rua 2”, ou ainda “a sinaleira da Rua 2”. Por isso, um dos desafios do processamento de linguagem natural é considerar todas essas variações e possibilidades, de modo que a solução realmente consiga oferecer um atendimento rápido e preciso aos usuários. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 9 Evoluir dentro do seu próprio objetivo Um último obstáculo a ser superado pelo PLN é continuar a evolução dentro do seu próprio conceito. O que queremos dizer é estar em constante aperfeiçoamento para aprimorar a compreensão da linguagem humana e estabelecer uma comunicação cada vez mais natural e fluida. Isso também é fundamental para atender às novas necessidades do mercado, que inclui as mudanças de comportamento do consumidor e suas expectativas junto às marcas. NOSQL Banco de Dados NoSQL (Key/Value, Orientados a Documentos e Grafos)34 O termo NoSQL (do inglês Not Only SQL) foi utilizado pela primeira vez em 1998 para designar um banco de dados não relacional de código aberto. É um termo genérico para uma classe definida de banco de dados não-relacionais e ainda faz referência aos bancos de dados relacionais mais populares do mercado: MySQL, PostgreSQL, etc. Com a popularização da internet e das redes sociais, a geração de conteúdo por dispositivos móveis e o número cada vez maior de pessoas e dispositivos conectados, faz com que o trabalho de armazenamento de dados com o objetivo de utilizá-los em ferramentas analíticas, comece a esbarrar nas questões de escalabilidade e custos de manutenção desses dados. Bancos de dados relacionais escalam, mas quanto maior o seu tamanho mais caro se torna essa escalabilidade, seja pelo custo de novas máquinas, ou pelo aumento de especialistas nos bancos de dados utilizados. Os não relacionais, permitem uma escalabilidade mais barata e menos trabalhosa, pois não exigem máquinas extremamente poderosas, e como sua manutenção é fácil permite que seja necessário um número menor de profissionais. Existem quatro principais tipos de banco de dados NoSQL, que são: Chave/Valor (Key/Value): conhecidos como tabelas de hash distribuídas, armazenam objetos indexados por chaves, e facilita a busca por esses objetos a partir de suas chaves. Vantagens: Gerência bem o tamanho, processa uma quantidade constante de leituras e escritas, é rápido e é amigo do programador. Alguns bancos que utilizam esse padrão são: DynamoDb, Couchbase, Riak, Azure, Table Storage, Redis, Tokyo Cabinet, Berkeley DB, etc. Características: - Comparando com um banco de dados relacional, é uma única tabela com duas colunas: uma chave primária e um valor. - É o banco NoSQL mais simples de todos. - Cada item no banco é apenas o nome de um atributo (chave) e seu respectivo valor. - Podemos compará-lo a um hashmap. - Os dados são acessados somente pela chave (os valores são transparentes ao sistema). - Flexibilidade na estrura dos dados. - Extremamente rápido. - Suporta quantidades extraordinariamente grande de dados. Aplicação: - Propósito geral. - Aplicações mobile (metadados do aplicativo). Orientados a Documentos: os documentos dos bancos dessa categoria, são coleções de atributos e valores, onde um atributo pode ser multi-valorado. Em geral, os bancos de dados orientados a documento não possuem esquema, ou seja, os documentos armazenados não precisam possuir estrutura em comum. 3 Fonte: http://jordankobellarz.github.io/nosql/2015/01/27/modelos-de-bancos-no-sql.html 4 Fonte: http://www.codate.com.br/banco-de-dados-nosql/ 2. Banco de Dados: Banco de dados NoSQL (conceitos básicos, bancos orientados a grafos, colunas, chave/valor e documentos); MongoDB; Linguagem SQL2008; Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 10 Essa característica faz deles boas opções para o armazenamento de dados semi estruturados. Vantagens: Modelagem de dados natural, amigo do programador, desenvolvimento rápido e amigo da web(CRUD). Alguns bancos que utilizam esse padrão são: MongoDB, CouchDB, RavenDB, etc. Características - Modelo mais próximo do relacional, enquanto um BD relacional guarda os dados em linhas e colunas, o BD orientado a documentos guarda em documentos. - Os documentos geralmente são armazenados como JSON. - São amigáveis à programação orientada a objetos, visto que cada documento é um objeto que contém vários atributos (campos) com seus respectivos tipos. - Em vez de armazenar dados correlacionados em locais diferentes, esse modelo permite que tudo fique em um só documento, eliminando a necessidade de joins. - Os campos podem mudar de um documento para outro, permitindo flexibilidade na estrutura do banco, mesmo após a implementação. - As querys são relativamente menores do que em um banco relacional. - É o mais usado dentre os bancos não relacionais. Aplicação: - É um banco de propósito geral. Famílias de Colunas: bancos relacionais normalmente guardam os registros das tabelas contiguamente no disco. Por exemplo, caso se queira guardar id, nome e endereço de usuários em um banco de dados relacional, os registros seriam: Id1, Nome1, Endereço1; Id2, Nome2, Endereço2. Essa estrutura torna a escrita muito rápida, pois todos os dados de um registro são colocados no disco com uma única escrita no banco. Essa estrutura também é eficiente caso se queira ler registros inteiros. Mas para situações onde se quer ler algumas poucas colunas de muitos registros, essa estrutura é pouco eficiente, pois muitos blocos do disco terão de ser lidos. Para esses casos onde se quer otimizar a leitura de dados estruturados, bancos de dados de famílias de colunas são mais interessantes, pois eles guardam os dados contiguamente por coluna. O exemplo anterior em um banco de dados dessa categoria ficaria: Id1, Id2; Nome1, Nome2; Endereço1, Endereço2. Os bancos de dados de famílias de colunas são mais interessantes para processamento analítico online (OLAP). O Bigtable é uma implementação da Google dessa categoria de bancos de dados. Vantagens: Gerência bem o tamanho, processa uma grande quantidade de carga via fluxos, alta disponibilidade, múltiplos data-centers e MapReduce. Outros bancos de dados que são orientados a coluna: Cassandra, Hypertable, Amazon SimpleDB, etc. Características: - É um banco chave-valor multidimensional, ou seja, cada tupla (chave, valor) pode conter várias tuplas encadeadas. - As colunas podem ser agrupadas por famílias de colunas. - O acesso é feito através da chave da coluna. Aplicação: - Propósito geral. Orientado a Grafos: diferente de outros bancos de dados NoSQL, esse está diretamente relacionado a um modelo de dados estabelecido, o modelo de grafos. A ideia desse modelo é representar os dados e / ou o esquema dos dados como grafos dirigidos, ou como estruturas que generalizem a noção de grafos. O modelo de grafos é aplicável quando “informações sobre a inter-conectividade ou a topologia dos dados são mais importantes, ou tão importante quanto os dados propriamente ditos”. O modelo orientado a grafos possui três componentes básicos: os nós (são os vértices do grafo), os relacionamentos (são as arestas) e as propriedades(ou atributos) dos nós e relacionamentos. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 11 Vantagens: Auxilia em problemas complicados com grafos e é rápido. Alguns bancos que utilizam esse padrão são: Neo4J, Infinite Graph, InforGrid, HyperGraphDB, etc. Características: - Usa grafos para armazenar os dados - Baseado na teoria dos grafos (rede de elementos interconectados) - Cada nó representa uma entidade (como uma pessoa, empresa, conta, etc.), que contém suas respectivas propriedades - Não requer operações de join - Requer uma grande curva de aprendizado - Flexibilidade na estrutura dos nós Aplicação: - Redes sociais. - Árvores genealógicas. - Controle de acesso. - Georreferenciamento. Outros Bancos NoSQL (Pouco Usuais) - Orientado a objetos. - Orientado a serviços. - Multivalor. - Multidimensional. Características em comum: - Todos esses modelos permitem flexibilidade no projeto do banco de dados. - São amigáveis à programação ágil. - Podem ser consistentes ou ter eventuais consistências. A seguir será demonstrado o Mongodb que é um dos bancos de dados NoSQL. Mongodb: um Banco de Dados NoSQL5 Vamos falar um pouco sobre o Mongodb que é um banco de dados NoSQL que não utiliza modelagem relacional, o que é para muitos uma novidade assustadora, pois estamos acostumados a utilizar o modelo relacional. Os modelos relacionais utilizam uma abordagem bidimensional que representa quantas dimensões quisermos a partir de relacionamentos com linhas e colunas. Entretanto, para consultas com grandes quantidades de dados podemos encontrar problemas de performance especialmente quando precisamos distribuir os dados em vários computadores. O Mongodb não utiliza este conceito e oferece uma alta performance em armazenamento de grandes quantidades de dados e rapidez nas consultas. Nesse post vamos falar sobre agregação(embeded), associação(reference), ids automáticos e Schemas. Os registros são documentos Fazendo uma comparação com banco de dados que utilizam modelagem relacional para persistirmos dados no banco precisamos criar uma base de dados antes, entretanto no Mongodb não precisamos criá-la pois isso é feito automaticamente. Abaixo segue dois exemplos do modelo relacional e o utilizado pelo Mongodb: SQL 5 Fonte: http://www.codate.com.br/mongodb-um-banco-de-dados-nosql/ Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 12 Associações (References) no Mongodb Fazendo uma analogia com SQL podemos dizer que no Mongodb a associação é como se fosse uma foreign key do modelo relacional. Podemos incluir referências e vincular um documento ao outro. Exemplo: Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 13 Agregação (Embeded) no Mongodb Podemos incorporar sub-documentos a um documento, como assim? Vamos utilizar o exemplo anterior, realizamos uma associação e vinculamos o documento acadêmico com o documento curso inserindo o campo curso_id. Se fossemos realizar uma consulta o banco acessaria os dois documentos, porém, poderíamos incorporar o curso diretamente no documento acadêmico o que permitiria ao banco realizar apenas uma operação de consulta. Exemplo: Id’s automáticos(ObjectId) No mongo os documentos são identificados através de um campo id que atua como uma chave primária. Cada documento possui seu id que possivelmente será único. Se o programador não informar o id do documento por padrão o mongoDB irá adicionar um campo id automaticamente que conterá um ObjectId. Exemplo: Vamos criar um documento que e salvá-lo. Repare que não identificamos um id para o documento acadêmico: Agora vamos pesquisar esse mesmo documento através do comando “db.academico.find();”. Deve aparecer uma resposta similar à seguinte (o atributo _id é um identificador exclusivo e provavelmente será diferente no seu resultado): Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 14 Schemas Nos bancos de dados que utilizam modelagem relacional é necessário realizar um esquema de tabelas e atributos que farão parte de uma estrutura de dados fixa, ou seja, se durante um projeto precisarmos inserir um novo atributo em uma tabela do banco de dados seremos obrigados a acrescentá-lo na tabela incluindo uma coluna com campos vazios. O Mongodb não exige uma estrutura fixa, assim, podemos atualizar apenas um documento, com a adição de novos campos, por exemplo, sem causar problemas na estrutura do banco de dados. Binary JSON Permite representação de algumas formas de dados que não fazem parte do padrão JSON(Date, BinData, outros). Através do comando instanceof retornará um boolean para testar se um valor é uma instância de algum tipo: acadêmico.id instanceof ObjectId Resultado: true. Através do comando typeof podemos saber qual é o tipo do atributo. typeof acadêmico.id SQL SERVER Conceito O MS SQL Server é um SGBD (Sistema Gerenciador de Banco de Dados Relacional) desenvolvido pela Microsoft, suai criação foi dada a partir de uma parceria com a Sybase, sta parceria durou até 1994, com o lançamento da versão para Windows NT e desde então a Microsoft mantém a manutenção do produto6. O Microsoft SQL Server é software bastante flexível e robusto, podendo ser utilizado em pequenas aplicações (versões express) até mesmo a aplicações com milhões de usuários e computadores acessando grandes quantidades de dados a partir da Internet ao mesmo tempo. Suas linguagens de consulta primárias são T-SQL e ANSI SQL. Por ser um banco de dados relacional, as tabelas devem ficar contidas dentro de uma base de dados, iniciaremos a explicação dos comandos a partir da criação de uma base de dados e suas tabelas. Lembrando que, as informações contidas nas tabelas devem possuir tipos específicos para seu armazenamento: Integer: para números inteiros; Float ou Real: utilizado para Números Reais; DateTime: votado a datas e horas VarChar(XX): utilizado para textos, entre os parênteses é necessário colocar o tamanho máximo que o texto pode ter, exemplo varchar(2), nesse caso o texto poderá ter no máximo 2 caracteres. Abaixo vejamos alguns exemplos desde a criação da base de dados até comandos para seleções. Para criações gerais SQL Server via T-SQL utilizamos o comando Create que tem como função criar bases de dados e tabelas. Sintaxe Geral para Criação de Bases de Dados: create database NomeBase; Para a criação uma tabela é necessário além de utilizar os comandos básicos incluir os atributos da tabela: Create table nome_tabela( Atributo 1 Atributo 2 ...) Veja um exemplo para criação de uma tabela para armazenar informações de cliente: create table clientes ( codigo int identity(1,1) not null, nome varchar(30) not null, cidade varchar(20) null, data_nasc char(1) not null, 6 https://technet.microsoft.com/pt-br/library/ms174173(v=sql.105).aspx https://msdn.microsoft.com/pt-br/library http://www.macoratti.net/14/02/sql_tsql1.htm Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 15 Primary Key(codigo) ); Inserir dados na tabela cliente: Insert into clientes (cli_codigo, cli_nome, cli_cidade, cli_sexo, cli_email) values (1,'Luis Alexandre', 'Tupã', 'M','le.boyago@gmail.com'); Ou Insert into clientes values (1,'Luis Alexandre', 'Tupã', 'M','le.boyago@gmail.com'); Visualizar, consultar, pesquisar, selecionar [SELECT]: Select cli_codigo, cli_nome, cli_cidade, cli_sexo from clientes; Ou Select * from clientes; * significa tudo Cláusula Order By A cláusula Order By muda a ordem de apresentação do resultado da pesquisa e possibilita colocar também em ordem ascendente ou descendente. Ex.: Select * from clientes order by cli_nome; Restrição Where (Quando) Com where é possivel restringir os dados (tuplas) que serão listados, ou seja, efetuar uma condição para que omesmo apareça na listagem Operadores Lógicos = igual, > maior, >= maior ou igual, < menor, <= menor ou igual Ex.: Select * from clientes where cli_codigo >= 2; Select * from clientes where cli_codigo >= 2 and cli_codigo <= 5; Select * from clientes where cli_codigo >= 2 and cli_codigo <= 5 and cli_cidade = ‘Tupã’; Select * from clientes where cli_codigo >= 2 and cli_codigo <= 5 and cli_cidade = ‘Tupã’ and cli_sexo = ‘F’; Select * from clientes where cli_codigo >= 2 and cli_codigo <= 5 and cli_cidade = ‘Tupã’ and cli_sexo = ‘F’ order by cli_nome; Drop Elimina uma tabela, seus dados, atributos e referências. Ex.: drop table clientes Alter Este comando permite inserir/eliminar atributos nas tabelas já existentes. Ex: alter table clientes add cli_email varchar (30); alter table clientes drop cli_email; --apaga este atributo modificar estrura das colunas: alter table clientes modify cli_email varchar (40); Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 16 Update Este comando permite alterar os dados da tabela Ex: update clientes set cli_sexo = 'M'; update clientes set cli_sexo = 'F' where cli_codigo =2; update clientes set cli_cidade = 'Lajeado', cli_nome = 'Giulia Santos' where cli_codigo =3; Delete Este comando permite exluir registros das tabelas Ex: delete from clientes; --exclui todos os registros da tabela delete from clientes where cli_sexo = 'F'; delete from clientes where cli_cidade like 'C%'; Truncate Este comando elimina de forma irreversível todos os dados da tabela Ex: truncate table clientes; Funções de Agregação Avg Este comando calcula o valor médio de uma determinada coluna. Ex: select avg(cli_salario) as media_salarial from clientes; Count Este comando conta as linhas de uma tabela. Ex: select count(cli_codigo) from clientes; select count(*) as quantidade_registros from clientes; Sum Este comando calcula a somatória de todos os valores de uma coluna. Ex: select sum(cli_salario) as valor_total from clientes; select sum(cli_salario) as valor_total from clientes where cli_sexo = 'F'; Min Esta função sql retorna o valor mínimo encontrado em uma coluna. Ex: select min(cli_salario) as valor_minimo from clientes; select min(cli_salario) as salario_minimo from clientes where cli_codigo in(1,3) Max Esta função sql retorna o valor máximo encontrado em uma coluna. Ex: select max(cli_salario) as valor_minimo from clientes; select max(cli_salario) as salario_minimo from clientes where cli_codigo in(1,3) Like – Próximo a Esta função sql retorna um valor “próximo a” alguma palavra ou número digitado, para isso utiliza de caractere coringa “%” Ex: select cli_nome from like ‘ana%’; - ele retorna todos os clientes que iniciem seus nomes com ana select cli_nome from like ‘%ana%’; - ele retorna todos os clientes que tenham em seus nomes as letras ana exemplo Ana Lucia, Mariana Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 17 Funções Escalares de Texto Upper Esta função sql converte para maiúsculas todos os caracteres. Ex: select cli_codigo, upper(cli_nome) ,cli_cidade, cli_sexo, cli_email, cli_salario from clientes; Lower Esta função sql converte para minúsculas todos os caracteres. Ex: select cli_codigo, upper(cli_nome) as Nome, cli_cidade, cli_sexo, lower(cli_email), cli_salario from clientes; Agrupar por. Agrupar dados para qualquer banco de dados. Ex.: select cli_sexo as Sexo, count(cli_sexo) as quantos from clientes group by cli_sexo; Resultado: Retorna quantos clientes são do sexo masculino e quantos são do sexo feminino. Média select AVG (cli_salario) from clientes group by cli_sexo; Neste exemplo acima irá retornar a media salarial agrupando por sexo Tabela de Cidades -- para evitar redundância de dados CREATE table cidades ( cid_codigo int identity(1,1) not null, cid_nome varchar(30), primary key (cid_codigo) ); Chave Estrangeira --Foreign Key Efetua ligações entre as tabelas. Implementa integridade dos dados. Alter table clientes Add foreign key (cli_codcid) references cidades (cid_codigo); Com constraint Alter table clientes Add constraint chave_estrang_cidade foreign key (cli_codcid) references cidades (cid_codigo) on delete RESTRICT on update CASCADE; Para apagar uma chave estrangeira: alter table clientes drop FOREIGN key chave_estrang_cidade; Union - Union All Auto Incremento Preenche automaticamente o conteúdo de um campo inteiro, toda vez que um novo registro for inserido na tabela. create table clientes ( cli_codigo int identity(1,1) not null, cli_nome varchar(30) not null, cli_cidade varchar(20), cli_sexo char(1), Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 18 primary key (cli_codigo) ); Veja que para inserir você não precisa mais colocar o código. Ex.: Insert into clientes (cli_nome, cli_cidade, cli_sexo, cli_email, cli_salario, cli_codcid, cli_indicador) values ('Selvino Santos', 'Lajeado','M','selvino@infotarde.com.br',50,1,’xzxzxzxzx’); Assim como no em qualquer SGBD voltado a linguagem SQL os comados são muito semelhantes, a seguir veremos alguns comandos básicos. Criar uma Base de Dados (Criar um Banco de Dados) create database locadora; Criar uma tabela chamada clientes e filmes: create table clientes ( cli_codigo int, cli_nome varchar(30), cli_cidade varchar(20), cli_sexo char(1) ); create table filmes ( fil_codigo int, fil_nome varchar(30), fil_genero varchar(15), fil_preco numeric(4,2) ); Inserir dados na tabela cliente: Insert into clientes (cli_codigo, cli_nome, cli_cidade, cli_sexo, cli_email) values (1,'Luis Alexandre', 'Tupã', 'M','le.boyago@gmail.com'); Ou Insert into clientes values (1,'Luis Alexandre', 'Tupã', 'M','le.boyago@gmail.com'); SQL Server Management Studio O SQL Server Management Studio é um ambiente integrado para acessar, configurar, gerenciar, administrar e desenvolver todos os componentes do SQL Server. O SQL Server Management Studio combina um amplo grupo de ferramentas gráficas com diversos editores de script avançados para dar acesso ao SQL Server para os desenvolvedores e administradores de todos os níveis de habilidade. O SQL Server Management Studio combina os recursos do Enterprise Manager, Query Analyzer e Analysis Manager, incluídos em versões anteriores do SQL Server, em um único ambiente. Além disso, o SQL Server Management Studio trabalha com todos os componentes do SQL Server, como Reporting Services, Integration Servicese SQL Server Compact 3.5 SP2. Desenvolvedores terão uma experiência familiar e os administradores de banco de dados terão um único utilitário abrangente que combina ferramentas gráficas fáceis de usar com sofisticadas capacidades de script. - Para acessar o SQL Server Management Studio Na barra de ferramentas, clique em Iniciar, aponte para Todos os Programas, aponte para Microsoft SQL Server SQL Server 2008 e clique em SQL Server Management Studio. Com o SQL Server Management Studio, o desenvolvedor e o administrador de banco de dados podem desenvolver ou administrar quaisquer componentes do Mecanismo de Banco de Dados. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 19 Abrindo o SQL Server Management Studio Para abrir o SQL Server Management Studio No menu Iniciar, aponte para Todos os Programas, aponte para Microsoft SQL Server 2014 e clique em SQL Server Management Studio. O SQL Server Management Studio não é instalado por padrão. Se o Management Studio não estiver disponível, instale-o executando a Instalação. O Management Studio não está disponível com o SQL Server Express. O Management Studio Express está disponível como um download gratuito do Centro de Download da Microsoft, mas tem uma interface de usuário diferente do que está descrito neste tutorial. Na caixa de diálogo Conectar ao Servidor,verifique as configurações padrão e depois clique em Conectar. Para fazer a conexão, a caixa de diálogo Nome do servidor deve conter o nome do computador em que o SQL Server está instalado. Se o Mecanismo de Banco de Dados for uma instância nomeada, a caixa Nome do Servidor também deverá conter o nome da instância no formato <computer_name>\<instance_name>. Componentes do Management Studio O Management Studio apresenta informações em janelas dedicadas a tipos específicos de informações. Informações de banco de dados são exibidas no Pesquisador de Objetos e janelas de documentos. Pesquisador de Objetos é uma exibição de árvore de todos os objetos de banco de dados em um servidor. Isso pode incluir os bancos de dados do Mecanismo de Banco de Dados do SQL Server, Analysis Services, Reporting Services e Integration Services. O Pesquisador de Objetos inclui informações de todos os servidores aos quais está conectado. Ao abrir o Management Studio, você é solicitado a conectar o Pesquisador de Objetos às configurações utilizadas na última vez. Você pode clicar duas vezes em qualquer componente de Servidores Registrados e conectar-se a ele, mas não é necessário registrar um servidor para fazer a conexão. A janela de documentos é a maior parte do Management Studio. As janelas de documentos podem conter editores de consulta e janelas de navegador. Por padrão, é exibida a página de Resumo, conectada à instância do Mecanismo de Banco de Dados no computador atual. Exibindo Janelas Adicionais Para exibir a janela de Servidores Registrados No menu Exibir, clique em Servidores Registrados. A janela de Servidores Registrados será exibida acima do Pesquisador de Objetos. Servidores Registrados relaciona servidores gerenciados frequentemente. Você pode adicionar ou remover servidores dessa lista. Os únicos servidores relacionados serão as instâncias do SQL Server no computador em que você estiver executando o Management Studio. Se seu servidor não aparecer em Servidores Registrados, clique com o botão direito do mouse em Mecanismo de Banco de Dados e clique em Atualizar Registro do Servidor Local. Transact-SQL Para muitos SQL é igual em qualquer banco de dados. E quem acha isso não está de todo errado. Pra quem não sabe SQL é um acrônomo para Structured Query Language ou em português Linguagem de consulta estruturada. SQL é a linguagem utilizada nos bancos de dados e apesar de ser padronizada pela ANSI e ISO ela possui muitas variações e cada uma com sua peculiaridade como: PL/SQL (Oracle) T-SQL (Microsoft) Entre outras…. Bom mas vamos manter o foco vamos falar de T-SQL (Transaction – SQL). T-SQL é a variação de SQL de propriedade da Microsoft e Sysbases Não significa que a Microsoft tem um SQL só dela. T-SQL (e todas as variações de SQL) tem que seguir todo o padrão Ansi e Iso, porém tem algumas diferenças ou funcionalidades que as outras variações não tem e vice-versa. A linguagem SQL, comumente referenciada como padrão SQL ANSI/ISO e administrada pelo National Committee on Information Technology Standards (NCITS), é a linguagem universal utilizada pelos SGBDs para acessar e manipular dados e objetos em um banco de dados. No entanto, como os fabricantes estão livres para fazer suas próprias adaptações, esta possui vários “dialetos”. Muitos SGBDs, entre eles o SQL Server, utilizam o mesmo tipo de dialeto como sua linguagem primária de acesso a dados. O padrão SQL Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 20 possui várias versões (cada uma tendo o ano em que foi adotada), e o padrão SQL-92 (adotado em 1992) é o mais aceito entre os SGBDs. O SQL Server possui seu próprio “dialeto” da linguagem SQL – o Transact-SQL (T-SQL). Ou seja, a linguagem Transact-SQL segue o padrão SQL-92, mas adiciona alguns atributos (ou funcionalidades) que a tornam exclusiva ao SQL Server. Por exemplo, a cláusula TOP em um comando SELECT só existe no Transact-SQL. Se você pegar a instrução a seguir e executá-la no MySQL, verá que esta gerará um erro. SELECT TOP 10 * FROM <tabela> Isto acontece porque a cláusula TOP só existe na linguagem Transact-SQL, que é exclusiva do SQL Server. A instrução correspondente para o MYSQL seria: SELECT * FROM <tabela> LIMIT 10 Você usa o T-SQL para criar, alterar e excluir objetos, bem como para inserir ou consultar dados em um banco de dados SQL Server. Por exemplo, quando você escreve uma procedure no Query Analyzer, você está usando a linguagem Transact-SQL. Quando você usa os comandos CREATE TABLE, CREATE VIEW, CREATE PROCEDURE ou manipula dados em um banco de dados SQL Server usando os comandos INSERT, SELECT, DELETE e UPDATE, você está usando a linguagem Transact-SQL. A seguir um resumo dos principais comandos e recursos da linguagem T-SQL. Variáveis A T-SQL suporta variáveis e você pode usá-las para armazenar valores. --Sintaxe: ---declaração DECLARE @variable data-type ---Atribuição SET @variavel='valor' ---Retornar valor SELECT @variavel ---Exemplo DECLARE @MeuNome varchar(20) SET @MeuNome='Macoratti' SELECT @MeuNome Uma variável local Transact-SQL é um objeto que pode conter um valor de dados de um tipo específico. As variáveis em lotes e scripts são normalmente usadas: Como um contador, para contar o número de vezes que um loop é executado ou controlar quantas vezes o loop é executado; Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 21 Para reter um valor de dados a ser testado por uma instrução de controle de fluxo; Para salvar um valor de dados a ser retornado por um código de retorno de procedimento armazenado ou valor de retorno de função; Uma instrução DECLARE inicializa uma variável Transact-SQL por: Atribuição de um nome. (O nome deve ter uma única @ como o primeiro caractere.) Atribuição de um tipo de dados fornecido por sistema ou definido pelo usuário e um tamanho. Para variáveis numéricas, precisão e escala também são atribuídas. Para variáveis do tipo XML, uma coleção de esquema opcional pode ser atribuída. Definição do valor como NULL; Exemplo: DECLARE @Contador int; Quando uma variável é primeiramente declarada, seu valor é definido como NULL. Para atribuir um valor à uma variável, use a instrução SET. Este é o método preferido de atribuir um valor a uma variável. Uma variável também pode ter um valor atribuído sendo referenciado na lista selecionada de uma instrução SELECT. O comando GO sinaliza o final de um lote de instruções Transact-SQL para os utilitários do SQL Server. Sintaxe: GO [contador] Onde: Contador - É um número inteiro positivo. O lote que precede GO será executado pelo número de vezes especificado. GO não é uma instrução Transact-SQL; é um comando reconhecido pelos utilitários sqlcmd e osql e pelo Editor de códigos SQL Server Management Studio. GO é um comando de utilitário que não exige nenhuma permissão. Pode ser executado por qualquer usuário. Uma instrução Transact-SQL não pode ocupar a mesma linha que um comando GO. IF...ELSE é um controle condicional de fluxo básico usado na T-SQL. Impõe condições na execução de uma instrução Transact-SQL. A instrução que segue uma palavra- chave IF e sua condição será executada se a condição for satisfeita: a expressão Booleana retorna TRUE. A palavra-chave opcional ELSE introduz outra instrução que será executada quando a condição IF não for satisfeita: a expressão Booleana retorna FALSE. Sintaxe: IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ] Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 22 Uma construção IF...ELSE pode ser usada em lotes, em procedimentos armazenados e em consultas ad hoc. Quando essa construção é usada em um procedimento armazenado, ela normalmente é usada para testar a existência de algum parâmetro. BEGIN...END engloba uma série de instruçõesTransact-SQL de modo que um grupo de instruções possa ser executado. BEGIN e END são palavras-chave da linguagem de controle de fluxo. Sintaxe: BEGIN { sql_statement | statement_block } END Os blocos BEGIN...END podem ser aninhados. Embora todas as instruções Transact-SQL sejam válidas em um bloco BEGIN...END, certas instruções não devem ser agrupadas no mesmo lote ou bloco de instrução. A instrução WHILE repete uma instrução ou bloco de instruções desde que a condição especificada permaneça verdadeira. Ela define uma condição para a execução repetida de uma instrução ou um bloco de instruções SQL. As instruções serão executadas repetidamente desde que a condição especificada seja verdadeira. A execução de instruções no loop WHILE pode ser controlada internamente ao loop com as palavras- chave BREAK e CONTINUE. WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE } Argumentos Boolean_expression É uma expressão que retorna TRUE ou FALSE. Se a expressão booleana contiver uma instrução SELECT, a instrução SELECT deverá ser incluída entre parênteses. {sql_statement | statement_block} É qualquer instrução Transact-SQL ou agrupamento de instruções, conforme definido com um bloco de instruções. Para definir um bloco de instruções, use as palavras-chave BEGIN e END de controle de fluxo. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 23 BREAK Provoca uma saída do loop WHILE mais interno. Todas as instruções que apareçam depois da palavra- chave END, que marca o final do loop, serão executadas. CONTINUE Faz com que o loop WHILE seja reiniciado, ignorando todas as instruções depois da palavra-chave CONTINUE Se dois ou mais loops WHILE estiverem aninhados, o BREAK interno será encerrado para o próximo loop mais externo. Todas as instruções após o fim da primeira execução do loop interno e o loop mais externo seguinte serão reiniciadas. Exemplos: 1- Loop WHILE 2- Loop WHILE usando BREAK Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 24 2- Loop WHILE usando BREAK e CONTINUE Dessa forma um programa poderá executar uma instrução BREAK se, por exemplo, não houver outras linhas a serem processadas. Uma restrição CONTINUE pode ser executada se, por exemplo, for necessário prosseguir com a execução do código. A expressão CASE é usada para avaliar várias condições e retornar um valor único para cada condição. Por exemplo, ela permite mostrar um valor alternativo a ser exibido dependendo do valor de uma coluna. Essa alteração nos dados é temporária. Portanto, não há nenhuma alteração permanente nos dados. A expressão CASE consiste em: A palavra-chave CASE. O nome da coluna a ser transformada. As cláusulas WHEN que especificam as expressões a serem pesquisadas e as cláusulasTHEN que especificam as expressões pelas quais substituí-las. Uma cláusula ELSE opcional que define a expressão retornada, se nenhuma operação de comparação for avaliada como TRUE. A palavra-chave END. Uma cláusula AS opcional que define um alias para a expressão CASE. Um uso comum da expressão CASE é substituir códigos ou abreviações por valores mais legíveis Exemplo: O exemplo seguinte usa a função CASE para alterar a exibição de categorias dos produtos para torná- las mais compreensíveis. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 25 A expressão CASE tem dois formatos: A expressão CASE simples compara uma expressão com um conjunto de expressões simples para determinar o resultado. A expressão CASE pesquisada avalia um conjunto de expressões booleanas para determinar o resultado. Os dois formatos dão suporte a um argumento ELSE opcional. CASE pode ser usada em qualquer instrução ou cláusula que permita uma expressão válida.(Select,Update,Delete,etc.) Uma transação (Transaction) é uma única unidade de trabalho. Se uma transação tiver êxito, todas as modificações de dados feitas durante a transação estarão confirmadas e se tornarão parte permanente do banco de dados. Se uma transação encontrar erros e precisar ser cancelada ou revertida, todas as modificações de dados serão apagadas. SQL Server opera nos modos de transação a seguir. Transações de confirmação automática : Cada instrução individual é uma transação. Transações explícitas : Cada transação é iniciada explicitamente com a instrução BEGIN TRANSACTION e finalizada explicitamente com uma instrução COMMIT ou ROLLBACK. Transações implícitas : Uma transação nova é iniciada implicitamente quando a transação anterior é concluída, mas cada transação é explicitamente concluída com uma instrução COMMIT ou ROLLBACK. Transações de escopo de lote : Aplicável apenas a MARS (Conjuntos de Resultados Ativos Múltiplos), uma transação Transact-SQL explícita ou implícita iniciada em uma sessão MARS se torna uma transação de escopo de lote. Uma transação de escopo de lote não confirmada ou revertida, quando um lote é concluído, é revertida automaticamente pelo SQL Server A característica de uma transação e sua diferença para uma execução em lote é que ela pode desfazer todas as operações realizada desde o início da transação usando a instruçãoROLLBACK TRANSACTION. Para indicar o início de uma transação usamos a instrução BEGIN TRANSACTION OU BEGIN TRAN Esta instrução marca o ponto inicial de uma transação local explícita. BEGIN TRANSACTION incrementa @@TRANCOUNT em 1. Para confirmar a execução das operações realizadas na transação usamos a instrução COMMIT TRANSACTION OU COMMIT TRAN Esta instrução marca o término de uma transação implícita ou explícita que teve êxito. Se@@TRANCOUNT for igual a 1, COMMIT TRANSACTION transformará todas as modificações de dados executadas desde o início da transação em parte permanente do banco de dados, liberará os recursos ocupados pela transação e decrementará @@TRANCOUNT para 0. Se@@TRANCOUNT for maior que 1, COMMIT TRANSACTION decrementará @@TRANCOUNT apenas de 1 e a transação continuará ativa. Exemplo: O exemplo acima abre o banco de dados Agenda e inicia uma transação -BEGIN TRAN Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 26 A seguir atualiza a coluna nome para 'Macorati' quando o Id for igual a 1 Depois atualiza a coluna para 'Jose Carlos Macoratti' quando o Id for igual a 1 Ao final confirmamos as operações e encerramos a transação atualizando o banco de dados comCOMMIT TRAN Para desfazer as operações realizadas desde o início da transação usamos a instrução ROLLBACK TRANSACTION OU ROLLBACK TRAN. Esta instrução reverte uma transação explícita ou implícita ao começo da transação ou a um ponto de salvamento dentro da transação. Você pode usar ROLLBACK TRANSACTION para apagar todas as modificações de dados feitas desde o começo da transação ou até um ponto de salvamento. Ela também libera recursos mantidos pela transação. Exemplo: Suponha que, por qualquer motivo, a segunda instrução de atualização deve atualizar exatamente cinco linhas. Se @@ROWCOUNT, que controla o número de linhas afetadas por cada instrução, for igual a cinco, a transação será confirmada caso contrário ele será cancelada. A declaração ROLLBACK TRAN "desfaz" todo o trabalho desde a correspondente instruçãoBEGIN TRAN. Ela não vai executar qualquer instrução de atualização. Note que o Query Analyzer irá mostrar-lhe mensagens indicando que linhas foram atualizadas, mas você pode consultar o banco de dados para verificar se as modificações realmente ocorreram. Uma instrução ROLLBACK TRANSACTION não produz nenhuma mensagem para o usuário. Se forem necessários avisos em procedimentos armazenados ou Triggers, use as instruçõesRAISERROR ou PRINT. RAISERROR é a instrução preferida para indicar erros. Instruções ROLLBACK TRANSACTION em procedimentos armazenados não afetam instruçõessubsequentes no lote que chamou o procedimento; instruções subsequentes no lote são executadas. Instruções ROLLBACK TRANSACTION em Triggers finalizam o lote contendo a instrução que ativou o trigger; instruções subsequentes no lote são executadas. Procedimento armazenado ou Stored Procedure é uma coleção de comandos SQL executados contra um banco de dados que encapsula tarefas repetitivas, aceita parâmetros de entrada e retorna um valor de status (para indicar aceitação ou falha na execução). O procedimento armazenado pode reduzir o tráfego na rede, visto que os comandos são executados diretamente no servidor. Além de melhorar a performance, criar mecanismos de segurança entre a manipulação dos dados do Banco de Dados. Para criar uma Stored Procedure usamos a instrução : CREATE PROCEDURE que cria um procedimento armazenado Transact-SQL ou CLR (Common Language Runtime) no SQL Server. Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 27 Assim Procedimentos armazenados são semelhantes a procedimentos em outras linguagens de programação no sentido de que podem: Aceitar parâmetros de entrada e retornar vários valores no formulário de parâmetros de saída para o procedimento de chamada ou lote. Conter instruções de programação que executam operações no banco de dados, inclusive chamar outros procedimentos. Retornar um valor de status a um procedimento de chamada ou lote para indicar êxito ou falha (e o motivo da falha). Quando um procedimento é executado pela primeira vez, ele é compilado para determinar um plano de acesso ideal para recuperar os dados. As execuções subsequentes do procedimento poderão reutilizar o plano já gerado se ele ainda estiver no cache de planos do Mecanismo de Banco de Dados. Um ou mais procedimentos podem ser executados automaticamente quando o SQL Server é iniciado. Os procedimentos devem ser criados pelo administrador do sistema no banco de dados mestre e executados com função de servidor sysadmin como um processo de segundo plano. A instrução CREATE PROCEDURE não pode ser combinada com outras instruções Transact-SQL em um único lote. Exemplo: A seguir temos um exemplo de como criar stored procedures ou procedimentos armazenados no SQL Server usando o banco de dados Clientes.mdf e a tabela Contatos. Abra o DataBase Explorer e após expandir os objetos do banco de dados Clientes.mdf clique com o botão direito do mouse sobre o objeto Stored Procedures e selecione a opção Add New Stored Procedure: No editor do SQL Server vamos criar a stored procedure exibeContatos que irá retornar todos os contatos cadastrados na tabela Contatos. Digite o comando conforme acima e clique no botão Save para salvar a stored procedure no banco de dados; A instrução SQL usada é: SELECT * from Contatos Repita o procedimento agora para criar a stored procedure SelecionaContatosPorIdade onde iremos retornar todos os contatos com idade superior a uma idade definida. Observe que criarmos o parâmetro idade do tipo int para ser usado na cláusula WHERE. O comando SQL usado é: Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 28 SELECT * from Contatos WHERE idade > @ idade Novamente repita o processo para criar a stored procedure selecionaContatosPorCidade que irá retornar os contados para uma determinada cidade; Observe que criarmos o parâmetro cidade do tipo varchar para ser usado na cláusula WHERE. O comando SQL usado é: SELECT * from Contatos WHERE cidade = @ cidade Ao final teremos as stored procedures criadas no banco de dados e prontas para uso conforme a figura abaixo: Criando um Banco de Dados Antes de começar: - Limitações e Restrições No máximo 32.767 bancos de dados podem ser especificados em uma instância do SQL Server. - Pré-requisitos A instrução CREATE DATABASE deve ser executada em modo de confirmação automática (o modo padrão de gerenciamento de transações) e não é permitida em uma transação explícita ou implícita. - Recomendações O backup do banco de dados mestre deve ser feito sempre que um banco de dados de usuário for criado, modificado ou descartado. Ao criar um banco de dados, torne os arquivos de dados tão grandes quanto possível, com base na quantidade máxima de dados que você espera ter no banco de dados. - Segurança Permissões Requer a permissão CREATE DATABASE no banco de dados mestre, ou requer a permissão CREATE ANY DATABASE ou ALTER ANY DATABASE. Para manter controle sobre o uso do disco em uma instância do SQL Server, a permissão para criar bancos de dados geralmente é limitada a algumas contas de logon. - Usando o SQL Server Management Studio Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 29 Para criar um banco de dados No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda-a. Clique com o botão direito do mouse em Bancos de Dados e clique em Novo Banco de Dados. Em Novo Banco de Dados, digite um nome de banco de dados. Para criar o banco de dados aceitando todos os valores padrão, clique em OK; do contrário, passe para as etapas opcionais a seguir. Para alterar o nome do proprietário, clique em (…) para selecionar outro proprietário. System_CAPS_ICON_note.jpg Observação: a opção Usar indexação de texto completo sempre está marcada e esmaecida porque, a partir do SQL Server 2008, todos os bancos de dados de usuários são habilitados para texto completo. Para alterar os valores padrão dos arquivos de dados primários e de log de transação, na grade Arquivos de banco de dados , clique na célula apropriada e digite o novo valor. Para obter mais informações, consulte Add Data or Log Files to a Database. Para alterar o agrupamento do banco de dados, selecione a página Opções e depois marque um agrupamento na lista. Para alterar o modelo de recuperação, selecione a página Opções e marque um modelo de recuperação na lista. Para alterar opções de banco de dados, selecione a página Opções e depois modifique as opções de banco de dados. Para obter uma descrição de cada opção, consulte Opções ALTER DATABASE SET (Transact-SQL). Para adicionar um novo grupo de arquivos, clique na página Grupos de Arquivos . Clique em Adicionar e, em seguida, digite os valores para o grupo de arquivos. Para adicionar uma propriedade estendida ao banco de dados, selecione a página Propriedades Estendidas . Na coluna Nome , digite um nome para a propriedade estendida. Na coluna Valor , digite o texto da propriedade estendida. Por exemplo, digite uma ou mais instruções que descrevem o banco de dados. Para criar o banco de dados, clique em OK. - Usando Transact-SQL Para criar um banco de dados Conecte-se ao Mecanismo de Banco de Dados. Na barra Padrão, clique em Nova Consulta. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo cria o banco de dados Sales. Como a palavra-chave PRIMARY não é usada, o primeiro arquivo (Sales_dat) torna-se o arquivo primário. Como nem MB nem KB é especificado no parâmetro SIZE do arquivo Sales_dat , ele usa MB e é alocado em megabytes. O backup do banco de dados Sales_log é alocado em megabytes porque o sufixo MB é explicitamente declarado no parâmetro SIZE . Transact-SQL USE master ; GO CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ; GO Apostila gerada especialmente para: Luis Gustavo Campos 056.203.551-60 30 Excluir Banco de dados - Antes de começar Limitações e restrições. Bancos de dados de
Compartilhar