Buscar

Implementação de Banco de Dados - Modelo Relacional

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 848 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 848 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 848 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

IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 1-Modelo Relacional
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conteúdo Programático desta aula
▪ Conhecer as principais características de um 
Sistema de Banco de Dados;
▪ Definir modelo de dados;
▪ Conceituar Relação;
▪ Identificar os componentes do modelo 
relacional;
▪ Conceituar integridade referencial;
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Dados X Informação 
Dados
Informação
fatos em sua 
forma primária
Conhecimento 
produzido
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Importância dos Banco de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
O que é um banco de dados?
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
O que é um banco de dados?
• conjunto de dados que se relacionam. 
• Propriedades:
– coleção lógica e coerente de dados com um significado 
inerente; 
– projetado, construído e populado com dados para um 
propósito específico; 
– possui um conjunto pré definido de usuários e aplicações;
– representa algum aspecto do mundo real - “mini-mundo” e 
qualquer alteração efetuada neste mini-mundo é 
automaticamente refletida no banco de dados.
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
EVOLUÇÃO DOS SISTEMAS
Sistemas Tradicionais
Sistemas de Banco de Dados
Baseados em Arquivos
Baseados em SGBD
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sistemas Tradicionais
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sistemas de Banco de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Benefícios de uso de um SBD
• Implementação do Conceito de transação
• Controle de Concorrência 
• Mecanismo de acesso aos dados
• Mecanismo de recuperação (Tolerância a falhas)
• Maior Segurança
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
Bancos de Dados Centralizados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
Bancos de Dados Cliente – Servidor 
(com servidor de Banco de Dados)
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Estrutura Geral de um Sistema de Banco de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Esquema
• Esquema é um termo utilizado na área de Banco de 
Dados com a mesma conotação de modelo (como 
produto final da atividade de modelagem).
• O Esquema de um Banco de Dados é a especificação da 
estrutura do Banco de Dados.
• De um modo geral se utiliza o termo esquema apenas 
para os modelos referentes ao aspecto estrutural do 
mundo real.
 PESSOA 
CPF NOME COD_DEP
 DEPART 
COD_DEP NOME LOCAL
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instância
• É o conjunto de ocorrências dos objetos de dados de um 
esquema em um dado momento do tempo (Estado do 
BD num momento do tempo).
 PESSOA 
CPF NOME COD_DEP
123 A D-10
456 B D-10
789 C D-20
 DEPART 
COD_DEP NOME LOCAL
D-10 DEPART-10 L1
D-20 DEPART-20 L2
D-30 DEPART-30 L3
ESQUEMA
INSTÂNCIA
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Arquitetura 3 Esquemas
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
É o processo de:
 ∙ determinar a organização de um banco de dados, incluindo sua estrutura, conteúdo e 
aplicações; 
∙ desenvolver a estrutura de um banco de dados;
 ∙ projetar a estrutura lógica e física de um ou mais bancos de dados com a finalidade de 
acomodar as informações necessárias aos usuários de uma organização, para um definido 
conjunto de aplicações.
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
Fase 1 – Projeto Conceitual de Banco de Dados: 
 Elaboração de um modelo abstrato do mini mundo – 
totalmente independente de qualquer tecnologia da 
informação. 
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
Fase 2 – Projeto Lógico de Banco de Dados 
Elaboração de um modelo implementável durante a 
qual endereçamos uma classe de tecnologia da 
informação (Ex: Bancos de Dados Relacionais). 
ELABORAÇÃO DE 
UM MODELO 
IMPLEMENTÁVEL A 
PARTIR DO MODELO 
ABSTRATO 
MODEL
OABSTRA
TO
TECNOLO
GIA
DA 
INFORMAÇÃO
MODEL
O
IMPLEMENTÁ
VEL
CLAS
SE
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
Fase 3 – Projeto Físico de Banco de Dados
Elaboração de um modelo processável, durante a qual 
endereçamos uma tecnologia da informação específica (Ex: 
Bancos de Dados Relacional ORACLE versão 11g).
ELABORAÇÃO DE 
UM MODELO 
PROCESSÁVEL A 
PARTIR DO MODELO 
IMPLEMENTÁVEL 
TECNOLO
GIA
DA 
INFORMAÇÃO
MODEL
O
PROCESSÁ
VEL
EFETI
VA
MODEL
O
IMPLEMENTÁ
VEL
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Ferramentas de Projeto
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo Relacional
• Foi proposto por Edgar Codd em 1970
• Modelo Dominante nos SGBD 
Comerciais
• Possui uma extensão denominada 
Objeto Relacional
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Relação = Tabela
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Atributo = Coluna
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Valores dos Atributos = Domínio
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Conjunto de Atributo = Esquema
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Tupla = Linha
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Conjunto de Tuplas = Instância
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Campo = Encontro de Linha e Coluna
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Conteúdo do Campo = Valor
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Campos sem Conteúdo = Nulo
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria 
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Único 
Integridade de Chave Primária
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Único 
Integridade de Chave Primária
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Obrigatório
Integridade de Entidade
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Obrigatório
Integridade de Entidade
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria Simples
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria Composta
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Candidata
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Estrangeira
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Estrangeira -> Integridade Referencial
Chave Estrangeira
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
▪ Apresentar a Álgebra Relaciona;
▪ - Exemplificar as principais operações 
da Álgebra; Relacional.
▪ - Realizar exercícios de Álgebra 
Relacional.
Implementação de banco de dados
Aula 1: Álgebra relacional
Apresentação
Nesta aula, você vai estudar o Modelo Relacional e a Álgebra Relacional. No mundo digital, nossas vidas são regidas por
diversos sistemas. Para funcionar, esses sistemas necessitam de grande volume de dados. Os sistemas informatizados
evoluíram ao longodo tempo de Sistemas Baseados em Arquivos para Sistemas Baseados em Banco de Dados.
Não é possível conceber, atualmente, qualquer sistema que possa prescindir de um Banco de Dados. Os Sistemas de
Banco de Dados atuais são, majoritariamente, baseados no Modelo Relacional.
Entretanto, de que adiantaria termos uma estrutura de armazenamento se não conseguíssemos manipular os dados ali
armazenados? Como o modelo relacional teve sua origem na matemática, essa mesma ciência nos fornece a ferramenta
para manipulá-lo, a Álgebra Relacional.
Objetivos
Conhecer as principais características de um Sistema de Banco de Dados;
Identi�car os componentes do modelo relacional;
Conceituar Álgebra Relacional, suas operações e expressões.
Sistemas de banco de dados
Podemos iniciar o estudo com a apresentação da de�nição de FERREIRA et al. (1999, p. 62) para dados:
Dado é o “princípio em que se assenta uma discussão” ou o “elemento ou
base para a formação de um juízo”. Ainda, assumindo-se um ponto de vista
mais �losó�co, dado é “o que se apresenta à consciência como imediato,
não construído ou não elaborado”, FERREIRA et al. (1999, p. 602).
Essas de�nições são úteis para exempli�car o termo "dado" e situar sua de�nição de um ponto de vista mais humanizado.
Computacionalmente falando, pode-se de�nir dado como um valor armazenado e que por si só não quer dizer muita coisa.
Uma lista de números - por exemplo, 10, 12, 20, 21, 23, 38 - não nos fornece nenhum signi�cado, mas, por assim dizer, são os
dados obtidos e anotados de alguma forma.
A necessidade de armazenar os dados precede a criação do conceito de Sistemas de Banco de dados.
Atenção
Antigamente, os dados eram armazenados em arquivos. Normalmente são associados a um único sistema de aplicação,
trazendo, por consequência, redundância de dados quando os mesmos se faziam necessários em outros sistemas.
A maioria das organizações desenvolve os seus Sistemas de Informação um por vez, à medida que se tornam necessários,
utilizando cada um o seu próprio conjunto de programas, arquivos e usuários.
A �gura 1 mostra a estrutura de um sistema baseado em arquivo. Nela podemos notar que:
1
Cada aplicação possui seus próprios arquivos de dados;
2
Se uma aplicação compartilha dados com outras, esses
têm que ser duplicados;
3
Qualquer alteração no modelo de dados implica em
alteração do código da aplicação.
 Figura 1: Sistemas baseados em arquivos.
O esquema apresentado acaba acarretando em:
Redundância de dados
Trata-se da duplicação dos
mesmos dados em dois ou mais
arquivos. O problema com a
redundância é que as mudanças,
ao serem feitas no arquivo de
uma aplicação, não são
automaticamente realizadas nos
arquivos das outras aplicações,
gerando a falta de integridade
dos dados.
Dependência entre
programas e dados
Os aplicativos tradicionais de
banco de dados de arquivos são
caracterizados pela dependência
entre programas e dados, isso é,
programas e dados
desenvolvidos e organizados
para uma aplicação são
incompatíveis com os programas
e dados organizados
diferentemente para um outro
aplicativo.
Custo excessivo em
software
Resulta da criação,
documentação e
acompanhamento de muitos
arquivos e aplicações diferentes.
Fonte: SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S., 2006.
A evolução da tecnologia associada ao grande aumento do volume de dados a ser armazenado e processado levou à criação
de uma nova abordagem para o problema, o Sistema de Banco de Dados.
Um banco de dados é uma coleção de dados organizados de tal forma que possam ser acessados e utilizados por muitas
aplicações diferentes. Ou seja, em vez de armazenar dados em arquivos separados para utilização, os dados são armazenados
e organizados em um só local, permitindo compartilhamento e inter-relacionamento por múltiplos usuários.
A �m de usar a abordagem de banco de dados para o gerenciamento de dados, foi necessário um software adicional – um
sistema de gerenciamento de banco de dados (SGBD). O SGBD consiste em um grupo de programas que podem ser usados
como uma interface entre o banco de dados e um usuário ou um banco de dados e um programa aplicativo.(Fig 2)
 Figura 2: Sistemas de banco de dados.
Modelo relacional
Nos maiores SGBD comerciais, o modelo de dados utilizado é o Modelo Relacional criado com base na Teoria Matemática dos
Conjuntos e na Álgebra Relacional, O Modelo de Dados Relacional tem as seguintes vantagens:
É independente das linguagens de programação;
É independente dos sistemas de gestão de bases de dados;
É independente dos Sistemas Operacionais.
“O modelo relacional representa o banco de dados como uma
coleção de relações.”
ELMASRI, R.; NAVATHE, S., 2015.
Da a�rmativa acima. pode-se depreender uma relação como uma tabela de valores onde cada linha representa uma coleção de
dados ou valores relacionados. Cada linha da tabela representa uma realidade ligada ao mundo real. O nome da tabela e o
nome das colunas são de�nidos de forma que representem essa realidade. Pode-se ter uma tabela chamada ALUNO onde
cada linha venha a ser o Nome de um Aluno a ser armazenado.
Podemos melhorar ainda mais essa representação, criando uma tabela com as colunas NOME, NÚMERO DE MATRÍCULA e
CLASSE. Cada linha da tabela representa várias informações de um ALUNO e cada coluna isoladamente, representa uma
informação especí�ca desse aluno. Assim o nome da tabela e os nomes das colunas são capazes de dizer o que cada linha
representa e também o que o conjunto representa.
No modelo relacional formal (Figura 3), cada linha é chamada de tupla, o nome da coluna é conhecido como atributo ou
variável, e a tabela, relação. (FONSECA, 2016)
Regras de Integridade relacional
As regras de Integridade Relacional visam garantir a �delidade de informações em um banco de dados. Basicamente, são três
as formas mais comuns:
Clique nos botões para ver as informações.
Diz respeito aos dados que são permitidos nas colunas da relação (tabela). Um domínio é um conjunto de valores do
mesmo tipo. Os domínios são, portanto, conjuntos/faixas de valores a partir dos quais os valores reais são adicionados às
colunas de uma tabel.
Integridade de Domínio 
Diz respeito à unicidade de linhas da relação. Para tal, cada tabela deve ter uma chave primária (Primary Key - PK). Dessa
forma., as colunas escolhidas para PK devem ser únicas e de preenchimento obrigatório (não nulas), como, por exemplo,
as colunas Código na tabela Emp e Codigodepto na tabela Depto (Fig 3);
Integridade de Entidade 
Diz respeito à consistência entre as tuplas de relações. Para tal, as tabelas devem possuir chaves estrangeiras (Foreign
Key – FK). A FK de uma tabela com, por exemplo, CodigoDepto na tabela EMP (Fig3) deve referenciar uma PK de outra
tabela, no caso CodigoDepto da tabela Depto.(Fig3). Os valores possíveis em uma FK são limitados aos existentes na PK
referenciada. Se em um banco de dados você tentar incluir uma linha com valor de FK não existente na PK da outra tabela,
o SGBD gerará um erro e não permitirá a operação, garantindo assim a consistência dos dados.
Integridade Referencial 
 Figura 3: Componentes do modelo relacional.
Á
Álgebra relacional
É o conjunto básico de operações para o modelo relacional. Essas operações permitem a recuperação de tuplas mediante
instruções de consulta aplicadas ao banco de dados. O resultado dessa recuperação também será uma relação, que pode ser
usada em outras operações de consulta.
A importância da álgebra relacional:
Provê fundamento formal para operações do modelo relacional;
Alguns de seus conceitos são incorporados na linguagem SQL padrão.
E o mais importante: é usada como base para implementar e otimizar as consultas em sistemas de banco de dados
relacional. (FONSECA, 2016, p. 15)
As principais operações da álgebra relacional são:
1
Seleção
2
Projeção
3
Produto Cartesiano
4
Operações de Conjunto
(União, Intersecção, Diferença)
As operações de SELECT (SELEÇÃO) E PROJECT (PROJEÇÃO) são ditas
operações unárias, pois atuam em relações únicas(ELMASRI, R.; NAVATHE,
S., 2015).
Operação de seleção
A operação de Seleção recupera os dados de uma ou mais tabelas, selecionando um subconjunto de tuplas que satisfaça
determinada condição de seleção. Essa condição de seleção é usada para dividir horizontalmente uma relação em dois
conjuntos de tuplas – as tuplas que satisfazem a condição e são retornadas e as tuplas que não satisfazem a condição e são
ignoradas. (FONSECA, 2016, p.16)
A forma geral de uma operação de seleção é:
(nome da relação) <condição de seleção> σ
Onde:
• <condição de seleção> é a condição que a linha deve atender para ser selecionada.
Constituindo-se em uma expressão lógica, é construída a partir de cláusulas da forma:
<nome de atributo> <operador de comparação> <valor constante >, ou
<nome de atributo> <operador de comparação> <nome de atributo >
Onde:
<nome de atributo> é um atributo da relação de�nida em
<nome da relação>
<operador de comparação> é normalmente um dos
operadores relacionais {=, <, ≤, ≥, ≠} e
<valor constante> é um literal.
As cláusulas podem ser utilizadas em conjunto com os
operadores lógicos {AND, OR NOT}, seguindo a Lógica
Booleana, para formar uma condição de seleção composta.
<nome da relação> é o nome da relação sobre a qual será
aplicada a operação de Seleção
A relação resultante da operação tem os mesmos atributos
da relação especi�cada em <nome da relação>.
Exemplo
Considere a Tabela Disciplina_Nota (Fig 4)
Para selecionar os alunos da disciplina ‘álgebra’ cuja nota foi integral, pode-se especi�car cada uma dessas condições em uma
operação de SELEÇÃO:
 NOME_DISCIPLINA = ‘ALGEBRA’ AND NOTA = 10 (Disciplina_Nota)
NOME_DISCIPLINA = ‘ALGEBRA’ AND NOTA = 10
Resultando a nova relação:
NOME_ALUNO NOME_DISCIPLINA NOTA
1 José Geraldo Álgebra 8
2 Eduardo Tomaz Álgebra 10
3 Cleber Dutra Álgebra 9
4 Hernesto Paula Álgebra 10
5 Josué José Álgebra 10
Figura 4: Tabela DISCIPLINA_NOTA
NOME_ALUNO NOME_DISCIPLINA NOTA
1 Eduardo Tomaz Álgebra 10
2 Josué José Álgebra 10
Figura 5: Resultado de uma operação de Seleção | Fonte: FONSECA, 2016.
Operação de Projeção
A operação de Projeção recupera os dados de certas colunas de uma tabela e descarta outras. Se existir a necessidade de
mostrar apenas alguns atributos de uma tabela em detrimento de outros, usa-se a operação PROJEÇÃO. (FONSECA, 2016, p.
17)
A forma geral da operação de projeção é:
 <lista de atributos> (<nome da relação>)π
Onde:
<lista de atributos> representa a lista de atributos que o
usuário deseja selecionar e
<nome da relação> representa a relação sobre a qual a
operação projeção será aplicada.
Exemplo
Para selecionar as disciplinas e as ocorrências de notas nas disciplinas na tabela da �g 4, teremos:
 <Nome_Disciplina, Nota> (<Disciplina_Nota>)
Resultando na relação:
π
NOME_DISCIPLINA NOTA
1 Álgebra 8
2 Álgebra 9
3 Álgebra 10
4 Álgebra 10
Figura 6: Resultado de uma operação projeção.
Sequencialidade de Operações
A Projeção e a Seleção podem ser combinadas, de forma que apenas algumas linhas e algumas colunas retornem na
operação. A forma geral de uma operação sequencializada é:
 <lista de atributos> ( <condição de seleção> (<nome da relação>) )π σ
Onde:
 representa a operação de projeção;
<lista de atributos> representa a lista de atributos que o usuário deseja selecionar;
 representa a operação de seleção;
<condição de seleção> é a condição que a linha deve atender para ser selecionada;
<nome da relação> é o nome da relação sobre a qual será aplicada a operação de Seleção e Projeção
π
σ
Exemplo
Para projetar a partir da Tabela Disciplina_Nota, o nome das disciplinas e a nota para alunos com nota diferente de 10 a
expressão seria:
 Nome_Disciplina, Nota ( <> 10 (Disciplina_Nota) )π σ
NOME_DISCIPLINA NOTA
1 Álgebra 8
2 Álgebra 9
Figura 7: Resultado de uma operação projeção após uma seleção.
Operação Produto Cartesiano
O produto cartesiano é uma operação binária que combina todas as tuplas
de duas tabelas. O resultado de um produto cartesiano é uma nova tabela
formada pela combinação das tuplas das tabelas sobre as quais aplicou-se
a operação.
O formato geral do produto cartesiano entre duas tabelas A e B é:
Operação Junção
A operação Join (Junção) é usada para combinar as tuplas relacionadas em duas relações dentro de uma única tupla. Essa
operação é uma das mais importantes em um banco de dados relacional, pois ela nos permite retornar os relacionamentos
entre as relações (tabelas).
A forma geral da operação junção entre duas tabelas A e B é a seguinte:
A X B
<condição de junção>
Onde: <condição de junção> é uma expressão relacional,
normalmente utilizando o operador =, que determina qual
coluna da tabela A deve ser comparada com qual coluna da
tabela B.
Observação: normalmente as colunas envolvidas na
condição de junção são a Chave Primária de uma tabela e a
Chave Estrangeira na outra.
Exemplo
Considere o banco de dados composto pela tabela Disciplina_Nota (Fig 4).
Imagine que nosso modelo de banco de dados de�nido anteriormente com a tabela DISCIPLINA_NOTA (Fig4) seja rede�nido
para um modelo mais trabalhado com as tabelas:
DISCIPLINA_NOTA, DISCIPLINA E PESSOA, inserindo uma chave primária (PK) que identi�ca unicamente um nome, a tabela
DISCIPLINA_NOTA com a chave estrangeira (FK) FK_NOME_ALUNO relacionando com a tabela PESSOA e a
FK_NOME_DISCIPLINA relacionando com a tabela DISCIPLINA. Temos, então, a seguinte melhoria em nosso banco de dados
(FIG 8):
 NOME_DISCIPLINA, NOME_ALUNO, NOTA(PESSOA X DISCIPLINA_NOTA X Disciplina) 
PK_NOME_PESSOA = FK_NOME_ALUNO FK_NOME DISCIPLINA = PK_DISCIPLINA
π
NOME_ALUNO NOME_DISCIPLINA NOTA
1 José Geraldo Álgebra 8
2 Eduardo Tomaz Álgebra 10
3 Cleber Dutra Álgebra 9
4 Hernesto Paula Álgebra 10
5 Josué José Álgebra 10
Figura 9: Operação JOIN.
Operação de Conjuntos
São operações derivadas das operações matemáticas padrão de�nidas a partir da teoria dos conjuntos. (FONSECA, 2016, p.
18)
São elas:
 UNION (UNIÃO), INTERSECTION (INTERSEÇÃO) e MINUS (SUBTRAÇÃO)]
 Clique no botão acima.
UNION
UNION é a operação de UNIÃO da teoria de conjuntos. Se temos as relações R(A , A , ..., A ) e S(B , B , ..., B ) para
haver a operação União, os atributos de cada relação devem ser compatíveis entre si, ou seja, devem ter o mesmo grau
(n) e os domínios de cada atributo devem ser iguais ao domínio do outro atributo, ou seja, dom(A ) = dom(B ).
Signi�cando que cada relação possui o mesmo grau e que cada par de atributos possuem o mesmo domínio. Sendo
assim, a operação UNION pode ser aplicada. (FONSECA, 2016, p. 18)
A forma geral da operação junção entre duas tabelas A e B é a seguinte:
A U B
A Operação de União é comutativa, ou seja, A U B produz o mesmo resultado de B U A.
Exemplo: Temos a tabela DISCIPLINA_NOTA (Fig 4) e a nova tabela PROFESSOR (Fig10). Podemos fazer a união dos
domínios ‘NOME_PESSOA’ com os nomes dos alunos e os nomes dos professores.
1 2 n 1 2 n
1 1
NOME_PROFESSOR
1 Fagundes Teles
2 Ferreira
3 Elmasri
4 Navathe
5 Cleber Dutra
Figura 10: TABELA PROFESSOR.
 NOME_ALUNO (DISCIPLINA_NOTA) U PROFESSOR
Atenção: Repare que a operação UNION não trouxe o nome repetido do Professor e aluno Cleber Dutra, essa operação
garante tuplas únicas.
INTERSECTION
Da mesma forma como foi apresentada a operação UNION, pode-se usar a de�nição matemática de interseção para
de�nirmos a operação de interseção entre as relações. As observações feitas para a operação UNION, no que diz
respeito ao domínio dos atributos e ao grau da relação, também devem ser seguidas para a operação de
INTERSECTION. (FONSECA, 2016, p. 20)
A ∩ B
Essa operação é comutativa, ou seja, A ∩ B produz o mesmo resultado de B ∩ A.
π
NOME_PESSOA
1 Cleber Dutra
2 Eduardo Tomaz
3 Elmasri
4 Fagundes Teles
5 Ferreira
6 Hernesto Paula
7 José Geraldo
8 Josué José
9 Navathe
Figura 11: OPERAÇÃO UNION.
Exemplo: De acordo com Fonseca (2016), para a interseção entre os nomes de professores e alunos, temos:
 NOME_ALUNO (DISCIPLINA_NOTA)U PROFESSOR
MINUS
Por �m, apresentamos a operação MINUS (SUBTRAÇÃO), que representa a diferença de conjunto. O resultado dessa
operação, tomando-se nossas relações S e R apresentadas anteriormente, é uma relação que inclui todas as tuplas
que estão em R, mas não estão em S. As observações feitas para a operação UNION e INTERSECTION, no que diz
respeito ao domínio dos atributos e ao grau da relação, também devem ser seguidas para a operação MINUS.
(FONSECA, 2016, p. 20)
A forma geral da operação Diferença entre duas tabelas A e B é a seguinte:
A - B
Essa operação não é comutativa, ou seja, A - B produz um resultado diferente de B – A.
π
NOME_PESSOA
1 Cleber Dutra
Figura 12: OPERAÇÃO INTERSECTION.
Para obtermos o nome dos Professores que não são homônimos de alunos (FONSECA, 2016, p. 20), a expressão seria:
PROFESSOR - NOME_ALUNO (DISCIPLINA_NOTA)
Resultando:
π
NOME_PESSOA
1 Elmasri
2 Cleber Dutra
3 Fagundes Teles
4 Navathe
Atividade
1. De�na chave primária, chave estrangeira e qual a importância desses atributos em um modelo relacional.
2. Na tabela a seguir, qual seria uma possível chave primária? Diga os motivos que levaram à sua escolha.
Nome da Coluna Tipo de Dados Permitir Nul...
NOME NCHAR(50) 
SOBRENOME NCHAR(50) 
TELEFONE NCHAR(8) 
ENDEREÇO NCHAR(100) 
CPFPAI NCHAR(11) 
CPFMAE NCHAR(11) 
RG NCHAR(15) 
CPF NCHAR(10) 
3. De�na: Tupla, Relação, Entidade, Atributo e Domínio.
4. Por que tuplas repetidas não são permitidas em uma relação?
a) Nome, Salário ( salario >= 2000,00 (Empregado))
b) Nome, Salário ( salario = 2000,00 (Empregado))
c) Nome, Salário ( salario > 2000,00 (Empregado))
d) RG ,Nome, Salário ( salario > 2000,00 (Empregado)
e) RG ,Nome, Salário ( salario <> 2000,00 (Empregado)
f) salario > 2000,00( Nome, Salário (Empregado))
5. Considerando a tabela a seguir, marque todas as opções que atendam à consulta solicitada como correta ou errada e
justi�que.
Listar o nome e o salário dos empregados que ganham mais de R$ 2.000,00 .
Tabela Empregado
ID Nome Cargo Salário Id_Depto
101 Carlos Antunes Gerente de Vendas 5000,00 10
102 Pedro Leitão Vendedor 1100,00 10
103 Antônio Ventura Almoxarife 1200,00 20
104 Marco Aurélio Vendedor 1500,00 10
105 Carla da Silva Secretária 1000,00 30
106 Ivo Pereira Contador 2000,00 40
π σ
π σ
π σ
π σ
π σ
π σ
6. Considerando a tabela a seguir, marque todas as opções que atendam à consulta solicitada como correta ou errada e justi�que.
Listar o Nome do Departamento e o Nome da Região onde ele está localizado.
Tabela Departamento
ID NOME ID_REGIÃO
10 VENDAS 1
20 OPERAÇÕES 1
30 ADMINISTRATIVO 2
40 FINANCEIRO 3
Tabela Departamento
ID NOME
1 NORTE
2 CENTRO
3 SUL
a) Nome, Nome ( DEPARTAMENTO Id_Regiao = Id REGIAO)
b) Nome, Nome ( DEPARTAMENTO Id_Regiao = Id REGIAO)
c) Empregado.Nome, Departamento.Nome (DEPARTAMENTO REGIAO)
d) Empregado.Nome, Departamento.Nome (DEPARTAMENTO X REGIAO)
e) Empregado.Nome, Departamento.Nome( ID_REGIAO= REGIAO.ID (DEPARTAMENTO X REGIAO))
f) Empregado.Nome, Departamento.Nome ( DEPARTAMENTO ID = ID_REGIAO REGIAO)
π
π
π
π
π σ
π
Notas
Referências
DATE, C. J. Introdução a sistemas de banco de dados. 7. ed. Rio de Janeiro: Campus, 2000.
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Addison Wesley, 2015.
SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de banco de dados. 5. ed. Rio de Janeiro: Campus, 2006.
Próxima aula
Linguagem SQL.
Explore mais
Leia os textos:
Modelagem Relacional.
O Modelo Relacional de Dados - Parte I.
O que é um modelo de banco de dados?.
javascript:void(0);
javascript:void(0);
javascript:void(0);
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 2- Álgebra Relacional
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conteúdo Programático desta aula
▪ Conceituar Álgebra Relacional
▪ Conhecer as Operações da Álgebra 
Relacional
▪ Utilizar Operadores de Conjunto
▪ Escrever expressões utilizando operadores 
de tabelas
▪ Analisar expressões de Álgebra relacional
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conceitos Envolvidos
• a) Relação: representada por uma tabela de 
duas dimensões (linhas e colunas);
• b) Tupla: corresponde a uma linha da relação;
• c) Atributo: corresponde às colunas da 
relação;
• d) Chave primária: conjunto de atributos que 
identificam univocamente cada tupla da
• relação;
• e) Chave extrangeira: atributo de uma relação 
que é chave primária de outra relação.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conceitos Envolvidos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Manipulação de Dados
Duas categorias de linguagens
– formais
• álgebra relacional e cálculo relacional
– comerciais (baseadas nas linguagens formais)
• SQL
Linguagens formais - Características
– orientadas a conjuntos
– fechamento
• resultados de consultas são relações
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Álgebra Relacional
Conjunto de operações sobre modelos relacionais de 
dados. 
As principais operações da álgebra relacional são:
• Seleção
• Projeção
• Produto Cartesiano
• Junção
• Operações de Conjunto : (União, Intersecção, 
Diferença)
• Divisão 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A operação Seleção é utilizada para selecionar um 
subconjunto de tuplas de uma relação, sendo que estas 
tuplas devem satisfazer uma condição de seleção. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A forma geral de uma operação Seleção é:
σ <condição de seleção> 
( <nome da relação> )
Onde: 
A letra grega σ é utilizada para representar a operação de 
seleção; 
<condição de seleção> é uma expressão booleana 
aplicada sobre os atributos da relação ; 
<nome da relação> é o nome da relação sobre a qual será 
aplicada a operação Seleção.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
Dada a relação dos empregados da empresa selecionar 
aqueles que trabalham no departamento 10:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A expressão que atende ao pedido é:
σ id_Depto = 10 
(Empregado)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
Dada a relação dos empregados da empresa selecionar 
aqueles que trabalham no departamento 10 e que ganhem 
salario > 1500.
:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A expressão que atende ao pedido é:
σ id_Depto = 10 E Salario > 1500 
(Empregado)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
A operação Projeção seleciona um conjunto determinado 
de colunas de uma relação. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
A forma geral de uma operação Projeção é:
π <lista de atributos> 
(<nome da relação>)
 Onde:
A letra grega π é utilizada para representar a operação de 
seleção
<lista de atributos> representa a lista de atributos que o 
usuário deseja selecionar e 
<nome da relação> representa a relação sobre a qual a 
operação projeção será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
Dada a relação de empregados da empresa, projetar as 
colunas ID, NOME E SALARIO:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
A expressão que atende ao pedido é:
π Id, Nome, Salario 
(Empregado)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A Projeção e a Seleção podem ser combinadas, de forma 
que apenas algumas linhas e algumas colunas retornem 
na operação. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A forma geral da operação Projeção :
π<lista de atributos> (σ<condição de seleção> 
(<nome da 
relação>))
 Onde
 π representa a operação de projeção
 <lista de atributos> representa a lista de atributos que o 
usuário deseja selecionar
 σ representa a operação de seleção
 <condição de seleção> é a condição que a linha deve 
atender para ser selecionada e 
 <nome da relação> é o nome da relação sobrea qual 
será aplicada a operação de Seleção e Projeção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
Dada a relação de empregados da empresa, projetar as 
colunas ID, NOME E SALARIO PARA OS EMPREGADOS 
DO DEPARTAMENTO 10:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A expressão que atende ao pedido é:
π Id,Nome, Salario (σ Id_Depto = 10 (Empregado))
Realizada em Dois Passos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A expressão que atende ao pedido é:
π Id,Nome, Salario (σ Id_Depto = 10 (Empregado))
Passos 1 - Seleção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A expressão que atende ao pedido é:
π Id,Nome, Salario (σ Id_Depto = 10 (Empregado))
Passos 2 - Projeção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
Sempre na ordem Seleção -> Projeção?
σ Id_Depto = 10 (π Id,Nome, Salario (Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
σ Id_Depto = 10 (π Id,Nome, Salario (Empregado))
Projeção não tem todas as colunas utilizadas na 
seleção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto Cartesiano
O produto cartesiano é uma operação binária que 
combina todas as tuplas de duas tabelas. 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto Cartesiano
A forma geral do Produto Cartesiano é:
A X B
 Onde:
X representa a operação de produto cartesiano
A e B representam as relações sobre as quais a operação 
será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto Cartesiano - Exemplo
Departamento X Região
A operação ira justapor as colunas e combinar todas as 
linhas.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto 
Cartesiano
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção
Atua de forma similar á operação produto cartesiano, 
porém, a tabela resultante conterá apenas as combinações 
das tuplas que se relacionam de acordo com uma 
determinada condição de junção. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção
A forma geral de uma operação Seleção é:
R ⋈ <condição de junção> S
Onde: 
⋈ representa a operação de junção; 
<condição de junção> é uma expressão relacional, 
normalmente utilizando o operador =, que determina qual 
coluna da tabela R deve ser comparada com qual coluna 
da tabela S ( normalmente PK e FK); 
R e S representam as relações sobre as quais a operação 
será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção - Exemplo
Departamento ⋈ Id_Regiao = Id Região
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção - Exemplo
Departamento ⋈ Id_Regiao = Id Região
A operação ira justapor as colunas e combinar as linhas 
que se relacionam.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção 
Exemplo
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto
• Operações
• União
• Interseção
• Diferença
• Redundância de Tuplas
• Compatibilidade quanto a união
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Redundancia de Tupla
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Compatibilidade quanto a União
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União
O resultado desta operação entre duas relações consiste 
no conjunto de todas as linhas das duas relações . 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União
A forma geral da União é:
A U B
 Onde:
U representa a operação de União
A e B representam as relações sobre as quais a operação 
será aplicada.
A operação de União é Comutativa -> A U B = B U A
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União - Exemplo
Empregado U Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União - Exemplo
Empregado U Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção
O resultado desta operação entre duas relações consiste 
no conjunto de todas as linhas que existem em comum 
nas duas relações . 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção 
A forma geral da Interseção é:
A ∩ B
 Onde:
∩ representa a operação de Interseção
A e B representam as relações sobre as quais a operação 
será aplicada.
A operação de Interseção é Comutativa -> A ∩ B = B ∩ A
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção - Exemplo
Empregado ∩ Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção - Exemplo
Empregado ∩ Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença
O resultado desta operação entre duas relações consiste 
no conjunto de todas as linhas que existem em uma 
tabela e não existe na outra 
. 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença 
A forma geral da Diferença é:
A - B
 Onde:
- representa a operação de Interseção
A e B representam as relações sobre as quais a operação 
será aplicada.
A Diferença não é Comutativa -> A - B <> B - A
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença - Exemplo
Empregado – Acionista ou Acionista – Empregado
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença - Exemplo
–
Empregado – Acionista ou Acionista – Empregado
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 1
–
T1 = π Id,Nome (σ Id_Depto = 10 
(Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 1
–
T1 = π Id,Nome (σ Id_Depto = 10 
(Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 2
–
T2 = π Id,Nome (σ Salario >= 1500 
(Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 2
–
T2 = π Id,Nome (σ Salario >= 1500 
(Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 3
–
T1 U T2 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão
É uma operação adicional que produz como resultado a 
projeção de todos os elementos da primeira relação que 
se relacionam com todos os elementos da segunda 
relação. 
É utilizada para consultas do tipo todos os eleitores que 
participaram de todas as votações, os sócios que 
pagaram todas as mensalidades e outras do mesmo tipo. 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão 
A forma geral da Diferença é:
A / B
 Onde:
/ representa a operação de Interseção
A e B representam as relações sobre as quais a operação 
será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão - Exemplo
ID dos Funcionários que Trabalham em todos os Projetos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão - Exemplo
ID dos Funcionários que Trabalham em todos os Projetos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão – Exemplo – Passo 1
–
T1 = π Id_Proj 
(Projeto)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão – Exemplo – Passo 2
–
Funcionario_Projeto / T1
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
▪ Apresentar a Linguagem SQL
▪ Instalar e Configurar um SGBD.
▪ Criar Tabelas.
▪ Manipular Dados
Implementação de banco de dados
Aula 2: Linguagem SQL – DML e DDL
Apresentação
Anteriormente, estudamos o Modelo Relacional e a Álgebra Relacional, suas características e visualizamos suas principais
operações. Além disso, realizamos vários exercícios de �xação.
Nesta aula, seremos apresentados à linguagem SQL e vamos conhecer as partes que a compõem, estudaremos os
comandos de criação de tabelas (DDL) e os comandos que permitem colocar, alterar ou eliminar linhas das tabelas (DML).
Objetivos
Criar e eliminar tabelas;
Inserir, alterar e eliminar dados das tabelas.
Nosso foco de estudo será nos comandos de criação, alteração e eliminação de tabelas e noscomandos de DML (Insert,
Update, Delete e Select).
 Fonte: everything possible / Shutterstock.
Linguagem SQL
O padrão mundial de acesso a banco de dados é a Linguagem Estruturada de Consulta (Structured Query Language) ou
simplesmente SQL, na sigla em inglês.
A linguagem SQL divide-se em partes, cada uma atendendo a uma necessidade especí�ca. Temos, então, a seguinte
divisão:
Linguagem de Descrição de
Dados (Data De�nition Language
– DDL) – tem como principais
comandos Create, Alter e Drop,
destinados, respectivamente, a
criar, alterar e eliminar objetos
de banco de dados, como
usuários, tabelas, índices etc.
Linguagem de Manipulação de
Dados (Data Manipulation
Language - DML) – tem como
principais comandos Insert,
Update, Delete e Select,
destinados, respectivamente, a
inserir linhas nas tabelas, alterar
linhas, eliminar linhas e
consultar os dados da tabela.
Linguagem de Controle de Dados
(Data Control Language – DCL)
– tem como principais
comandos Grant e Revoke,
destinados a conceder e revogar
privilégios de acesso
respectivamente.
Tabelas
Tabelas são os objetos básicos de armazenamento de dados no modelo relacional. Para criarmos uma tabela, devemos
de�nir o seu nome, suas colunas, os tipos de dados das colunas e suas restrições.
 Nome, Coluna, Tipos de dados e Restrições
 Clique no botão acima.
Nome
O nome da tabela é normalmente de�nido durante a modelagem lógica, constituindo às vezes, alguma variação
em relação ao nome da entidade. Por exemplo, entidade Aluno vira tabela Aluno ou Alunos.
É importante conhecer as limitações do SGBD na hora de criar a tabela. A maior parte dos SGBD não dão suporte
a caracteres em português no nome da tabela. Dessa forma, se temos uma entidade Aprovação, teremos que
criar a tabela Aprovacao; se a entidade tem o nome Prova Aluno, teremos que substituir o espaço em banco por:
_ Prova_Aluno.
Colunas
As colunas das tabelas se originaram dos atributos das entidades conforme vimos na modelagem lógica. Da
mesma forma que o nome da tabela, temos que respeitar as limitações do SGBD: não usar espaço em branco,
caracteres em português e nos preocupar também com a quantidade máxima de caracteres que o nome da
coluna ou tabela pode ter. Muitas vezes, por causa dessa limitação, teremos que abreviar o nome. Por exemplo: o
atributo Matrícula do Aluno poderá virar a coluna Mat_Aluno na tabela.
Tipos de dados
As colunas possuem um tipo de dado que podem armazenar de forma similar ao conceito de tipo utilizado nas
variáveis criadas em programas.
Os SGBD possuem uma variedade muito grande de tipos. Cada SGBD tem o seu conjunto especí�co, que é,
muitas vezes, incompatível com outros SGBD. Nós faremos uso do PostGreSql como SGBD para a realização de
exercícios. Nos comandos de criação de tabelas, os tipos básicos são:
Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online
Tipos de
Dados Descrição
VARCHAR(tam) Caracter de tamanho variável, podendo atingir de 1 até 8.000 bytes, sendo limitado a tam.
CHAR(tam) Caracter de tamanho fixo, podendo tam ser especificado no máximo de 8.000 caracteres.
TEXT Caracter de tamanho variável sem limite.
INTEGER Número inteiro de 4 bytes podendo ir de -2147483648 a +2147483647.
NUMERIC(I,d) Numérico com precisão. Em i, estabelecemos quantos dígitos tem o número e em d quantos há na parte decimal.
Por exemplo, para especificar um número com formato 99999.99. Tipo seria NUMERIC(7,2)
DATE Data entre 01 de janeiro de 4713 AC até 31 de dezembro de 32767 DC.
TIMESTAMP Armazenamento da data e da hora juntos
Esses tipos mostrados na tabela acima são uma pequena parte dos tipos existentes no PostgreSql, mas serão
su�cientes para nossos exercícios.
NOTA:
Abordaremos também as particularidades do SQL do Oracle e do SQL Server no que diferem do PostgreSql.
Restrições
As restrições, normalmente chamadas constraint visam estabelecer regras para orientar o SGBD na forma de
manter a integridade do banco.
Aqui vamos tratar das seguintes constraint:
Comando de criação de tabela
O comando de Criação de Tabela é o Create Table.
Vejamos sua sintaxe:
 
CREATE TABLE nome_da_tabela(
(nome_col1 tipo_col1 [restri_col1] [,
nome_col2 tipo_col2 [restri_col2] [,
nome_coln tipo_coln [restri_coln] [,
restri_tab1 [restri_tab2]);
Onde:
BIT Tipo booleano armazena 0 (falso) ou 1 (verdadeiro)
Restrição
(Constraint) Descrição
NOT NULL (Obrigatório) Especifica se a coluna é obrigatória para todas as linhas da tabela, não podendo conter nenhum valor
NULO.
UNIQUE (Chave
alternada)
A coluna ou combinação de diversas colunas tem que ser única para todas as linhas da tabela, não
permitindo repetições.
PRIMARY KEY (Chave
primária)
É a chave primária de identificação unívoca da tabela. Pode ser uma ou uma combinação de colunas.
FOREIGN KEY (Chave
estrangeira)
É uma coluna que garante a integridade de uma relação entre duas tabelas, sendo referenciada por uma
chave primária da outra tabela.
Palavra Chave Descrição
nome_da_tabela Nome que será atribuído à tabela.
Vamos ver um exemplo de criação.
Considere a tabela Departamento:
O comando que a criaria no PostGreSql seria:
CREATE TABLE DEPARTAMENTO
(ID NUMERIC(7) PRIMARY KEY, 
NOME VARCHAR(40) NOT NULL)
Observe no comando a constraint PRIMARY KEY, de�nindo a coluna ID como chave primária e a constraint NOT
NULL, estabelecendo que NOME é de preenchimento obrigatório.
Sugiro que você crie a tabela no PostGreSql conforme as orientações do vídeo da aula.
Para vermos a tabela criada, a forma mais fácil é consultarmos o conteúdo de toda a tabela. Para isso, podemos
dar o comando:
SELECT *
FROM DEPARTAMENTO
Nome_coln Nome atribuído à coluna n.
Tipo_coln Tipo de dado atribuído à coluna n.
restri_coln Define uma restrição de integridade automática à qual os campos da coluna devem obedecer.
restri_tabn Define uma restrição de integridade automática à qual toda a tabela deve obedecer.
Tabela Coluna Tipo Tamanho Observação
Departamento ID numérico 7 Chave Primária
NOME caracter 40 obrigatório
Esse comando é básico e lista todo o conteúdo da tabela.
Note que a tabela está vazia, mas foi criada no banco com duas colunas.
No SQL Server, o comando é o mesmo.
O comando funciona também no Oracle:
Mais Constraints
Até agora utilizamos apenas as constraints NOT NULL e PRIMARY KEY.
Vejamos agora as constraints UNIQUE e FOREIGN KEY.
Campos únicos
UNIQUE
Ao estabelecermos a constraint UNIQUE para uma coluna, determinamos que ela não pode ter valor repetido. Entretanto,
ela não obriga a coluna a ter valor ou não a torna de preenchimento obrigatório e, como NULO não é valor, uma coluna
UNIQUE pode possuir várias linhas nulas (sem valor).
Exemplo
CPF char(11) UNIQUE,
Reforçando a Integridade Referencial com Chave Estrangeira (Foreign Key)
Foreign Key
Os relacionamentos entre tabelas são criados através da geração de chaves estrangeiras (foreign key – FK) nas tabelas
FILHO que referenciam colunas chaves nas tabelas PAI.
Para estabelecer essa restrição, acrescentamos REFERENCES na de�nição da coluna, como exemplo:
ID_DEPTO numeric (7) References Departamento(ID),
Onde:
Id_depto é o nome da coluna;
Numeric r(7) o tipo da coluna;
References identi�ca a restrição de chave estrangeira;
Departamento é o nome da tabela para onde aponta a chave estrangeira;
(ID) é coluna da tabela departamento apontada pela chave estrangeira.
Vejamos um exemplo de criação de tabela com essas restrições.
CREATE TABLE EMPREGADO
( ID NUMERIC(7) PRIMARY KEY,
ULT_NOME VARCHAR(20) NOT NULL,
PRIM_NOME VARCHAR(20) NOT NULL,
CARGO VARCHAR(30),
SALARIO NUMERIC(7,2),
DT_ADMISSAO DATE,
CPF CHAR(11) UNIQUE,
ID_DEPTO NUMERIC(7) REFERENCES DEPARTAMENTO(ID))
Observe o comando. Através de sua análise, podemos observar que:
- a coluna ID é sua chave primária;
- As colunas ULT_NOME e PRIM_NOME são de preenchimento obrigatório;
- A coluna CPF é única;
- A coluna ID_DEPTO é uma chave estrangeira para a tabela departamento.
Vamos criá-la no PostGgreSql.
Observe a mensagem de sucesso.
Atenção
ImportanteSe uma tabela possui uma chave estrangeira para outra, ela tem que ser criada depois da tabela referenciada, senão ocorrerá
um erro.
Vamos agora criar uma terceira tabela:
CREATE TABLE CLIENTE
( ID NUMERIC(7) PRIMARY KEY,
NOME VARCHAR(40) NOT NULL,
VENDEDOR NUMERIC(7))
Acrescentando colunas em tabelas
Podemos acrescentar colunas em tabelas já criadas com o comando Alter Table. Sua sintaxe é:
alter table <nome_tabela> add <nome_coluna> <tipo da coluna> <constraint >
Em que:
<nome_tabela> é o nome da tabela a qual será acrescida à coluna.
<nome coluna> é o nome da coluna que será acrescida.
<tipo da coluna> é o tipo de dado da coluna a ser acrescida.
<constraint> é a restrição, se for o caso, da coluna a ser acrescida.
Exemplo
Na criação da tabela Departamento. Vimos que duas restrições (constraints) são estabelecidas como: uma de
obrigatoriedade (NOT NULL) e uma Chave Primária.
Vamos assumir, entretanto que nossa tabela, com esse último comando de criação, não foi completamente estabelecida.
Está faltando a coluna descrição. Para inseri-la, podemos dar o comando:
ALTER TABLE DEPARTAMENTO ADD descricao VARCHAR(30) NOT NULL;
Vamos executar o comando. Para isso, digite-o no PostgreSql.
Eliminando colunas de tabelas
É possível eliminar colunas de tabelas, inclusive aquelas referenciadas por constraints e índices, e até mesmo chaves
primárias, únicas e estrangeiras. É verdade que cuidados quanto à aplicação devem ser tomados por parte dos
desenvolvedores e DBA, porém, o SGBD implementa essa funcionalidade.
Ao eliminarmos uma coluna, suas restrições, caso existam, também são removidas do dicionário de dados.
Sintaxe:
alter table <nome_tabela> drop column <nome_coluna>;
Em que:
<nome_tabela> é o nome da tabela da qual será eliminada a coluna.
<nome coluna> é o nome da coluna que será eliminada.
Por exemplo: se desejarmos eliminar a coluna descrição da tabela Departamento, daremos o seguinte comando:
ALTER TABLE DEPARTAMENTO DROP COLUMN DESCRICAO
Vamos executar o comando. Para isso, digite-o no PostgreSql.
Incluindo uma Foreign Key numa tabela existente
Também podemos incluir a constraint de Foreign Key após a criação da tabela. Para tal, basta especi�car a adição da
constraint no comando ALTER TABLE.
A tabela Cliente foi criada, mas a coluna Vendedor deveria ser uma chave estrangeira para a tabela Empregado na coluna
ID. Podemos dar o seguinte comando de ALTER TABLE:
ALTER TABLE CLIENTE ADD FOREIGN KEY (VENDEDOR) REFERENCES EMPREGADO(ID)
Em que:
CLIENTE – é a tabela a ser alterada
ADD FOREIGN KEY – é a restrição a ser acrescida.
(VENDEDOR) é a coluna que receberá a constraint
REFERENCES EMPREGADO(ID) indica a tabela e a coluna referenciadas pela chave estrangeira.
Veja o comando no PostGreSql.
Constraint de colunas e tabelas
As constraints podem ser de�nidas junto com a coluna ou separadamente, no �nal do comando create table ou com o
comando alter table. As constraints not null só podem ser de�nidas junto com a de�nição da coluna.
As constraints de tabela são utilizadas principalmente para criar
constraints compostas, onde duas ou mais colunas fazem parte da
constraint. Como, por exemplo, chaves primárias compostas.
Exemplo: A tabela Turmas possui uma chave primary composta pelas colunas CODIGO_TURMA e CODIGO_CURSO. O
comando para sua criação é:
CREATE TABLE TURMAS 
(CODIGO_TURMA NUMBER(6),
CODIGO_CURSO NUMBER(3),
CODIGO_FUNCIONARIO NUMBER(6),
DATA_INICIO DATE,
DATA_FIM DATE ,
SALA NUMBER(2),
PRIMARY KEY (CODIGO_TURMA, CODIGO_CURSO) );
E se desejarmos apagar uma tabela?
Para isso temos o Comando Drop, cuja sintaxe é: 
DROP TABLE <NOME DA TABELA>
Para eliminarmos a tabela TURMAS, daremos o comando:
DROP TABLE TURMAS;
Execute o comando no PostGreSql.
Observe a mensagem de sucesso.
Agora, se dermos o comando de Select na tabela, teremos uma mensagem de erro.
Veja o que acontece ao eliminar a tabela Departamento.
Não será possível porque a tabela Empregado possui uma Chave Estrangeira para Departamento, e você não poderá
eliminar Departamento enquanto essa FK existir.
Atenção
Os comandos de CREATE TABLE, ALTER TABLE e DROP TABLE vistos aqui funcionam de forma exatamente igual no
PostGreSql, no Oracle e no Sql Server.
Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online
Manipulando dados
Agora que já você já aprendeu a criar, alterar e eliminar tabelas, vai estudar os comandos de manipulação de dados que
permitirão que você faça a inclusão, alteração ou eliminação das linhas das tabelas.
Esses comandos são:
Insert – para incluir linhas; Delete – para eliminar linhas; Update – para alterar linhas.
 Inserindo Linhas
 Clique no botão acima.
Inserindo Linhas
O comando INSERT insere linhas em uma tabela.
Vamos inserir uma linha na tabela de departamento.
INSERT INTO DEPARTAMENTO (ID, NOME)
VALUES (100, 'Financeiro');
A relação entre a lista de colunas (ID, NOME) e a lista de valores (100, 'VENDAS) é posicional, portanto:
A coluna ID receberá o valor 100;
Nome receberá Vendas.
Execute o comando no PostgreSql e observe a mensagem de linha inserida.
Sua sintaxe básica é:
insert into .<nome_tabela> (coluna1, coluna2, ..., colunan)
values (valor1, valor2, ..., valorn);
Em que:
Cláusula Descrição
nome_tabela O nome da tabela a ser atualizada
Coluna n A coluna que queremos inserir
Valor n É o novo valor associado à coluna a ser inserida
Uma outra forma de dar o comando INSERT é sem referenciar as colunas. Nesse caso, a lista de valores deve estar na
ordem das colunas da tabela.
INSERT INTO DEPARTAMENTO VALUES (200, 'Compras')
Desta vez, não foram especi�cadas as colunas que receberão os valores. Portanto, o comando utilizará todas as colunas
da tabela na ordem em que foram criadas.
A nossa tabela possui duas linhas.
lnserindo com valores nulos
Caso alguma coluna deva �car com NULO em uma inserção, basta omitir o nome da mesma na lista de colunas. Vejamos
um exemplo em que isso ocorre:
No exemplo acima, foram omitidas as colunas CARGO, SALARIO, DT_ADMISSAO e CPF, que �caram nulas.
No nosso exemplo, se não fosse especi�cado um valor para a coluna id, a inserção resultaria em erro. O mesmo erro
ocorreria se não tivéssemos valores para as colunas PRIM_NOME e ULT_NOME, já que são de preenchimento obrigatório
(constraint not null).
Aproveitando ainda esse exemplo de inserção, note que inserimos o PRIM_NOME e depois o ULT_NOME, apesar de na
tabela ULT_NOME vir antes de PRIM_NOME. Isso foi possível devido à inserção ser realizada na ordem da lista de colunas.
Uma última observação se refere à Chave Estrangeira ID_DEPTO, cujo valor inserido OBRIGATORIAMENTE tem que existir
na tabela DEPARTAMENTO.
Atenção
Observe que NULO não é equivalente a 0 (zero), espaço ou qualquer outro valor. NULO é, justamente, a ausência de
qualquer valor na coluna.
Um cuidado que devemos ter é que só é possível fazer isso em colunas que não possuam a constraint NOT NULL. Outro
detalhe é que nenhuma coluna de�nida como chave primária poderá conter NULO.
Outra forma de inserirmos com valores nulos em uma coluna é utilizando a palavra reservada null. Vejamos um exemplo:
Como omitimos a lista de colunas, temos que ter um valor para cada coluna. Então estamos inserindo 20 no ID, Fonseca
no Prim_Nome, Antonio no Ult_Nome no NOME , nulo nas colunas CARGO, SALARIO, DT_ADMISSAO e CPF e 200 no
Id_depto.
Execute o comando.
Observe a mensagem de linha inserida.
Como omitimos a lista de colunas, temos que ter um valor para cada coluna, na ordem das colunas da tabela.
Você também pode executar vários comandos de inserção juntos; Basta separá-los por:
INSERT INTO EMPREGADO 
VALUES (2, 'Neves', 'Lauro', 'Diretor de Compras',19500, '07/03/2009','23456789012',200);
INSERT INTO EMPREGADO 
VALUES (3, 'Nogueira', 'Mário','Diretor de Vendas', 18000, '07/04/2010','34567890123',100);
INSERT INTO EMPREGADO 
VALUES (4, 'Queiroz', 'Mark','Gerente de Compras',8000, '07/11/2010','12345432123',200);
INSERT INTO EMPREGADO 
VALUES( 5, 'Rodrigues', 'Alberto', 'Vendedor',4000,'10/1/2008', '87965432123', 100);
INSERT INTO EMPREGADO 
VALUES( 6, 'Ugarte', 'Marlene', 'Vendedor', 3500,'23/11/2009', '87654345678',100);
Como resultado, temos sete linhas na tabela.
Observe que apesar de termos inserido a data no formato DD/MM/AAAA, o PostgreSql sempre exibe por padrão no
formato AAAA/MM/DD. Você pode dar o comando de inserção de uma forma ou de outra, mas, para evitar problemas, use
sempre AAAA/MM/DD. É mais seguro.
Atualizando linhas
O comando UPDATE permite que atualizemos dados já existentes nas tabelas.
Sua sintaxe é:
UPDATE nome_tabela 
SET coluna = expressão 
WHERE condição
Onde:
Cláusula Descrição
Nome_tabela O nome da tabela a ser atualizada.
coluna A coluna que queremos alterar.
Vejamos um exemplo:
Vamos aumentar o salário de todos empregados em R$ 1000.
UPDATE EMPREGADO
SET SALARIO = SALARIO + 1000;
Como resultado teríamos:
Repare que:
1. Como o comando foi dado sem cláusula where, ele afetou todas as linhas da tabela;
2. Os empregados de id 10 e 20 continuaram com salário nulo. Isso ocorre porque Nulo não é valor, e qualquer valor
operado com Nulo tem como resultado Nulo.
expressão O novo valor associado à coluna a ser alterada.
condição A condição que deverá satisfazer as colunas que serão alteradas.
Mas vamos agora atribuir um salário a esses dois empregados. Podemos então dar um comando de UPDATE com
WHERE para alterar apenas essas duas linhas.
UPDATE EMPREGADO
SET SALARIO = 3000
WHERE ID = 10 OR ID = 20;
Vejamos como �cou:
Repare que os empregados 10 e 20 possuem salário.
Eliminando linhas
O comando DELETE é utilizado para excluir linhas em uma tabela e tem como sintaxe:
DELETE FROM nome_tabela
WHERE condição
Em que:
Vamos apagar da Tabela Empregado o funcionário de ID 10.
DELETE FROM EMPREGADO
WHERE ID = 10;
Dessa forma, o resultado seria não ter mais a linha do empregado 10 na tabela.
Cláusula Descrição
Nome_tabela O nome da tabela a ser deletada
condição A condição que deverá satisfazer as colunas que serão deletadas
Atenção
1. Se você desse o comando de delete na Tabela Empregado sem a Cláusula Where, TODAS AS LINHAS da tabela seriam
apagadas.
2. Você não consegue apagar linhas na tabela Departamento enquanto existirem linhas em Empregado que as
referenciem na Chave Estrangeira.
Vamos, agora, reconstituir nosso ambiente, eliminando as tabelas Departamento e Empregado na ordem correta:
DROP TABLE CLIENTE;
DROP TABLE EMPREGADO;
DROP TABLE DEPARTAMENTO.
Você deve dropar as tabelas nessa ordem devido às FK.
Scripts
Um SCRIPT nada mais é que um conjunto de comandos SQL salvos em
um arquivo com a extensão .sql, que é carregado no SGBD. Em seguida, é
lido e tem seus comandos executados como um todo.
No PGADMIN, podemos carregar um Script clicando em Abrir Arquivo.
Navegando até o local do arquivo e o selecionando.
Feito isso, o conteúdo do Script é carregado e basta mandar executá-lo.
As tabelas são criadas e os dados inseridos.
Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online
Atividade
1. A partir do Modelo Lógico a seguir, crie as tabelas no PostGreSql.
2. Insira os dados nas tabelas criadas na atividade 1 de forma que as tabelas �quem conforme as �guras a seguir:
3. Baixe o Script Escola disponível aqui <./galeria/aula2/apoio/Aula_2_ESCOLA.sql> e o execute no PostGreSql.
Notas
Título modal 1
Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente
uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da
indústria tipográ�ca e de impressos.
Título modal 1
Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente
uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da
indústria tipográ�ca e de impressos.
Referências
DATE, C. J. Introdução a sistemas de banco de dados. 7. ed. Rio de Janeiro: Campus, 2000.
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson Addison Wesley, 2015.
SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de banco de dados. 5. ed. Rio de Janeiro: Campus, 2006.
Próxima aula
Estudo do comando Select;
Cláusulas iniciais (Select e From);
Cláusula Distinct.
Explore mais
PostgreSQL
http://estacio.webaula.com.br/cursos/GRA302/galeria/aula2/apoio/Aula_2_ESCOLA.sql
javascript:void(0);
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 3- Sql Parte 1
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conteúdo Programático desta aula
▪ Conhecer a Linguagem SQL
▪ Instalar e Configurar um SGBD.
▪ Criar Tabelas.
▪ Manipular Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
• Todos o exemplos mostrados em nossas 
aulas serão feitos no Oracle 10G Express
• Recomendo que instalem o Oracle na 
Máquina de vocês e acompanhem a aula
• Link para download do Oracle:
Download Oracle
http://www.oracle.com/technetwork/database/expre
ss-edition/database10gxe-459378.html
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Download Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Download Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Download Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
Digite o comando: GRANT CONNECT, RESOURCE TO AULABD
DEPOIS CLIQUE EM EXECUTAR
MENSAGEM DE CONFIRMAÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
CLIQUE PARA FAZER UM NOVO LOGIN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
FAÇA UM NOVO LOGIN COM O USUARIO CRIADO
NOME USUÁRIO: AULABD
SENHA : SENHA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Linguagem SQL
 SQL quer dizer Structured Query Language e é o padrão 
mundial de acesso às bases de dados relacionais.
A Linguagem SQL é dividida nas seguintes partes:
• DDL - Create, Alter, Drop, Rename, Truncate: Permitem 
a criação e definição de objetos como tabelas, views e 
outros objetos no banco de dados.• DRL -Select: É o comando mais comum do SQL. Utilizado 
amplamente para recuperação dos dados de uma base. 
• DML - Insert, Delete, Update: Comandos de manipulação 
dos dados. Usados nas aplicações que mantém a base de 
informações com inserções, atualizações e deleções de 
dados.
• DCL - Grant, Revoke: São utilizados para atribuir ou 
remover direitos de acesso a objetos do banco de dados e 
suas estruturas.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
Elementos que Compõem uma Tabela
A tabela é a forma básica de armazenamento de 
informações em um sistema gerenciador de banco de 
dados relacional e por isso deve conter um conjunto de 
elementos, alguns opcionais, na sua composição e que 
são:
• Nome
• Colunas
• Tipos de Dados
• Restrições (Constraints)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
TIPOS DE DADOS
Cada coluna de uma tabela, tem que ter um tipo de dado 
definido e único, obedecendo a lista de tipos definidos 
pelo RDBMS. No Oracle existe uma diversidade bastante 
grande de tipos e alguns são descritos na tabela abaixo:
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
A estrutura básica do comando é de criação de tabela é:
CREATE TABLE nome_da_tabela
 (nome_col1 tipo_col1 [restri_col1] [,
 nome_col2 tipo_col2 [ restri_col2 ] [,
 nome_col3 tipo_col3 [restri_col3] 
 ]]... [, restri_tab1 [,restri_tab2] );
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
Exemplos:
CREATE TABLE DEPARTAMENTO
( ID NUMBER(7) PRIMARY KEY,
NOME VARCHAR2(40) NOT NULL)
CREATE TABLE EMPREGADO
( ID NUMBER(7) PRIMARY KEY,
 ULT_NOME VARCHAR2(20) NOT NULL,
PRIM_NOME VARCHAR2(20) NOT NULL,
CARGO VARCHAR2(30),
SALARIO NUMBER(7,2),
DT_ADMISSAO DATE,
CPF CHAR(11) UNIQUE,
ID_DEPTO NUMBER(7) REFERENCES DEPARTAMENTO(ID),
ID_GERENTE NUMBER(7) REFERENCES EMPREGADO(ID))
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DML
Comando Insert
O comando INSERT insere linhas em uma tabela. A forma 
mais simples do comando INSERT insere somente uma 
linha , dados os valores conforme a sintaxe abaixo:
insert into <nome_tabela> (coluna1, coluna2, ..., colunan)
values (valor1, valor2, ..., valorn);
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INSERT SEM REFERENCIAR COLUNAS
INSERT INTO DEPARTAMENTO VALUES ( 10, 
‘Financeiro’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INSERT REFERECIANDO COLUNAS
INSERT INTO DEPARTAMENTO (ID,NOME) 
 VALUES ( 20, ‘Vendas’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conferindo Inserção
SELECT * FROM 
DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DMLComando Update
Para alterarmos dados já existentes em nossas tabelas 
utilizaremos o comando UPDATE.
Veja a sintaxe do comando abaixo:
UPDATE [schema. ] nome_tabela 
SET coluna1 = expressão I subquery [, colunan = ... ]
WHERE condição
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SELECT * FROM 
DEPARTAMENTO
UPDATE
SOMAR 100 AO ID DOS DEPARTAMENTOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UPDATE
UPDATE DEPARTAMENTO
SET ID = ID + 100
Clique executar
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONFERINDO UPDATE
ALTEROU OS ID DOS 
DEPARTAMENTOS
SELECT * FROM 
DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UPDATE COM CONDIÇÃO
UPDATE 
DEPARTAMENTO
SET ID = ID + 1000
WHERE ID = 110
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONFERINDO UPDATE
ALTEROU O ID DE 110 PARA 1110
SELECT * FROM 
DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DML
Comando Delete
 Para excluirmos linhas em uma tabela utilizamos o 
comando DELETE.
Veja a sintaxe do comando abaixo:
DELETE [FROM] [schema.]nome_tabela
WHERE condição
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
APAGAR A LINHA DO DEPARTAMENTO DE ID 120
DESMARCAR COMMIT AUTOMATICO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
DELETE 
DEPARTAMENTO
COMMIT DESMARCADO
SEM FROM, NO ORACLE FROM É OPCIONAL
APAGOU AS 2 LINHAS????
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
SELECT * FROM 
DEPARTAMENTO
DELETE SEM WHERE APAGA TODAS AS LINHAS
E AGORA?
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
ROLLBACK
COMMIT DESMARCADO
CANCELA A TRANSAÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
VOLTARAM AS 
LINHAS
SELECT * FROM 
DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE COM WHERE
DELETE FROM DEPARTAMENTO
WHERE ID = 120
COMMIT DESMARCADO
AGORA COM FROM E WHERE
SO A LINHA DE ID 120 APAGADA
COMO TORNAR A ALTERAÇÃO DEFINITIVA?
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
COMMIT
FECHOU A TRANSAÇÃO
IMPORTANTE
DEPOIS DO COMMIT NÃO ADIANTA DAR ROLLBACK
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONFERINDO DELETE
LINHA DE ID 120 FOI APAGADA
SELECT * FROM 
DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ELIMANDO TABELAS
Para excluirmos uma tabela existente devemos usar o 
comando DROP 
TABLE. A sua forma geral é: 
 
DROP TABLE <nome_tabela>;
 
onde: 
 
<nome_tabela> dever ser substituído pelo nome da tabela a ser 
excluída. 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ELIMANDO TABELAS
DROP TABLE EMPREGADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
▪ Aprender a rodar um Script no 
Oracle
▪ Conhecer o Comando Select
▪ Recuperar dados de uma tabela
Implementação de Banco de Dados
Aula 3: Linguagem SQL – Select – Parte 1
Apresentação
Anteriormente, você aprendeu a criar tabelas e a inserir, alterar e deletar linhas. Chegou, inclusive, a dar o comando Select
visando recuperar dados sem, entretanto, entender as suas nuances.
Nesta aula, você começará o estudo desse importante comando, sem dúvida o mais utilizado da linguagem SQL.
Objetivo
Analisar o comando de Select;
Consultar dados em tabelas.
Banco de Dados de exemplo
Um banco de dados denominado ”Empresa” será utilizado para os exemplos desta aula e das próximas. O Banco da
empresa possui o seguinte Modelo Lógico:
As tabelas possuem os seguintes dados:
REGIÃO
DEPARTAMENTO
EMPREGADO
CLIENTE
Agora vamos ver como criá-lo.
 Criação de tabelas
 Clique no botão acima.
Comandos para criação de tabelas:
CREATE TABLE REGIAO 
(ID_REGIAO NUMERIC(7) PRIMARY KEY,
 NOME  VARCHAR(40));
CREATE TABLE DEPARTAMENTO
( ID NUMERIC(7) PRIMARY KEY,
NOME VARCHAR(40) NOT NULL,
ID_REGIAO NUMERIC(7 )REFERENCES REGIAO(ID_REGIAO));
CREATE TABLE EMPREGADO
( ID NUMERIC(7) PRIMARY KEY,
 ULT_NOME VARCHAR(20) NOT NULL,
PRIM_NOME  VARCHAR(20) NOT NULL,
CARGO VARCHAR(30),
SALARIO NUMERIC(7,2),
DT_ADMISSAO DATE,
CPF CHAR(11) UNIQUE,
ID_DEPTO NUMERIC(7) REFERENCES DEPARTAMENTO(ID),
ID_GERENTE NUMERIC(7) REFERENCES EMPREGADO(ID));
CREATE TABLE CLIENTE
( ID NUMERIC(7) PRIMARY KEY
NOME VARCHAR(40) NOT NULL,
VENDEDOR NUMERIC(7) REFERENCES EMPREGADO(ID));
INSERINDO LINHAS NA TABELAS
INSERT INTO REGIAO VALUES (1, 'Norte');
INSERT INTO REGIAO VALUES (2, 'Sul');
INSERT INTO DEPARTAMENTO VALUES (10, 'Administrativo',1);
INSERT INTO DEPARTAMENTO VALUES (20, 'Vendas',1);
INSERT INTO DEPARTAMENTO VALUES (30, 'Compras',2);
INSERT INTO EMPREGADO VALUES (1, 'Velasques', 'Carmen', 'Presidente',29500, '05/05/2009','34567890125',10,
null);
INSERT INTO EMPREGADO VALUES (2, 'Neves', 'Lauro', 'Diretor de Compras',19500,
'03/03/2009','23456789012',30,1);
INSERT INTO EMPREGADO VALUES (3, 'Nogueira', 'Ernane','Diretor de Vendas', 18000,
'07/04/2010','34567890123',20,1);
INSERT INTO EMPREGADO VALUES (4, 'Queiroz', 'Mark','Gerente de Compras',8000,
'11/11/2010','12345432123',30,2);
INSERT INTO EMPREGADO VALUES (5, 'Rodrigues', 'Alberto', 'Vendedor',4000, '10/10/2008', '87965432123', 20,3);
INSERTINTO EMPREGADO VALUES (6, 'Ugarte', 'Marlene', 'Vendedor', 3500,'03/03/2009', '87654345678',20,3);
INSERT INTO CLIENTE VALUES (110, 'Ponto Quente',5);
INSERT INTO CLIENTE VALUES (120, 'Casa Supimpa',6);
INSERT INTO CLIENTE VALUES (130, 'Coisas e Tralhas',5);
INSERT INTO CLIENTE VALUES (140, 'Casa Desconto',null);
Se preferir, pode obter os comandos aqui.
Comentário
Os comandos listados acima mostram como o script disponível funciona normalmente no postgreSql e no SqlServer. No
ORACLE, deve ser comandado COMMIT após o último insert.
Tendo esse Banco em mente, é altamente recomendável que você execute os comandos de exemplo no PostGreSql.
Foi escolhido como base o PostgreSql, por ser um SGBD mais leve e fácil de instalar, porém, se você  puder usar o
SqlServer ou o Oracle quando houver diferença entre os SGBD’s, será avisado.
Consultando dados de uma tabela
O comando SQL que permite recuperar dados de uma ou mais tabelas é o SELECT. Esse comando nos permite escolher
as colunas que retornarão, bem como �ltrá-las da tabela.
O comando de Select é uma implementação prática da teoria dos
conjuntos, mais especi�camente da Álgebra Relacional. Dessa
forma, um único Select pode retornar zero ou várias linhas, de
acordo com as restrições colocadas no comando.
Os componentes básicos do comando são:
 SELECT e FROM
 Clique no botão acima.
javascript:void(0);
Cláusula SELECT
Lista as colunas que serão recuperadas;
Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, estaremos de�nindo que todas as colunas
serão recuperadas.
Cláusula FROM
De�ne a tabela que será recuperada.
Veja a sintaxe abaixo:
SELECT nome-col1, nome_col2, nome coln 
FROM    nome_da_ tabela;
OU
SELECT * 
FROM    nome_da_tabela ;
Em que:
Palavra-Chave Descrição
nome_da_tabela Nome da tabela que contém os dados a serem recuperados.
nome_coln Nome de uma coluna a ser recuperada.
* (asterisco) Recupera todas as colunas da tabela.
Retornando uma tabela inteira
Acesse o SGBD e digite o seguinte comando:
SELECT * FROM EMPREGADO.
No comando acima, selecionamos todas as colunas e todas as linhas da tabela EMPREGADO.
Teremos uma resposta semelhante à �gura 1.
 Figura 1 – Retorno do Comando
Observe que não há nenhuma ordem ou seleção de linhas ou colunas.
Retornando colunas especí�cas
Na Álgebra Relacional, vimos que existe a operação de projeção que  permite retornar apenas algumas colunas da tabela,
mas todas as linhas. O mesmo pode ser obtido em SQL. Para isso basta que se liste as colunas desejadas na cláusula
SELECT, separando-as por virgulas.
Veja um exemplo:
Acesse o SGBD e digite o seguinte comando:
SELECT ID, PRIM_NOME, ULT_NOME FROM EMPREGADO.
No comando acima, são selecionadas apenas três colunas e todas as linhas da tabela EMPREGADO, e o seu retorno pode
ser observado na Fig2.
 Figura 2 – Retorno do Comando
Comentário
Nesse segundo caso, não são exibidas as colunas CARGO, SALARIO, DT_ADMISSAO, CPF,ID_DEPTO e ID_GERENTE.
No primeiro comando analisado, um asterisco substitui a lista de colunas desejadas, indicando que todas as colunas
devem ser informadas.
Exemplos:
Como seria o comando para exibir todo o conteúdo da tabela departamento, cujo retorno é exibido na �g3?
 Figura 3 – Retorno do Comando
Dica: tente dar o comando no SGBD antes de ver a SOLUÇÃO.
CONTEÚDO SOLUÇÃO
Como seria o comando para exibir todo o NOME e o ID de todos os clientes, cujo retorno é exibido na �g4?
 Figura 4 – Retorno do Comando
Dica: tente dar o comando no SGBD antes de ver a SOLUÇÃO.
CONTEÚDO SOLUÇÃO
Dica
Note que:
Quando você utiliza *, as colunas retornam na ordem em que foram criadas na tabela;
Quando você lista as colunas no SELECT, elas retornam na ordem em que as listou;
As colunas no SELECT devem estar separadas por vírgula;
Não deve existir vírgula antes da cláusula FROM.
 SELECT
 Clique no botão acima.
Incrementando a consulta
Para efetuar consultas mais complexas e derivar dados a partir das informações contidas nas tabelas, você pode
construir expressões na cláusula SELECT.
As expressões podem ser aritméticas ou alfanuméricas, fazendo concatenações por exemplo.
Uma expressão aritmética pode conter os seguintes operadores:
*  multiplicação; 
/ divisão;
+  adição;
-  subtração.
Para concatenarmos duas colunas, utilizamos o operador || OU + dependendo do SGBD.
Escrevendo expressões aritméticas em comando Select
Em uma expressão, podemos especi�car não apenas uma coluna, mas um dado derivado de uma ou mais
colunas.
Exemplo
A �gura 5 mostra a tabela Empregado. Como �caria então o comando que listaria o ID, o Ult_NOME, o Salário e o salário
anual (consideramos que o salário anual é o salário mensal multiplicado por doze) de todos os empregados?
O comando pode ser visto na �gura 6:
Esse comando funciona da mesma forma no PostGreSql, SqlServer e Oracle.
 Figura 5 – TABELA EMPREGADO
 Figura 6 – COMANDO E RETORNO
Escrevendo expressões de concatenação
No PostGreSql, o operador de concatenação é o ||. Se desejássemos retornar o PRIM_NOME do empregado com o
ULT_NOME, o comando seria:
SELECT PRIM_NOME || ULT_NOME
FROM EMPREGADO
O retorno seria o exibido na Fig7.
 Figura 7 – RETORNO DO COMANDO
Analise a �gura 7. Notou que os nomes estão colados?
Isso decorre do fato de que, depois do PRIM_NOME ou antes do ULT_NOME, não existe espaço em branco armazenado na
coluna. 
Como resolver isso?
Basta concatenar as colunas com um espaço em branco entre elas, conforme mostra a Figura 8.
 Figura 8 – COMANDO E RETORNO
Mas você pode se perguntar: como �ca isso no Oracle e no Sql Server?
No Oracle, o operador é o mesmo (Figura 9).
 Figura 9 – COMANDO E RETORNO
Já no SqlServer, o operador de concatenação é o + (Figura 10).
 Figura 10 – COMANDO E RETORNO
 Figura 11 – NOME DAS COLUNAS NAS EXPRESSÕES
Criando Alias
Quando são utilizadas expressões, o cabeçalho da coluna, normalmente, �ca sem signi�cado.
Dependendo do SGBD, ele pode ser a própria expressão, como acontece no ORACLE, pode ser (No column name), como
acontece no SQLSERVER, ou pode ser? column?
Como acontece no PostgreSQL (Figura 11).
Seja como for, seria mais interessante se fosse possível nomear as colunas de forma a manterem o seu signi�cado. Para
isso, existem os alias de coluna.
PostGreSql
Para você criar um alias após a coluna, você deve colocar ‘AS’ e em seguida a palavra - sem espaços em branco e sem
caracteres em português - que usará para ser o cabeçalho da coluna.
 Figura 12 - Retorno dos SGBD
Para chamar a concatenação do PRIM_NOME com o ULT_NOME como NOME_COMPLETO, você deve comandar:
SELECT PRIM_NOME ||' '|| ULT_NOME AS NOME_completo
FROM EMPREGADO
PostGreSql
Atenção
1. Repare que no comando o alias está com NOME em maiúsculo e completo em minúsculo. Analise agora o retorno e
note que no PostGreSql o alias �ca todo em minúsculo, no Oracle todo em maiúsculo e no SqlServer da forma que
você digitou o alias.
2. O AS nos 3 SGBD é opcional. Se você escrever o comando sem o AS, ele funciona. Teste para ver.
 Colocando espaço em branco no Alias
 Clique no botão acima.
Se você desejar utilizar espaço em branco no Alias, no Oracle e no PostgreSql, então deverá colocar o alias entre
aspas duplas (“ “).
O comando seria:
SELECT PRIM_NOME ||' '|| ULT_NOME  "NOME completo"
FROM EMPREGADO
PostGreSql
 Figura 12 - Retorno dos SGBD
Note que, agora, para os dois o nome da coluna, além de ter o espaço em branco está escrito da forma exata que
digitamos o alias.
E no SqlServer?
Neste SGBD, além do alias também ser opcional, ele pode estar entre aspas duplas(“ “), apóstrofes (‘ ‘) ou
colchetes ([ ]). Veja a �gura 13.
 Figura 13 - ALIAS SQLSERVER
Sugestão: tente dar o comando de ALIAS no PòstGreSql ou no ORACLE utilizando apóstrofes ou colchetes e veja o que
acontece.
Exemplo 1
Dica
Como seria o comando para mostrar os últimos nomes dos empregados com o cabeçalho Sobrenome, cujo retorno é
exibido na �gura 14?
Tente dar o comando no SGBD antes de ver a SOLUÇÃO.

Continue navegando