Consultando um BD no
Modelo Relacional
Profa. Renata Vilas Boas
E-mail: renata.boas@area1fte.edu.br
Passos para Definir um BD
1: Compreender o mini-mundo
2: Especificar o mini-mundo em um modelo
conceitual (Modelo ER)
3: Especificar o mini-mundo no modelo lgico
(Modelo Relacional)
4: Definir o BD de acordo com o SGBD a ser
utilizado
Informaes Gerais da SQL
Surgiu no centro de pesquisa da IBM (San Jose) dentro do projeto
System R em meados dos anos 70
Linguagem comercial padro para definio e manipulao de BD
relacionais
ANSI (American National Standards Institute) e ISO (International
Standards Organization)
SQL1 Padronizada em 1986 e melhorada em 1989
SQL2 Revisada e estendida. Aprovada em 1992
SQL3 Estende a SQL2 com conceitos de OO e outros novos conceitos
de BD. Aprovada em 1999
SQL:2003 XML
SQL:2006 + XML (XQuery)
http://pt.wikipedia.org/wiki/SQL
http://en.wikipedia.org/wiki/SQL:2003
Informaes Gerais
Esta padronizao uma das principais razes do
sucesso dos BD relacionais
Usurios menos preocupados em migrar suas informaes
para outros sistemas de BD
No ser to caro nem vai consumir muito tempo
Usurios podem desenvolver uma mesma consulta que
acesse dados armazenados em diferentes SGBD sem
precisar reescrev-la (no caso destes diferentes SGBD
suportarem o padro SQL)
Usa os termos tabela, linha e coluna para
referenciar relao, tupla e atributo
Dividida em:
Linguagem para definio (LDD)
Criar e modificar esquemas, tabelas
Linguagem para manipulao (LMD)
Construtores para inserir, alterar e excluir linhas das tabelas
Construtores para especificar consultas s tabelas
Uma verso de SQL Embutida em linguagens de programao de 3
gerao (Cobol, C) estendendo-as para manipulao de dados
Instrues para definio de viso (tabelas virtuais vistas por um
usurio ou por uma classe de usurios)
Instrues para especificao de restries de integridade
Instrues para controle de autorizao de acesso
Instrues para controle de transaes e concorrncias
Exemplo
CodPea NomePea CorPea CidadePea
P1 Parafuso Cinza Salvador
P2 Rosca Dourada Fortaleza
P3 Alicate Verde Rio de Janeiro
CodFornec NomeFornec CidadeFornec
F1 Silva Salvador
F2 Souza Rio de Janeiro
F3 lvares Fortaleza
F4 Tavares Salvador CodPea CodFornec DataPedido Qtdade
P1 F1 12/5/2003 300
P1 F2 8/12/2002 200
P1 F3 30/03/2004 500
P2 F1 5/10/2002 100
P2 F4 24/06/2003 150
Pea
Fornecedor
Pedido
Criando um BD em Microsoft SQL
Server
Um BD uma coleo de objetos que so criados
separadamente
Tabelas, vises, ndices, ...
Sintaxe:
CREATE DATABASE [NomeBD] {Elementos de definio do
esquema}
Exemplo:
CREATE DATABASE Loja
OBS: Os elementos de definio do esquema podem ser definidos no
momento da criao do esquema ou depois
Definindo Banco de Dados
Uma tabela consiste de: nome, atributos e restries
Sintaxe para criar tabela
CREATE TABLE NomeTabela
(
NomeAtributo Domnio [ValorPadro] [Nulo] ...
{CONSTRAINT nomeRestricao PRIMARY KEY (NomeAtributos da
CP)}
{CONSTRAINT nomeRestricao FOREIGN KEY (NomeAtributos da CE)
REFERENCES
NomeTabela(NomeAtributos)}
)
Define a estrutura da tabela, suas restries de integridade e cria
uma tabela vazia
DEFAULT: Define valor padro para um atributo
Tipos de Dados e Domnios
Tipos de Dados
Numrico
Inteiros
Integer (int), smallint
Reais
Float, Real, Double Precision
Formatados
Decimal (i, j), Numeric (i, j)
Dia-Hora
datetime
Caractere-String
Tamanho fixo
Char (n)
Tamanho variado
Varchar (n)
Fonte: Microsoft SQL Server - Books On Line Data Types (T-SQL)
CREATE TABLE Peca
(CodPeca char(4) NOT NULL,
NomePeca varchar(50) NOT NULL,
CorPeca varchar(20) NULL,
CidadePeca varchar(40) NULL,
CONSTRAINT CP_Peca
PRIMARY KEY (CodPeca));
E
X
E
M
P
L
O
CREATE TABLE Fornec
(CodFornec char(4) NOT NULL,
NomeFornec varchar(50) NOT NULL,
CidadeFornec varchar(40) NULL,
CONSTRAINT CP_Fornec
PRIMARY KEY (CodFornec));
E
X
E
M
P
L
O
CREATE TABLE Pedido
(CodPeca char(4) NOT NULL,
CodFornec char(4) NOT NULL,
Data date NOT NULL,
Qtdade integer NOT NULL DEFAULT 0,
CONSTRAINT CP_Pedido
PRIMARY KEY (CodPeca, CodFornec, Data),
CONSTRAINT CE_Peca
FOREIGN KEY (CodPeca) REFERENCES Peca(CodPeca),
CONSTRAINT CE_Fornec
FOREIGN KEY (CodFornec) REFERENCES Fornec(CodFornec));
Definindo Banco de Dados
Comando para alterar tabela
ALTER TABLE
Permite adicionar, remover ou alterar a definio de uma coluna
ou restrio da tabela
RIs bsicas:
colunas chave no podem ser removidos
colunas NOT NULL no podem ser inseridas
ADD/ALTER/DROP COLUMN/CONSTRAINT
Exemplo: ALTER TABLE Fornec ADD CGC char(15)
Comando para excluir tabela
DROP TABLE
Remove uma tabela com todas as suas linhas
Comando para excluir banco de dados
DROP DATABASE
Remove todo o BD
Exerccio: Continuao
A empresa est organizada em departamentos
com um nome e um nmero nicos e um empregado que gerencia o
departamento, juntamente com a data em que comeou a gerenciar
Um departamento controla projetos
cada qual com um nome, nmero nicos
Armazenamos o nome de cada empregado
CPF, salrio e data de nascimento. Um empregado est alocado a
um departamento, mas pode trabalhar em diversos projetos, que
no so necessariamente controlados pelo departamento.
Controlamos o nmero de horas semanais que um empregado
trabalha em cada projeto.
Povoando um Banco de Dados
Operaes para manipular os dados do banco
SQL LMD
Inserir (insert)/alterar (update)/apagar (delete)
linhas das tabelas
Instrues declarativas - especifica-se o que fazer e
no como fazer
Povoando um Banco de Dados
Insero de dados
Sintaxe
INSERT [INTO] nome_tabela [(lista_atributos)] VALUES
(lista_valores)
Exemplos
INSERT INTO fornec VALUES ('F1', 'Fornecedor 1', 'Salvador')
INSERT INTO fornec (CodFornec, NomeFornec) VALUES ('F2',
'Fornecedor 2')
FALAR DE INSERIR VALORES NULOS!
Excluso de dados
Sintaxe
DELETE FROM nome_tabela [WHERE condio]
Exemplo
DELETE FROM fornec WHERE CodFornec = 'F1'
Povoando um Banco de Dados
Alterao de dados
Sintaxe
UPDATE nome_tabela
SET nome_atributo_1 = Valor
[{, nome_atributo_n = Valor}]
[WHERE condio]
Exemplos
UPDATE fornec
SET cidade = 'Salvador'
UPDATE fornec
SET cidade = Feira de Santana'
WHERE NomeFornec = 'Fornecedor 2'
Exerccios
Acrescente o atributo sexo do empregado e
cidade da agncia
Insira linhas no seu banco de dados
Consultando BDs
Exemplo
CodPea NomePea CorPea CidadePea
P1 Parafuso Cinza Salvador
P2 Rosca Dourada Fortaleza
P3 Alicate Verde Rio de Janeiro
CodFornec NomeFornec CidadeFornec
F1 Silva Salvador
F2 Souza Rio de Janeiro
F3 lvares Fortaleza
F4 Tavares Salvador
CodPea CodFornec DataPedido Qtdade
P1 F1 12/5/2003 300
P1 F2 8/12/2002 200
P1 F3 30/03/2004 500
P2 F1 5/10/2002 100
P2 F4 24/06/2003 150
Pea
Fornecedor
Pedido
Consultando Dados
Consultas simples
SELECT <lista de atributos>
FROM <lista de tabelas>
[WHERE <condio de seleo>]
Exemplo:
Selecione todas as peas
Selecione o nome da pea
cujo o cdigo seja
igual a P1
Liste as cidades dos
fornecedores
SELECT *
FROM Pea
SELECT NomePea
FROM Pea
WHERE CodPeca = P1
SELECT DISTINCT CidadeFornec
FROM Fornec
Exerccios
Liste os dados de cada departamento
Liste o nome de cada projeto
Liste as cidades que possuem agncia (sem
repetio)
Liste os dados da empregada de nome Maria
Liste o nome e a data de nascimento de cada
empregado do sexo masculino cujo salrio
seja maior que R$ 500,00
Liste o nome da agncia e o identificador do
seu gerente