Buscar

07-apostila-versao-digital-conhecimentos-de-informatica-056 203 551-60-1626807059

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 307 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 307 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 307 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais