Professional Documents
Culture Documents
Banco de Dados I
Disciplina na modalidade a distância
Palhoça
UnisulVirtual
2008
Por falar em distância, isso não significa que você estará sozinho.
Não esqueça que sua caminhada nesta disciplina também
será acompanhada constantemente pelo Sistema Tutorial da
UnisulVirtual. Entre em contato sempre que sentir necessidade.
Nossa equipe terá o maior prazer em atendê-lo, pois sua
aprendizagem é nosso principal objetivo.
Equipe UnisulVirtual.
Banco de Dados I
Livro didático
Design instrucional
Flavia Lumi Matuzawa
Viviane Bastos
Palhoça
UnisulVirtual
2008
Design Instrucional
Flavia Lumi Matuzawa
Viviane Bastos
Leandro Kingeski Pacheco
Diagramação
Rafael Pessi
Adriana Ferreira dos Santos
(atualização 3ª edição)
Revisão Ortográfica
Simone Rejane Martins
005.75
M43 Medeiros, Marcelo
Banco de dados I : livro didático / Marcelo Medeiros, Luciano José Sávio ;
design instrucional Flavia Lumi Matuzawa, Vivane Bastos. – 3. ed. rev. e
atual. – Palhoça : UnisulVirtual, 2008.
240p. : il. ; 28 cm.
Inclui bibliografia.
UNIDADE 1 –
Banco de Dados e a Tecnologia da Informação . . . . . . . . . 15
UNIDADE 2 –
Conceitos de bancos de dados . . . . . . . . . . . . . . . . . . . . . . . . . 31
UNIDADE 3 –
Modelagem de Dados e Projeto de Banco de Dados . . . . 63
UNIDADE 4 –
Produtos de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 83
UNIDADE 5 –
Implementação do Projeto de Banco de Dados . . . . . . . . 111
UNIDADE 6 –
Ferramentas CASE para apoio ao Projeto de Banco de
Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
UNIDADE 7 – Acesso e manipulação de Dados . . . . . . . . . . . . . . . . . . . . . . 155
UNIDADE 8 – Recuperação de informações do Banco de Dados . . . . . . 173
UNIDADE 9 – Recuperação de informações através de tabelas . . . . . . . 201
Bom estudo!
o livro didático;
o Espaço UnisulVirtual de Aprendizagem -
EVA;
as atividades de avaliação a distância (não serão
feitas avaliações presenciais);
o Sistema Tutorial.
Ementa
Origens de um sistema de banco de dados.
Características de um sistema de banco de dados.
Modelo de dados. Bancos de dados relacionais
e orientados a objetos. Linguagens de definição
e manipulação de dados. Modelos de entidade-
relacionamento. Ferramentas computacionais para
implementação de bancos de dados. Perfil do profissional
de banco de dados.
Objetivo geral
A disciplina de Banco de Dados I tem como objetivo
apresentar e compreender o desenvolvimento e a utilização
de sistemas de Banco de Dados. Para isso, serão trabalhados
os conceitos fundamentais sobre Banco de Dados, os seus
sistemas de gerenciamento, formas de modelagem de dados e
as características da linguagem de programação para Banco de
Dados.
Objetivos específicos
Definir conceitos básicos sobre banco de dados e a sua
forma de funcionamento.
Carga horária
A carga horária total da disciplina é de 60 horas-aula.
12
13
Cronograma de estudo
Atividades obrigatórias
14
Objetivos de aprendizagem
Compreender a importância dos bancos de dados na
área de Tecnologia da Informação.
Seções de estudo
Seção 1 Banco de Dados e a área de Tecnologia da
Informação.
Unidade 1 17
18
SISTEMAS
Contabilidade Estoque RH
ARQUIVOS DE DADOS
Figura 1.1 – Arquitetura de Sistemas de Informação
Unidade 1 19
Unidade 1 21
22
SISTEMAS
Contabilidade Estoque RH
SGBD
BD 1 BD 2 BD 3 BD 4
Unidade 1 23
24
Unidade 1 25
26
Síntese
Unidade 1 27
Atividades de auto-avaliação
28
Unidade 1 29
Objetivos de aprendizagem
Compreender o conceito de banco de dados.
Seções de estudo
Seção 1 Conceitos de banco de dados.
32
Unidade 2 33
34
Unidade 2 35
36
Unidade 2 37
38
Unidade 2 39
Banco
de dados
Linguagem de
programação
Programador
Sistema gerenciador Especialista em
de Banco de dados Banco de dados
Unidade 2 41
Filial A Filial B
Aplicação Aplicação
Banco de Banco de
dados / dados /
Usuário produtos Usuário produtos
42
Filial A
Banco de
dados /
Aplicação produtos
Filial B
Aplicação
Usuário Usuário
Usuário
Usuário
Usuário
Unidade 2 43
SGDB
SGBD
Esquema
Dados
44
Unidade 2 45
O acesso aos dados de uma tabela pode O acesso ao arquivo pode ser randômico,
obedecer aos mais variados critérios, sem que seqüencial ou indexado.
novas estruturas precisem ser criadas.
As tabelas são formadas por linhas e colunas. Os arquivos são formados por registros.
↔ Colunas /Campos ↔
↕
Linhas / Registros
46
Chaves
O conceito básico para identificar linhas e estabelecer relações
entre linhas de tabelas de um banco de dados relacional é o de
chave.Em um banco de dados relacional há ao menos dois tipos
de chaves a considerar: a chave primária e a chave estrangeira.
Unidade 2 47
Chave primária
A chave primária é a chave que identifica cada registro dando-lhe
unicidade. Essa chave primária nunca se repetirá dentro da
estrutura da tabela. Ela pode ser formada por um único campo
ou coluna ou por vários campos.
Chave estrangeira
48
Unidade 2 49
Alunos Cursos
Matricula Codigo
Nome Descricao
Idade Vagas
Sexo
Matriculas
Chave estrangeira
Aluno Chave estrangeira
Curso
Data
50
Unidade 2 51
Objeto
52
Representação do objeto
Em um modelo relacional, cada tabela representa unicamente
a estrutura dos dados que serão armazenados ali e as regras de
integridade, como chaves primárias e estrangeiras.
Alunos
Matricula
Nome
Idade
Sexo
Os métodos representam a
Figura 2.7 – Representação do Objeto Aluno forma de acesso ao objeto.
É pelos métodos que se
Note que não há mais a representação em forma de tabelas, com executa uma determinada
tarefa do objeto ou se altera
linhas e colunas. O que temos é um único objeto Aluno que
as suas propriedades. Os
possui como propriedades a matrícula, o nome, a idade e o sexo. métodos podem ser do tipo
construtor, recuperador
O objeto Aluno deve conter as regras de uso desse objeto. As ou modificador.
propriedades do objeto só podem ser alteradas pelos métodos
implementados pelo criador do objeto. Assim, o objeto Aluno
passa a ter uma estrutura mais complexa, como a seguir:
Unidade 2 53
Alunos
Matrícula
Nome
Idade
Sexo
AlterarMatrícula
AlterarNome
AlterarIdade
AlterarSexo
RecuperarMatrícula
RecuperarNome
RecuperarIdade
RecuperarSexo
LerDados
VisualizarDados
54
Alunos
Alunos
Alunos Matricula
Nome
Alunos Matricula
Idade
Nome
Matricula Sexo
Idade
Nome
Sexo
Idade
Sexo
Unidade 2 55
Esquema
Modelo de dados
Modelo conceitual
O modelo conceitual
pode ser facilmente
encontrado nas referências
bibliográficas como Um modelo de dados conceitual é uma descrição
modelo de entidade do banco de dados que será projetado de forma
relacionamento, ou independente da ferramenta computacional de SGBD.
simplesmente MER.
56
1 Marcelo Medeiros 35 M
Idade Sexo
Alunos
Nome
Matricula
Unidade 2 57
n 1
Alunos Cursos
Nome Descricao
Matricula Codigo
58
Modelo lógico
Unidade 2 59
Síntese
60
Atividades de auto-avaliação
Unidade 2 61
Saiba mais
62
Objetivos de aprendizagem
Compreender os processos para se projetar um banco
de dados.
Entender o conceito de modelagem de dados.
Seções de estudo
Seção 1 Projetando um banco de dados.
64
Unidade 3 65
66
Unidade 3 67
Tipos de cardinalidade
As cardinalidades classificam-se em mínima e máxima. Veja a
seguir as características de cada uma delas.
Cardinalidade mínima
68
Possui
País UF
Pertence
O P1,U3 O P2,U4
O P1,U1 OP5,U2 O P3,U5
Relacionamentos de Países e UFs
■U1 ■U2 UF
■U3 ■U4 ■U5
Unidade 3 69
Perceba que cada país pode ou não estar associado a UF. No caso
do país 4, não está associado a nenhuma UF. Já cada UF deve
obrigatoriamente estar associada a um PAÍS, portanto não há a
possibilidade de encontrarmos uma UF sem estar atrelada a um
PAÍS.
Cardinalidade máxima
Possui
País UF
Pertence
Figura 3.3: Exemplo de cardinalidade máxima
70
Possui
País UF
Pertence
Figura 3.4: Exemplo de cardinalidade máxima e mínima
a. Cardinalidade um para um
Na cardinalidade um para um, o relacionamento entre as tabelas
sempre ocorre de um para um, ou seja:
Possui
País UF
Pertence
Pertence
Possui
Capital
Unidade 3 71
UF
UF CAPITAL
CAPITAL
COD_UF NOME_UF COD_CAP NOME_CAP
COD_UF NOME_UF COD_CAP NOME_CAP
11 SC
SC 11 FLORIANÓPOLIS
FLORIANOPOLIS
22 SP
SP 22 SÃO
SÃO PAULO
PAULO
UF
COD_UF NOME_UF NOME_CAP
1 SC FLORIANÓPOLIS
2 SP SÃO PAULO
72
b. Cardinalidade um para N
Nesse segundo tipo de cardinalidade já é possível que um registro
de uma determinada tabela se relacione com vários registros de
outra tabela.
Possui
País UF
Pertence
Possui Pertence
Pertence Possui
Continente Capital
Unidade 3 73
CONTINENTE PAÍS
COD_CON NOME_CON COD_PAÍS NOME_PAÍS
1 EUROPA 1 ALEMANHA
2 ITÁLIA
3 FRANÇA
CONTINENTE
COD_CON NOME_COM NOME_PAÍS
Você pode então indagar: mas que problemas isto pode acarretar?
Uma das dificuldades mais óbvias a apresentar se refere a
impossibilidade de se definir, a priori, com grau suficiente de
certeza, quantos países poderão pertencer a um continente, a fim
de que possamos definir qual o número máximo de caracteres
(letras) precisaremos reservar para registrar os países.
74
c. Cardinalidade N para N
Bem, agora você chegou ao último tipo de cardinalidade,
que representa um modelo em que vários registros de uma
determinada tabela se relacionam com vários registros de outra
tabela. Veja o diagrama a seguir:
Possui Possui
País UF Habitantes
Pertence Habitam
Possui Pertence
Pertence Possui
Continente Capital
Unidade 3 75
UF HABITANTES
COD_UF(PK) NOME_UF COD_HAB(PK) NOME_HAB
1 SC 1 JOÃO BIS
2 SP 2 MARIA HOFF
3 TECO TROSTSK
UF HABITANTES
3 TECO TROSTSK 2
76
Para que seja resolvido este impasse, ou seja, para que consigamos
claramente identificar quais são os habitantes de cada uf e quais
são os ufs de cada habitante, é implementado uma terceira
entidade, denominada entidade associativa, que vai resolver a
problemática do relacionamento N para N.
Unidade 3 77
UF_HABITANTES
COD_UF COD_HAB
1 1
1 2
2 2
2 3
78
Até lá.
Síntese
Unidade 3 79
Atividades de auto-avaliação
A empresa Pare Aqui deseja implantar um sistema para controle dos seus
clientes. A empresa possui vários pátios de estacionamento na cidade,
porém o controle é realizado por meio de anotações em caderno, e isso
tem gerado uma perda muito grande de recursos financeiros e até mesmo
de clientes.
A empresa adota as seguintes regras:
Clientes Veículos
Nome Varchar(30) Placa Varchar(07)
Data_Nasc Date Cor Varchar(30)
CPF Varchar(14) Modelo Varchar(30)
Estacionados
CPF Varchar(14)
Placa Varchar(07)
Data_Entrada Date
Data_Saída Date
Hora_Entrada Time
Hora_Saída Time
80
Saiba mais
Unidade 3 81
82
Objetivos de aprendizagem
Entender os conceitos de Software Livre e de software de
tecnologia proprietária.
Seções de estudo
Seção 1 O mercado de software livre e de software
proprietário.
84
Unidade 4 85
Unidade 4 87
A diferença é simples.
88
Padronização
Performance
Compatibilidade entre os produtos com a mesma
tecnologia
Unidade 4 89
90
a) MySQL
www.mysql.com
O aplicativo MySQL é um sistema de gerenciamento de banco
de dados relacionais baseado em comandos SQL (Structured
Query Language - Linguagem Estruturada para Pesquisas) que vem
ganhando grande popularidade, sendo atualmente um dos bancos
de dados mais populares.
b) PostgreSQL
O aplicativo PostgreSQL é um sistema de gestão de bases de
dados relacionais, desenvolvido como projeto de software livre.
Sua origem PostgreSQL está de certo modo ligada ao projeto
Ingres, desenvolvido na Universidade de Berkeley, Califórnia.
O líder do projeto, Michael Stonebraker, um dos pioneiros das
bases de dados relacionais, deixou a universidade em 1982 para
comercializar o Ingres, acabando por regressar a Berkeley.
Unidade 4 91
c) InterBase
O aplicativo InterBase é um gerenciador de banco de dados
relacionais da Borland, mesmo fabricante das linguagens de
programação Delphi, Borland C++ e Borland Java.
d) SQLLite
O aplicativo SQLite é uma biblioteca em linguagem C que
implementa um banco de dados SQL embutido. Programas que
usam a biblioteca SQLite podem ter acesso a banco de dados
SQL sem executar um processo separado.
e) MS SQL Server
O aplicativo MS SQL Server é um gerenciador de banco de
dados fabricado pela Microsoft. É um banco de dados muito
robusto e usado em empresas e por grandes sistemas corporativos.
92
f) Oracle
O aplicativo é um sistema de banco de dados que surgiu no final
dos anos 70, quando Larry Ellison vislumbrou uma oportunidade
que outras companhias não haviam percebido, quando encontrou
uma descrição de um protótipo funcional de um banco de
dados relacional e descobriu que nenhuma empresa tinha se
empenhado em comercializar essa tecnologia. Então, Ellison e os
co-fundadores da Oracle Corporation, Bob Miner e Ed Oates,
perceberam que havia um tremendo potencial de negócios no
modelo de banco de dados relacional, tornando-os assim a maior
empresa de software empresarial do mundo.
f) Caché
Unidade 4 93
Veja os motivos.
94
Unidade 4 95
96
Unidade 4 97
Instalação do MySQL
98
Unidade 4 99
Unidade 4 101
102
Figura 4.17 – Tela que apresenta o nome do serviço a ser criado no Windows.
Unidade 4 103
104
Unidade 4 105
106
Síntese
Atividades de auto-avaliação
Unidade 4 107
108
Saiba mais
Para aprofundar as questões abordadas nesta unidade você poderá pesquisar em:
<www.oracle.com>;
<http://www.postgresql.org/>;
www.mysql.com/;
<http://www.microsoft.com/brasil/sql/prodinfo/
overview/what-is-sql-server.mspx>;
<http://www.borland.com/us/products/interbase/index.
html>.
<http://www.intersystems.com.br>.
Leia:
Unidade 4 109
Implementação do Projeto de
Banco de Dados
Objetivos de aprendizagem
Conhecer a origem da linguagem SQL.
Seções de estudo
Seção 1 A estrutura da Linguagem SQL.
Sendo assim, nesta unidade, vamos fazer parte deste seleto grupo
de programadores que usam a linguagem SQL para manipulação
e definição de dados. Bom estudo!
112
Unidade 5 113
114
Unidade 5 115
116
Unidade 5 117
Unidade 5 119
Bem, continuando...
Alter Table Nome_ da_Tabela Operação Nome_ do_ Campo Nova Regra;
Operação Funcionalidade
ADD Adiciona um novo campo.
MODIFY Altera a estrutura de um campo.
Quadro 5.3 – Formas de uso do comando Alter Table.
120
Observe:
122
Unidade 5 123
124
Alunos Matriculas
Cursos
Codigo_Aluno Cod_Alun_Mat
Cod_Curso_Mat Codigo_Curso
Unidade 5 125
126
Note que todos os campos são marcados com Primary Key igual
a SIM, em uma referência à chave primária.
Sua sintaxe é:
Unidade 5 127
Para que esse problema não ocorra, o SGDB não permitirá que
a tabela Alunos seja removida, pois há alguma outra tabela no
esquema que depende dela.
Alunos Matriculas
Figura 5.4 – Representação da remoção de uma tabela com campos que são foreign key
para outra tabela
128
Unidade 5 129
Síntese
Para que uma tabela seja removida, ela não pode ter dados
cadastrados e não pode ser uma tabela estrangeira para outra
tabela.
130
Atividades de auto-avaliação
Nesta atividade você revisará os comandos de definição de dados por
meio da criação de um banco de dados físico a partir de um modelo
conceitual.
Com base no modelo de dados a seguir, escreva os comandos em SQL que
realizam cada uma das tarefas solicitadas.
Produto Itens
LEGENDA
Pertence
Símbolo Significado
PK Chave Primária Nota_Fiscal
Unidade 5 131
132
Saiba mais
Unidade 5 133
Objetivos de aprendizagem
Compreender a importância das ferramentas Case.
Seções de estudo
Seção 1 Ferramentas Case
136
Unidade 6 137
138
Pré-requisito Avaliação
Unidade 6 139
140
Alunos
Matrícula (PK)
Unidade 6 141
a criação de tabelas;
a definição dos nomes de campos e seus respectivos tipos;
a definição das chaves primárias e estrangeiras.
142
Unidade 6 143
144
Unidade 6 145
146
Unidade 6 147
148
Unidade 6 149
Síntese
150
Atividades de auto-avaliação
A empresa Pare Aqui deseja implantar um sistema para controle dos seus
clientes. A empresa possui vários pátios de estacionamento na cidade,
porém o controle é realizado por meio de anotações em caderno, e isso
tem gerado uma perda muito grande de recursos financeiros e até mesmo
de clientes.
A empresa adota as seguintes regras:
Unidade 6 151
152
Saiba mais
<http://www.squadra.com.br>
<http://www.casestudio.com>
<http: //www.ca.com>
Unidade 6 153
Objetivos de aprendizagem
Identificar os comandos de manipulação de dados (DML).
Seções de estudo
Seção 1 A estrutura dos comandos de manipulação
de dados.
Unidade 7 157
Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar(30) NN
Preco_Produto Float NN
Figura 7.1
158
Figura 7.2
Unidade 7 159
Continuando as inserções:
160
Figura 7.3
Figura 7.4
Unidade 7 161
Figura 7.5
Agora que você já sabe como inserir dados em uma tabela, que tal
você aprender a alterar as informações cadastradas? Este será seu
próximo aprendizado, está preparado?
162
Operador Função
= Igual
<> Diferente
> Maior
< Menor
>= Maior ou Igual
<= Menor ou Igual
AND E lógico – Verdadeiro quando todas as condições são verdadeiras.
OR OU lógico – Verdadeiro quando pelo menos uma Condição é verdadeira.
Não – Inverte o valor. Se for verdadeiro, troca para falso, se é falso troca para
NOT verdadeiro.
Figura 7.6
Unidade 7 163
ou
ou
Figura 7.7
Unidade 7 165
Por outro lado, a tabela não pode ficar com esses campos nulos
(vazios), pois são do tipo not null.
166
Veja:
Nome Upper(Nome)
marcelo MARCELO
Marcelo MARCELO
MARCELO MARCELO
MArCElO MARCELO
Unidade 7 167
Síntese
168
Insert into Tabela values (v1,v2,...,vn); Insert into Tabela (c1,c2,..cn) values (v1,v2,…,vn);
Update Tabela set Campo1 = Valor 1 where Condição; Update Tabela set Campo1 = Valor 1;
Unidade 7 169
Atividades de auto-avaliação
Produto
Codigo_Produto Integer NN (PK)
Descricao_Produto Varchar(30) NN
Preco_Produto Float NN
A1.
A2.
A3.
170
A4.
Unidade 7 171
Saiba mais
172
Recuperação de Informações do
Banco de Dados
Objetivos de aprendizagem
Selecionar dados em SQL usando a DML.
Seções de estudo
Seção 1 A Estrutura do Comando Select.
174
Unidade 8 175
Figura 8.1
176
Figura 8.2
Select Coluna1,Coluna2,...,ColunaN
From Nome_Tabela [ ou tabelas ]
Where condição
Group By expressão
Having condição
Order By expressão;
Unidade 8 177
a) Colunas do Select
A expressão coluna1,coluna2...colunaN representa as colunas
que devem ser listadas pelo comando Select. Caso você deseje
selecionar todos os campos, pode simplesmente colocar um
asterisco no lugar do nome das colunas.
b) A cláusula From
Esta cláusula especifica uma ou mais tabelas de origem para o
Select. Se múltiplas tabelas de origem forem especificadas, o
resultado será, conceitualmente, o conjunto das linhas de todas as
tabelas envolvidas na seleção, que chama-se produto cartesiano.
178
c) A cláusula Where
Esta cláusula é responsável por restringir quais as linhas das
tabelas serão apresentadas. A cláusula Where possui a forma
geral:
Where expressão_booleana;
A expressão booleana
pode ser qualquer
expressão que retorne um
Só para fi xar, os operadores lógicos são: valor booleano (verdadeiro
ou falso).
Operadores Lógicos Significado
= Igual
> Maior
< Menor
<> Diferente
>= Maior ou Igual
<= Menor ou Igual
AND E Lógico
OR OU Lógico
Unidade 8 179
180
Resultado:
Resultado:
Codigo_Produto Descricao_Produto
1 Banana
4 Pêra
Resultado:
Unidade 8 181
Resultado:
Resultado:
Descricao_Produto Preco_Produto
Banana 1.00
Maçã 2.80
Pêra 1.00
Maracujá 2.00
Mamão 2.55
Goiaba 2.00
Limão 0.85
Melancia 2.55
182
Para isso, será necessário que você conheça mais duas cláusulas
do comando Select, as cláusulas Order By e Group By.
a) A cláusula Order By
A cláusula Order By serve para ordenar os dados que serão
listados. A ordem de apresentação pode ser crescente (ASC) ou
decrescente (DESC).
A sintaxe do comando é:
Unidade 8 183
Resultado:
Resultado:
Codigo_Produto Descricao_Produto
1 Banana
7 Goiaba
9 Limão
2 Maçã
6 Mamão
5 Maracujá
10 Melancia
4 Pêra
Resultado:
Codigo_Produto Descricao_Produto Preco
1 Banana 1.00
4 Pêra 1.00
2 Maçã 2.80
3 Uva 3.25
Resultado:
Unidade 8 185
b) A cláusula Group By
A cláusula Group By condensa em uma única linha todas as
linhas selecionadas que compartilham os mesmos valores para as
colunas agrupadas.
A sintaxe do comando é:
Group By coluna1,coluna2,...,colunaN;
Figura 8.3
186
Unidade 8 187
Resultado:
Select Descricao_Produto,Produtor_ID
from Produtos
Group By Produtor_ID;
Resultado:
Descricao_produto Produtor_ID
PRODUTO A 1
PRODUTO B 2
PRODUTO D 3
Atenção!
SGBDs como SQLServer e Oracle têm comportamento
diferente do MySQL, apresentando código de erro no
referido comando sql apresentado neste item.
188
Função_de_Agregação (Coluna)
Unidade 8 189
select
max(preco_produto) as maior,
min(preco_produto) as menor,
avg(preco_produto) as media,
count(codigo_produto)as Qtde,
sum(preco_produto) as somatório
from produtos;
Resultado:
190
Unidade 8 191
Select descricao_produto
From produtos
Where preco_produto = max(preco_produto);
Select descricao_produto
From produtos
Where preco_produto = (Select max(preco_produto ) from produtos);
192
Figura 8.4
Unidade 8 193
Select Descricao_Produto
From Produtos
Where Descricao_Produto LIKE ‘S%’
ORDEM CLÁUSULA
6 Select
1 From
2 Where
3 Group by
4 Having
5 Order By
194
Síntese
Unidade 8 195
Select Coluna
from Tabela
where Coluna Like “n%”;
196
Atividades de auto-avaliação
Unidade 8 197
198
Saiba mais
Unidade 8 199
Recuperação de informações
através de tabelas
Objetivos de aprendizagem
Selecionar dados em SQL usando mais de uma tabela
como referência.
Seções de estudo
Seção 1 O que é uma junção.
Seção 2 Junções de produto cartesiano.
Seção 3 Junções internas.
202
Tabela A Tabela B
JUNÇÃO
Tabela C
Unidade 9 203
Tabela A Tabela B
Tabela C
Figura 9.2 - Junção com a união dos dados das duas tabelas.
Tabela A Tabela B
Tabela C
Figura 9.3 - Junção que retorna os dados que estão na tabela a, mas não estão na tabela b.
204
Unidade 9 205
206
1
Pais
Codigo_Pais(PK)
Nome_Pais
Figura 9.4 - Modelo de dados para o exemplo de junção por produto cartesiano.
Unidade 9 207
208
Codigo_Pais Nome_Pais
1 Brasil
2 Argentina
3 Estados Unidos
Figura 9.6 - Tabela país com os dados cadastrados.
Unidade 9 209
2 Florianopolis 3
3 Buenos Aires 4
4 La Plata 4
5 Los Angeles 6
6 San Francisco 6
210
Até aqui não há nada de novo, contudo essa tabela fica um pouco
estranha ao se perceber que as cidades pertencem a sub-regiões
como: 2, 3 ,4 e 6. Esses valores correspondem aos códigos das
sub-regiões cadastradas na tabela Sub-Região, conforme a figura
a seguir:
Unidade 9 211
Select Cidade.Codigo_Cidade,Cidade.Nome_Cidade,SubRegiao.Nome_SubRegiao
From Cidade,SubRegiao
Where Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
Select SubRegiao.Nome_SubRegiao
From Cidade,SubRegiao
Where Upper(Cidade.Nome_Cidade) = ‘FLORIANÓPOLIS’ AND
Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
212
Select Cidade.Codigo_Cidade,Cidade.Nome_Cidade
From Cidade,SubRegiao
Where Upper(SubRegiao.Nome_SubRegiao) = ‘SÃO PAULO’ AND
Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
Select SubRegiao.Nome_SubRegiao
From SubRegiao,Pais
Where Upper(Pais.Nome_Pais) = ‘BRASIL’ AND
Pais.Codigo_Pais = SubRegiao.Codigo_Pais;
Select SubRegiao.Nome_SubRegiao
From SubRegiao,Pais
Where Pais.Codigo_Pais = SubRegiao.Codigo_Pais;
Select Cidade.Nome_Cidade,SubRegiao.Nome_SubRegiao,Pais.Nome_Pais
From Cidade,SubRegiao,Pais
Where Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao AND
SubRegiao.Codigo_Pais = Pais.Codigo_Pais;
Na próxima seção você verá como criar junções sem usar a chave
estrangeira diretamente.
Unidade 9 213
SELECT *
FROM Cidade
INNER JOIN subregiao
ON Cidade.Codigo_subregiao = Subregiao.Codigo_Subregiao;
Figura 9.14 - Resultado de uma junção interna entre as tabelas de cidade e sub-região.
214
Select SubRegiao.Nome_SubRegiao,Pais.Nome_Pais
From SubRegiao
INNER JOIN Pais
ON SubRegiao.Codigo_Pais = Pais.Codigo_Pais;
Figura 9.15 - Resultado de uma junção interna entre as tabelas de sub-região e país.
Unidade 9 215
SELECT *
FROM SubRegiao
LEFT OUTER JOIN Cidade
ON Cidade.Codigo_SubRegiao = SubRegiao.Codigo_SubRegiao;
Figura 9.16 - Resultado de um left outer joiner entre as tabelas sub-região e cidade.
SELECT *
FROM SubRegiao
RIGHT OUTER JOIN Pais
ON Pais.Codigo_Pais = SubRegiao.Codigo_Pais;
Figura 9.17 - Resultado de um right outer joiner entre as tabelas sub-região e país.
Unidade 9 217
Síntese
218
Atividades de auto-avaliação
Com o modelo de dados abaixo, escreva os comandos em SQL que
resultam na seleção solicitada.
Cidade Professor
Codigo_Curso Codigo_Professor
Descricao_Curso Nome_Professor
Vagas Titulacao
Codigo_Local Codigo_Curso
Local
Codigo_Local
Nome_Local
Cidade
UF
Unidade 9 219
220
Unidade 9 221
Saiba mais
222
226
Unidade 1
Unidade 2
230
Unidade 3
Clientes Veículos
Nome Varchar(30) Placa Varchar(07)
Data_Nasc Date Cor Varchar(30)
CPF Varchar(14) Modelo Varchar(30)
Estacionados
CPF Varchar(14)
Placa Varchar(07)
Data_Entrada Date
Data_Saída Date
Hora_Entrada Time
Hora_Saída Time
231
Unidade 4
232
Unidade 5
233
Unidade 6
234
Resposta:
Unidade 7
a1) Resposta: Insert into Produto values (100, ’Caneta Azul’, 1.00);
a2) Resposta: Insert into Produto values (200, ’Borracha’, 0.80);
a3) Resposta: Insert into Produto values (300, ’Caderno de Desenho’, 2.20);
a4) Resposta: Insert into Produto values (400,’Régua’,0.25);
235
Unidade 8
1.
a) Liste todos os alunos do sexo masculino.
Resposta: Select * from Alunos where Upper(Sexo) = ‘M’;
236
Unidade 9
237
239