Escolar Documentos
Profissional Documentos
Cultura Documentos
Gustavo Aguilar
2022
SUMÁRIO
Capítulo 1. Introdução ao Mundo dos Dados ...................................................... 6
A Linguagem SQL...................................................................................................................... 66
2
Capítulo 5. Introdução ao Microsoft SQL Server ............................................ 81
Ferramentas Client................................................................................................................... 84
3
Capítulo 9. Backup no SQL Server ...................................................................... 125
4
1
Capítulo 1. Introdução ao Mundo dos Dados
Dado, Metadado e Pirâmide do Conhecimento
Dados podem ser entendidos com uma coleção de fatos em uma
forma bruta ou desorganizada, como números ou caracteres. Dessa forma,
entende-se que está sendo feita referência a dados brutos (raw data), ou
seja, dados não tratados. Sem contexto, os dados normalmente têm pouco
significado. Por exemplo, 01102008 é apenas uma sequência de números
sem importância aparente.
6
Figura 1 – Pirâmide do Conhecimento.
Fonte: o autor.
7
ponto da pirâmide que processos automatizados, robotizados ou de
inteligência artificial entram. Esses, possuindo insumos suficientes para
tomar uma decisão ou fazer um julgamento de uma determinada situação,
buscam para além disso, gerar mais sabedoria agregada dentro do
ecossistema em que estão inseridos.
Tipos de Dados
Quando se fala em dados estruturados por trás está implicitamente
envolvida a definição do modelo de dados, seja ele gráfico ou não. Essa
definição contém quais campos de dados serão provisionados, como esses
dados serão armazenados, ou seja, o tipo de dados dele (numérico, moeda,
alfabético, data, binário etc.) e quaisquer restrições na entrada de dados
(quantidade de caracteres, precisão, obrigatoriedade etc.). Com isso, pode-
se perceber que dados estruturados são aqueles organizados e
representados com uma estrutura rígida, a qual foi previamente planejada
para armazená-los (MONTEIRO, 2019). Nesse planejamento, um dos pontos
principais é definir acerca de cada campo de informação que o conjunto de
dados irá conter.
8
Figura 2 – Dados estruturados em flat files e em planilha eletrônica.
Fonte: o autor.
9
Figura 3 - Informações não estruturadas de relacionamentos em uma rede
social.
10
Figura 4 - Exemplo de formato XML.
11
Figura 6 - O que acontece em 1 minuto de Internet.
Fonte: o autor.
12
Dentro do processo macro de planejamento, implantação e
gerenciamento de soluções de dados mostrado acima, pode-se perceber a
necessidade da participação dos seguintes perfis de profissionais de dados:
– Modelos de dados;
– Aspectos operacionais;
13
– Segurança de acesso.
14
– Suporte a soluções de processamento de linguagem natural,
reconhecimento de voz e imagem;
Fonte: o autor.
Escalabilidade e Elasticidade
Escalabilidade é a capacidade de escalar um ambiente, ou seja, de
adicionar mais recursos computacionais a ele, tais como:
15
Na escalabilidade vertical, adiciona-se mais recursos (CPU, RAM etc.)
aos integrantes do ambiente, sem alterar a quantidade de integrantes do
ambiente. Ela é também chamada de scale up.
Fonte: Microsoft.
Fonte: Microsoft.
16
uso. Normalmente controlada por ferramentas de monitoramento de
sistema, a computação elástica utiliza-se do conceito de auto scalling para
ajustar a quantidade de recursos alocados à quantidade de recursos
realmente necessários, sem interromper as operações.
Fonte: AWS.
17
• TRANSACIONAL: baseado em transações (unidade de trabalho
pequena e discreta) e também conhecido como OLTP (Online
Transactional Processing);
Fonte: Microsoft.
18
Um exemplo de uso eficaz do processamento em lote seria uma
conexão com um sistema mainframe. Grandes quantidades de dados
precisam ser transferidas para um sistema de análise de dados e os dados
não são em tempo real. Um exemplo de processamento em lote ineficaz
seria transferir pequenas quantidades de dados em tempo real, como um
ticker financeiro.
Fonte: Microsoft.
19
Figura 14 – Workload de streaming.
Fonte: Microsoft.
20
• Desempenho:
• Análise:
Fonte: o autor.
21
Figura 16 – Escalabilidade em workloads OLTP / STREAMING.
Fonte: o autor.
22
2
Capítulo 2. Introdução a Banco de Dados
Conceitos Básicos de Banco de Dados - Parte I
Recapitulando que um dado é algo que qualifica ou é qualificado,
quantifica ou é quantificado, que pode ser registrado, que contém um fato
com significado implícito, sendo uma característica, elemento ou
quantidade conhecida.
24
Os SGBDs podem ser de variados tipos, sendo os mais conhecidos os
relacionais e os não relacionais (NOSQL).
Fonte: o autor.
25
Figura 18 – Processos de duas instâncias rodando em um servidor.
Fonte: o autor.
Fonte: o autor.
Fonte: o autor.
26
Figura 20 – Dados estruturados em uma tabela no SQL Server.
Fonte: o autor.
27
Figura 21 – Amostra de parte de um esquema físico no SQL Server.
Fonte: o autor.
Fonte: o autor.
28
Paulo Cougo (1997), um modelo de dados é uma “representação abstrata e
simplificada dos dados de um sistema real, com a qual se pode explicar ou
testar o seu comportamento, em seu todo ou em partes”.
Fonte: o autor.
29
✓ Análise estatística, relatórios e recursos de mineração de
dados;
Fonte: www.astera.com.
Fonte: Seagate.
30
O Gartner define Big Data como “ativos de informações de grande
volume, alta velocidade e/ou alta variedade que exigem formas inovadoras e
de baixo custo de processamento de informações, que permitem uma visão
aprimorada, tomada de decisão e automação de processos”:
31
Em sumo, Big Data é um campo ou área que trata de maneiras de
analisar, extrair sistematicamente informações ou, de outra forma, lidar com
conjuntos de dados que são muito grandes ou complexos para serem
tratados por softwares de aplicativos de processamento de dados
tradicionais. Big Data é mais que um produto de software ou hardware. É um
conjunto de tecnologias, processos e práticas que permitem às empresas
analisarem dados que antes não tinham acesso e tomar decisões, ou mesmo
gerenciar atividades de forma muito mais eficiente.
32
Figura 26 – Os 7Vs do Big Data.
33
Usando-se serviços de nuvem, as tecnologias e conceitos de data
warehouse e data lake ganharam uma amplitude e atualmente temos o
conceito de Data Warehouse Moderno (MDW). Nesse viés, um MDW utiliza
recursos em nuvem para reunir facilmente, e em tempo mais ágil, todos os
dados em qualquer escala, sejam estruturados, não estruturados ou
semiestruturados. Com isso, traz agilidade, escalabilidade, facilidade, mais
performance e redução expressiva de custos operacionais, além de permitir
insights para tomada de decisões de negócios mais rápidas.
Fonte: Microsoft.
34
E como começar a construir um modelo de dados? Entendendo quais
etapas são necessárias para um projeto de banco de dados e quais os
insumos e produto final de cada uma delas. Nesse ínterim, o ponto chave, e
de partida, é iniciar o processo de modelagem de dados. De uma forma
geral, o processo de modelagem de dados pode ser pensado em quatro
grandes etapas:
i. Descrição do minimundo;
Fonte: o autor.
35
Na prática, essa definição é feita com uma entrevista e coleta de
informações. O resultado, ou seja, o minimundo, nada mais é do que uma
descrição textual ou gráfica acerca do entendimento das regras do seu
funcionamento e dos dados fundamentais.
36
Na etapa de descrição do minimundo, já vimos que o objetivo é
entender essa porção da realidade, seus requisitos e regras de
funcionamento, suas interações internas e interações com o mundo externo.
Essa etapa é a que possui o maior grau de abstração, não se preocupando
com os detalhes de modelagem (se é relacional, não-relacional etc.),
armazenamento (estruturado, não estrutura etc.) ou da tecnologia a ser
usada (SQL Server, MongoDB, Oracle, Hadoop, Fileshare etc.).
Fonte: o autor.
37
3
Capítulo 3. Sistemas Gerenciadores de Bancos de Dados
Antepassados dos SGBDs
Um dos principais antepassados dos SGBDs é o Sistema de Cartão
Perfurado. Um cartão perfurado é um pedaço de papel rígido que contém
dados digitais representados pela presença ou ausência de furos em
posições pré-definidas;
39
Um dos principais sucessores do sistema de cartão perfurados é o
Sistema de Arquivos. Um arquivo de computador é um recurso para
armazenamento de dados, que está disponível a um programa de
computador e é normalmente baseado em algum tipo de armazenamento
durável.
Fonte: o autor.
40
✓ Dificuldade de acesso aos dados: acesso sequencial;
41
✓ Prover independência de dados (lógica e física) para as aplicações;
42
as operações de busca dos dados no disco é feita. A estrutura
detalhada e a organização de cada estrutura de armazenamento são
armazenadas no catálogo (dicionário de dados do banco de dados).
✓ Suporte para múltiplas visões dos dados: cada usuário pode ter ou
solicitar diferentes perspectivas ou visões do banco de dados. Visões
podem ser um subconjunto de um banco de dados (algumas tabelas,
por exemplo) ou uma visão virtual dos dados (por exemplo, com
algumas colunas apenas da tabela ou parte dos dados).
43
✓ Nível Interno ou Físico: descreve como os dados estão de fato
armazenados no banco de dados.
codigo : number;
nome : string;
sexo : string;
endereço : string;
end;
44
✓ Independência de Dados Física: capacidade de modificar o
esquema físico sem precisar alterar a programação de acesso aos
dados. Por exemplo, modificações para melhorar o desempenho.
Tipos de SGBDs
Ao longo da história e atualmente, pode-se encontrar os seguintes
tipos de Sistemas Gerenciadores de Bancos de Dados:
Fonte: o autor.
Nesse tipo de SGBD, as queries tinham que processar uma tupla por
vez, percorrendo a estrutura hierárquica.
45
Figura 34 – Sequência de processamento de uma query em um SGBD
Hierárquico.
Fonte: o autor.
Fonte: o autor.
46
Bastante utilizado em sistemas para computadores de grande porte
(mainframe). A estrutura de armazenamento é formada de entidade
(registros), atributos (itens de dados), tipo de registro e ocorrência
do registro. Assim como no hierárquico, as aplicações devem ser
construídas para atravessar um conjunto de registros interligados
previamente.
Exemplos:
Fonte: o autor.
47
para outros objetos, e as aplicações acessam os dados usando
navegação de programação. Exemplos: ORION, GemStone e Caché.
Fonte: www.geeksforgeeks.org.
48
Exemplos: Cassandra, MongoDB, CouchDB, DynamoDB, Hbase,
MemcacheDB, Redis, Neo4j, OrientDB etc.
Fonte: Microsoft.
Fonte: Microsoft.
49
➢ Arquitetura Centralizada: camada de banco de dados sem
redundância, estando os dados centralizados em um único sistema
de armazenamento. Processamento centralizado de consultas e
transações. Pode usar componentes físicos únicos (topologia stand
alone) ou compartilhados (topologia cluster com alta disponibilidade
do servidor / SGBD).
Fonte: Microsoft.
50
Fornece alta disponibilidade na camada de banco de dados,
escalabilidade horizontal e vertical mais fácil de se implementar e
tolerância a falhas na camada de armazenamento de dados, devido
à utilização de distribuição de dados (replicação / particionamento).
Fonte: MongoDB.
Fonte: o autor.
51
➢ Dicionário / Catálogo de Dados: metadados do SGBD e bancos de
dados.
➢ Pré-Compilador DML
52
➢ Índices: usados para performance e otimização nas operações com
os dados.
ii. O SGBD verifica se o que o usuário quer ler existe e se ele tem
autorização para isso;
v. O SGBD emite uma ordem ao sistema operacional para que ele faça
a leitura dos registros solicitados;
53
xi. O programa de aplicação reassume o controle, podendo operar com
os dados na área de comunicação.
Fonte: o autor.
54
4
Capítulo 4. Introdução a Banco de Dados Relacional
Teoria de Banco de Dados Relacional
O Modelo de Dados Relacional foi criado por Edgar Frank Codd, em
junho de 1970, quando da publicação do seu artigo A Relational Model of
Data for Large Shared Data Banks. Nesse artigo, Codd propôs um modelo
onde a representação dos dados é independente de como eles são
organizados e armazenados internamente nos servidores.
Fonte: o autor.
56
Figura 46 – Exemplo de armazenamento tabular.
57
• CHAVE CANDIDATA: que não repetem valor em uma tabela e que
são candidatas à chave primária. Exemplos: NÚMERO DO TÍTULO DO
ELEITOR, NÚMERO DO RG, NÚMERO DO CPF.
Fonte: o autor.
Fonte: o autor.
58
Essa notação, no tocante à chave estrangeira, indica a nulidade
dessa coluna, ou seja, se ela sempre estará associada a um registro
da outra tabela, ou se a chave estrangeira aceitará um valor nulo.
Cardinalidades 0,1 e 0,N implicam em chaves estrangeiras que
aceitam valores nulos, como mostrado no exemplo abaixo:
Fonte: o autor.
Fonte: o autor.
59
A representação da restrição de integridade é sempre feita no
sentido tabela com a chave primária e tabela com a chave estrangeira, como
mostrado nos exemplos abaixo.
Fonte: o autor.
As 12 Regras de Codd
Além de todo esse trabalho espetacular de lançamento do modelo
relacional, no ano de 1981, Codd publicou um conjunto de 12 regras, as
famosas 12 Regras de Codd (disponível em
https://computing.derby.ac.uk/c/codds-twelve-rules), com o propósito de
60
definir o que seria necessário para um sistema de gerenciamento de bancos
de dados ser considerado relacional. Codd publicou essas regras como parte
de uma empreitada pessoal, na tentativa de impedir que sua visão e seu
trabalho acerca de bancos de dados relacionais fossem deturpados ou
diluídos, dados os constantes esforços de fornecedores de bancos de dados
em ajustar ou relançar os produtos existentes na época (sistemas
gerenciadores de bancos de dados hierárquicos, de rede etc.) com um viés
relacional.
61
Com essa regra, Codd definitivamente abandona as necessidades
dos SGBDs não relacionais da época, onde havia-se a necessidade de saber
a forma como os dados estavam armazenados internamente, ou seja, do
usual endereçamento orientado a computador.
62
✓ Definição de dados e de visões;
✓ Restrições de integridade;
✓ Autorização;
Com essa regra, Codd alerta para o tratamento das atualizações das
visões de dados (views).
63
Regra 9: Independência Lógica dos Dados
64
Essa regra expressa a preocupação de Codd com os fornecedores de
SGBDs que estavam recodificando seus produtos como relacionais, mas que
haviam nascido com suporte a uma interface abaixo da interface de restrição
relacional, o que torna muito fácil burlar várias regras colocadas por ele,
principalmente as de restrição de integridade. Com essa subversão de baixo
nível, o banco de dados poderia passar para um status não íntegro, com por
exemplo, registros filhos órfãos, mesmo havendo as restrições de
integridade definidas nas tabelas do banco de dados.
As Propriedades ACID
As características que mais contribuíram para o respaldo, robustez e
integridade dos sistemas gerenciadores de bancos de dados relacionais
foram as suas propriedades ACID. Essas propriedades referem-se, em
grande parte, às transações que são executadas no SGBD, que nada mais
são do que uma sequência de instruções SQL.
65
transação em andamento, mas ainda não validada, permanece isolada de
qualquer outra operação, garantindo que a transação não sofra interferência
de nenhuma outra transação concorrente.
Fonte: o autor.
A Linguagem SQL
Quando Codd publicou a teoria do Modelo de Dados Relacional, em
1970, ele era então um pesquisador no laboratório da IBM, em San José.
Entretanto, com o intuito de preservar o faturamento gerado pelos produtos
“pré-relacionais”, como por exemplo o SGBD hierárquico IMS, a IBM optou
inicialmente por não implementar as ideias relacionais de Codd.
66
Centro de Pesquisas de Almaden (Almaden Research Center, na época San
Jose Research), em San José, Califórnia, o subprojeto System R.
67
Entretanto, como SEQUEL era uma marca registrada pela empresa
de aeronaves Hawker Siddeley, a linguagem SEQUEL, através da eliminação
das vogais, foi renomeada para SQL (Structured Query Language -
Linguagem de Consulta Estruturada). Devido a isso, até hoje ouvimos
comumente a sigla, em inglês, ser pronunciada como "síquel" (SEQUEL) ao
invés de "és-kiú-él" (SQL), letra a letra. No entanto, em português, a
pronúncia mais comum é letra a letra: S (“esse”) - Q (“quê”) - L (“éle").
68
De certa forma, essa peculiaridade reduziu o ciclo de aprendizado
dos desenvolvedores e administradores de bancos de dados, fazendo com
que a Linguagem SQL caísse no “gosto” rapidamente da comunidade.
69
Figura 54 – Operações/Operadores em Álgebra Relacional.
70
Figura 56 – Projeção na Álgebra Relacional.
71
No entanto, o sucesso prolongado da SQL não pode ser atribuído
apenas às suas qualidades. Os padrões, assunto que trataremos no próximo
capítulo, não apenas ajudou a SQL a se aproximar de um uso quase que
universal na comunidade de banco de dados, mas também acrescentou
atributos-chave que floresceram em suas especificações posteriores. Tudo
isso começou quando o American National Standards Institute (ANSI),
que é o Instituto Americano Nacional de Padrões, se envolveu.
Embora a SQL tenha sido originalmente criada pela IBM, após a sua
publicação, rapidamente surgiram várias linguagens desenvolvidas pelos
fornecedores de SGBDs relacionais, cada uma com suas adaptações à
Linguagem SQL original. Como exemplo, podemos citar o dialeto PL/SQL da
Oracle. Essa expansão levou à necessidade de ser criado e adaptado um
padrão para a Linguagem SQL. Esta tarefa foi realizada, pioneiramente, pela
American National Standards Institute, em 1986, com a publicação do
72
padrão ANSI X3.135-1986. Este foi o começo do que as pessoas chamam
erroneamente de padrão ANSI para SQL. Na verdade, não existem padrões
ANSI, apenas padrões desenvolvidos por comitês aprovados pela ANSI,
muitos deles operando de acordo com os Requisitos Essenciais da ANSI.
73
fazendo suas próprias implementações, baseadas nos padrões da
Linguagem SQL, mas com pequenas adaptações ou personalizações. Dentre
as mais conhecidas, além da já citada PL/SQL da Oracle, temos também a T-
SQL da Microsoft (usada no SQL Server) e a SQL PL da IBM.
74
objetos no banco de dados, como tabelas, índices, constraints etc., e
para alteração e exclusão de objetos.
Fonte: www.learnhowtocode.info.
75
se faz necessário apresentar algumas novas e reforçar na diferenciação de
algumas delas.
76
motivador do nome dado para esse banco, NoSQL (“non SQL”), no sentido de
realmente não ser um banco de dados SQL. Entretanto, pelo fato do formato
dos arquivos ser baseado em uma relação ou tabela, com linhas e colunas,
era considerado um SGBD relacional.
77
mecanismo de armazenamento de dados que não é baseado no formato
tabular (linhas x colunas).
Fonte: Ylanite.
78
popularizado. Foi criado até um site para o projeto
(http://unql.sqlite.org/index.html/wiki?name=UnQL), mas até o momento ela não
se popularizou e não virou um padrão ISO como a SQL.
79
5
Capítulo 5. Introdução ao Microsoft SQL Server
Introdução ao SQL Server
Para aplicarmos na prática os conceitos e instruções da Linguagem
SQL que serão expostos nesta disciplina, utilizaremos um banco de dados
SQL Server. O Microsoft SQL Server é um sistema gerenciador de banco de
dados relacional, desenvolvido pela Microsoft, cuja primeira versão (1.0) foi
lançada em 1989. A versão atual é a 2019 (https://www.microsoft.com/pt-
br/sql-server/sql-server-2019) e será usada nesse curso, no sistema
operacional Windows. A Microsoft já disponibilizou a versão 2022 preliminar
para testes da comunidade, mas o lançamento da versão final deve ocorrer
somente no final de 2022.
Fonte: o autor.
81
✓ Microsoft Reporting Services (SSRS): engine de exibição de dados,
que permite a criação de relatórios e dashboards.
Fonte: o autor.
82
6
Capítulo 6. Ferramentas Client
Ferramentas Client
A implementação da Microsoft, no SQL Server, da Linguagem SQL
padrão ISO / IEC 9075, é chamada Transact SQL (T-SQL). A T-SQL é uma
linguagem declarativa, possui todas as opções e instruções existentes no
padrão ISO, como variáveis, loop, controle de fluxo e decisões, funções etc.,
além de possuir algumas instruções que não estão no padrão ISO e
instruções com sintaxe ligeiramente diferente do padrão.
Fonte: o autor.
84
Para executar os comandos T-SQL no SQL Server, primeiramente é
necessário conectar-se ao banco de dados. No escopo deste curso e tendo
seguido os procedimentos de instalação exibidos nas aulas, para se conectar
ao SQL Server usando o SSMS, basta clicar no botão Connect como
mostrado na figura abaixo.
Fonte: o autor.
Fonte: o autor.
85
Para executar a query, basta selecionar o bloco de instruções que
deseja executar (caso contrário, executará todos os comandos existentes na
janela) e clicar no botão Execute (ou usar a tecla de atalho F5).
Fonte: o autor.
Fonte: o autor.
86
Por fim, faz-se importante mencionar os recursos que o SSMS
fornece para trabalhar com um projeto de banco de dados, no tocante à
organização dos scripts SQL. O SSMS fornece o recurso Solução (Solution),
dentro do qual pode ser criado um ou mais Projetos de Scripts SQL Server.
Fonte: o autor.
Fonte: o autor.
87
Figura 71 – Adicionando um Projeto à Solução.
Fonte: o autor.
Fonte: o autor.
88
Figura 73 – Exemplo de Projetos e seus Itens.
Fonte: o autor.
Fonte: o autor.
89
Instalação e Overview do SQL Server Management Studio
Para instalar o client do SQL Server 2019, de forma que você possa
reproduzir os exemplos demonstrados, realizar os exercícios e praticar, baixe
o instalador no link https://aka.ms/ssmsfullsetup, assista à respectiva aula
deste capítulo e reproduza em seu computador.
90
ii. Feito isso, deve-se conectar no SQL Server usando o SQL Server
Management Studio e clicar no botão New Query;
USE [master]
GO
WITH FILE = 1,
NOUNLOAD, STATS = 5
GO
91
Figura 75 – Resultado restore do banco AdventureWorks2019.
Fonte: o autor.
GO
Fonte: o autor.
92
7
Capítulo 7. Utilização Básica do SQL Server
A Linguagem de Definição de Dados, mais comumente mencionada
como DDL (abreviação de Data Definition Language), é uma classe da
Linguagem SQL com comandos que permitem criar, alterar e excluir objetos
de banco de dados.
Fonte: o autor.
94
Figura 78 – Script DDL em Oracle.
Fonte: o autor.
95
comando de criação de um banco de dados, como mostrado no exemplo
abaixo entre o comando no SQL Server versus no Oracle:
Fonte: o autor.
96
fornece um nome alternativo para outro objeto (tabela, view, função etc.) do
banco de dados. No SQL Server sua sintaxe básica é:
97
ALTER TABLE ALUNO ADD COD_CURSO_FK int NULL;
98
demais objetos de um banco de dados, devendo ser usado com muita
cautela e atenção para não remover objetos por engano.
--Remover Sinônimo
Selecionando Dados
Sem sombra de dúvidas, os comandos da linguagem SQL para
manipulação de dados, pertencentes à classe DML (Data Manipulation
Language), são os comandos mais usados em sistemas de bancos de dados
relacionais.
99
padrão ISO / IEC 9075: 2016 ele pertence à classe DML. A classe DQL
pertence a um outro padrão, menos conhecido da Linguagem SQL, chamado
ODMG, que não é o foco deste curso.
ii. FROM: origem dos dados, ou seja, o nome do(s) objeto(s) onde estão
os dados que serão selecionados.
FROM Production.Product;
100
SELECT *
FROM Production.Product;
Um recurso muito interessante e útil, que pode ser usado tanto para
nomes de colunas quanto de tabelas, é o alias. Com ele é possível criar um
nome alternativo (apelido), existente apenas em tempo de execução, para
cada coluna / tabela em um comando SQL.
FROM Production.Product;
Fonte: o autor.
Para alias de tabelas, o uso é bem mais amplo, permitindo que o alias
seja usado em outras cláusulas da instrução SELECT, como por exemplo, nas
101
cláusulas WHERE, GROUP BY, ORDER BY etc., que serão vistas mais à frente.
Além disso, a utilização de alias é muito útil nas situações em que existem
colunas com o mesmo nome em tabelas diferentes participando do mesmo
comando SQL, sendo necessário distinguir cada coluna (veremos isso mais
a frente quando falarmos de junção de tabelas).
Uma vez definido o alias para uma tabela, ele pode ser referenciado
na relação de colunas da cláusula SELECT, como exemplificado abaixo.
102
FROM Production.Product P;
103
Figura 81 – Resultado da Expressão Case acima.
Fonte: o autor.
Ordenando Dados
Além das cláusulas SELECT e FROM, uma instrução SELECT pode ter
também a cláusula ORDER BY. Essa cláusula é opcional, e é utilizada para
ordenar os dados retornados pela instrução SELECT.
104
FROM Person.Person
ORDER BY FirstName DESC;
Fonte: o autor.
Fonte: o autor.
105
Uma flexibilidade muito interessante dessa cláusula é que a(s)
coluna(s) usada(s) no ORDER BY não necessariamente precisam estar na
lista de colunas da cláusula SELECT, como mostrado no exemplo a seguir.
FROM Person.Person
Filtrando Dados
Além da operação de projeção da Álgebra Relacional vista até agora
(especificação das colunas a serem retornadas), a Linguagem SQL também
possui cláusulas para realizar a operação de seleção (restrição). Com essas
cláusulas é possível restringir as tuplas (linhas/dados) retornados pela
operação de projeção (cláusula SELECT).
106
A primeira delas, e a mais conhecida de todas, é a cláusula WHERE.
Em termos de sintaxe, ela é usada após a cláusula FROM e utiliza-se dos
operadores lógicos ou de comparação para filtrar os resultados retornados.
Operador de Significado
Comparação
= Igual a
> Maior que
< Menor que
>= Maior que ou igual a
<= Menor que ou igual a
<> Diferente de
!= Diferente de (não é padrão ISO)
!> Não é maior que (não é padrão ISO)
!< Não é menor que (não é padrão ISO)
107
Na cláusula WHERE, em conjunto com os operadores de
comparação, pode-se utilizar também os operadores lógicos, permitindo
que mais de uma condição (filtro) possa ser realizada na operação de
restrição da instrução SELECT.
Operador Significado
108
Nas aulas gravadas, são mostrados mais exemplos acerca da
utilização dos operadores lógicos, mas por ora é preciso acrescentar que
assim como os operadores aritméticos, os operadores lógicos e de
comparação também podem ser usados em conjunto. Dessa forma, é preciso
se atentar também à ordem de avaliação de cada um deles pelo SGBD em
questão.
2º ➔ NOT
3º ➔AND
Dessa forma, para que o operador OR, por exemplo, seja avaliado
antes do operador AND, deve-se usar parênteses, como no exemplo abaixo.
Sem os parênteses, a avaliação da expressão lógica AND seria feita primeiro,
para depois avaliar-se a expressão com o operador OR:
-- Produtos com Nome que Iniciam com 'Chain' e que Sejam da Cor
Preta ou Prata
SELECT Name,Color
FROM Production.Product
WHERE Name LIKE 'Chain%'
AND (Color = 'Black' OR Color = 'Silver')
ORDER BY Name;
109
--Produtos com Nome que Iniciam com 'Chain' e que Sejam da Cor
Preta, ou Todos os Produtos da Cor Prata
Fonte: o autor.
Inserindo Dados
Para inserir uma ou mais linhas em uma tabela, ação essa também
referida como persistir dados, é usado o comando INSERT. Apesar de
existirem outras formas de inserir dados em uma tabela, como por exemplo
usando-se os comandos de carga massiva de dados (operações de bulkload),
o comando INSERT é o mais usado.
110
Sua sintaxe mais simples é mostrada abaixo, sendo que a lista de
colunas é opcional, mas ao informá-las, o código fica mais autoexplicativo e
seguro, diminuindo o risco de inserção de valores de uma coluna em outra,
e sendo possível também definir a ordem de inserção dos valores das
colunas na tabela. Ao não informar a lista de colunas, é preciso inserir os
valores para as colunas na ordem em que as colunas estão criadas na tabela.
Supondo que exista uma tabela de nome TAB1, com as colunas COL1
e COL2, ambas do tipo de dados numérico, o comando para inserir uma linha
nessa tabela ficaria algo como:
111
Para as situações em que a coluna aceita valores nulos e deseja-se
omitir o valor a ser inserido, deve especificar NULL na lista de valores a
serem inseridos:
Nos casos em que a coluna foi criada com um valor default e deseja-
se inserir esse valor, deve especificar DEFAULT na lista de valores a serem
inseridos, como mostrado no exemplo a seguir:
Fonte: o autor.
112
exemplo, supondo que tivéssemos também a tabela TAB2 com as colunas
COL3 (numérica), COL4 (numérica) e COL5 (string), e desejássemos inserir
na TAB1 todos os valores da COL4 e COL5 da tabela TAB2, o comando ficaria
como mostrado abaixo.
Essa nova tabela é criada com a estrutura física definida pela lista de
colunas na cláusula SELECT. Cada coluna na nova tabela terá o mesmo
nome, tipo de dados e anulabilidade da coluna correspondente (ou
expressão) da lista de colunas na cláusula SELECT. Entretanto, índices e
constraints não são criados na nova tabela. A sintaxe para essa opção é
mostrada abaixo.
Fonte: o autor.
113
Atualizando Dados
Para alterar dados existentes em uma tabela ou visão, a Linguagem
SQL fornece a instrução UPDATE. Essa instrução opera em um conjunto de
linhas definido por uma condição em uma cláusula WHERE ou join, que
possui a mesma estrutura que uma cláusula WHERE em uma instrução
SELECT e pode-se valer dos mesmos recursos. Para atribuir o novo valor à
coluna, é usada a cláusula SET, que permite também a atualização dos
valores de uma ou mais colunas, separadas por vírgulas.
UPDATE <Nome_Tabela>
<ColunaN> {…n}
WHERE <Condição>;
UPDATE TAB2
SET COL3 = 500
WHERE COL1 = 10;
114
Como informado inicialmente, é perfeitamente possível atualizar
mais de uma coluna de uma vez, bastando separá-las por vírgula. Dessa
forma, se no exemplo, quiséssemos atualizar os valores da coluna COL3 para
500 e da coluna COL1 para 600, de todas as linhas onde o valor da coluna
COL1 fosse igual a 10, o comando SQL ficaria algo como:
UPDATE TAB2
SET COL3 = 500, COL1 = 600
WHERE COL1 = 10;
Excluindo Dados
Para excluir dados existentes em uma tabela ou visão, a Linguagem
SQL fornece a instrução DELETE. Essa instrução, assim como a cláusula
UPDATE, opera em um conjunto de linhas definido por uma condição em
uma cláusula WHERE ou join, que possui a mesma estrutura que uma
cláusula WHERE em uma instrução SELECT e pode-se valer dos mesmos
recursos. Sua sintaxe na forma mais simples é:
115
Para as situações em que se deseja excluir todos os dados de uma
tabela, por questões de performance é preferível usar o comando
TRUNCATE da classe DDL da Linguagem SQL. Esse comando remove todas
as linhas de uma tabela sem registrar as exclusões de linhas
individualmente, consumindo menos recursos do servidor de banco de
dados e executando mais rápido que o DELETE sem a cláusula WHERE. Sua
sintaxe é TRUNCATE TABLE <Nome_da_Tabela>.
--Usando subconsulta
O comando MERGE atua nos dados de uma tabela destino, com base
em uma ou mais condições de decisão mostradas abaixo, acerca de qual
operação (INSERT/UPDATE/DELETE) será executada:
116
• Quando os dados de origem correspondem aos dados no destino,
ocorre a atualização dos dados.
MERGE
[ INTO ] <Tabela_Destino>
USING <Conjunto de Dados de Origem>
ON <Condição de Comparação para o Merge >
[WHEN MATCHED
THEN <Operação Quando Há Correspondência>]
[WHEN NOT MATCHED BY TARGET
THEN < Operação Quando Não Há Correspondência no Destino>]
[ WHEN NOT MATCHED BY SOURCE
THEN < Operação Quando Não Há Correspondência na Origem>]
117
Destino.Data_Venda = Origem.Data_Venda,
Destino.Valor = Origem.Valor
WHEN NOT MATCHED THEN --Registro não existe no destino e deve ser
inserido
INSERT
VALUES (Origem.Id_Venda, Origem.Data_Venda, Origem.Produto,
Origem.Qtde, Origem.Valor);
118
8
Capítulo 8. Segurança no SQL Server
Introdução à Segurança no SQL Server
Uma preocupação constante, principalmente na era da informação
que nos encontramos, é com relação a proteção dos dados armazenados. Na
camada de banco de dados. Essa proteção deve ser feita externamente ao
SGBD (proteção do servidor, firewall, segmentação de rede, mecanismos
para evitar invasões e ataques de negação de serviço etc.), bem como
internamente.
120
✓ ROLE (Papel): conjunto de privilégios que pode ser concedido a
usuários ou a outras roles. São criadas com o comando CREATE
ROLE da classe DDL da Linguagem SQL.
DEFAULT_DATABASE = [BDXPE];
Fonte: Microsoft.
121
Figura 88 – Principals e Securables.
Fonte: Microsoft.
122
Já no exemplo abaixo, estão sendo concedidas as permissões de
SELECT, INSERT, DELETE e UPDATE na tabela Product do schema (owner)
Production, para o usuário UsrAdventureSystem.
TO UsrAdventureSystem;
123
9
Capítulo 9. Backup no SQL Server
Conceitos Básicos de Backup
• Tipos de Backup
125
• Política de Backup: conjunto de regras e procedimentos que
descrevem a estratégia da empresa ao fazer cópias de segurança dos
dados para fins de segurança. Periodicidade + Retenção + Tipo(s) de
Backup(s) + RTO + RPO + Ferramenta + Infraestrutura + Processos.
TO <backup_device>
--Backup de LOG
TO <backup_device>
126
Figura 89 – Interface Gráfica do SSMS para Backup no SQL Server.
Fonte: Microsoft.
127
Referências
AMERICAN National Standards Institute. The SQL Standard – ISO/IEC
9075:2016. Out. 2018. Disponível em: <https://blog.ansi.org/2018/10/sql-
standard-iso-iec-9075-2016-ansi-x3-135/>. Último acesso: 04, Abr 2020.
CHEN, Peter. Peter Chen Home Page at Louisiana State University (LSU).
Disponível em: <https://www.csc.lsu.edu/~chen>. Último acesso: 01, Mai
2020.
CODD, Edgar F. A Relational Model of Data for Large Shared Data Banks.
GitHub, jan. 2017Disponível em
<https://github.com/dmvaldman/library/blob/master/computer%20science
/Codd%20-
128
%20A%20Relational%20Model%20of%20Data%20for%20Large%20Shar
ed%20Data%20Banks.pdf>. Último acesso em 03, Mar 2020.
HILLS, Ted. NOSQL and SQL Data Modeling: Bringing Together Data,
Semantics, and Software. Technics Publications, 2016.
MANYIKA, James et al. Big data: The next frontier for innovation,
competition, and productivity. McKinsey Global Institute, mai. 2011.
Disponível em <https://www.mckinsey.com/business-functions/mckinsey-
digital/our-insights/big-data-the-next-frontier-for-innovation>. Último
acesso: 02 de Maio 2021.
129
MICHAELIS. Dicionário da Língua Portuguesa Brasileira. Disponível em:
<https://michaelis.uol.com.br/moderno-portugues>. Último acesso:
05/04/2019.
MONNAPA, Avantika. The Rise of NoSQL and Why it Should Matter to You.
SimpliLearn, nov. 2021. Disponível em <https://www.simplilearn.com/rise-
of-nosql-and-why-it-should-matter-to-you-article>. Último acesso: 26, Out.
2022.
130
PAT RESEARCH. Top 9 Object Databases. Disponível em
<https://www.predictiveanalyticstoday.com/top-object-databases>. Último
acesso: 05, Mar. 2020.
131