Logo Passei Direto
Buscar

Introdução à Linguagem SQL

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

03/08/2010
1
Prof. Esp. André Ricardo Jovetta
Banco de Dados II 2
� A linguagem SQL representa o padrão para linguagens 
de banco de dados relacionais;
� SQL -linguagem de consulta Estruturada.
Banco de Dados II 3
� A linguagem SQL é divididas em grupos:
◦ Linguagem de definição de dados (Data-definition Language –DDL). A 
SQL DDL proporciona comandos para a definição de esquemas de 
relações, exclusão de relações, criação de índices e modificação nos 
esquemas de relações;
◦ Linguagem interativa de manipulação de dados (Data-manipulation 
Language – DML). A SQL DML abrange uma linguagem de consulta 
baseada tanto na álgebra relacional quanto no cálculo relacional de 
tuplas. Engloba também comandos para inserção, exclusão e 
modificação de tuplas no banco de dados;
� 0 conjunto das relações em um banco de dados deve ser especificado 
para o sistema por meio de uma linguagem de definição de dados 
(DDL);
� A SQL DDL permite não só a especificação de um conjunto de 
relações, como também informações acerca de cada uma das 
relações, incluindo:
◦ O esquema de cada relação.
◦ O domínio dos valores associados a cada atributo.
◦ As regras de integridade.
4Banco de Dados II
03/08/2010
2
� Principais comandos:
◦ create database nome_do_banco: cria um banco de dados;
◦ create table: cria as tabelas de um banco de dados;
◦ primary key: inclui a lista dos atributos que constituem a chave 
primária;
◦ foreign key: inclui tanto a relação dos atributos que constituem a 
chave estrangeira quanto o nome da relação à qual a chave 
estrangeira faz referência;
Banco de Dados II 5
� char(n) char(n) char(n) char(n) é uma cadeia de caracteres de tamanho fixo, com o 
tamanho nnnn definido pelo usuário;
� varchar(n) varchar(n) varchar(n) varchar(n) é uma cadeia de caracteres de tamanho variável, 
com o tamanho nnnn máximo definido pelo usuário;
� intintintint é um inteiro;
� numeric(p,d) numeric(p,d) numeric(p,d) numeric(p,d) é um número de ponto fixo cuja precisão é 
definida pelo usuário;
Banco de Dados II 6
� float(n) float(n) float(n) float(n) é um número de ponto flutuante com a precisão 
definida pelo usuário em pelo menos nnnn dígitos;
� datedatedatedate é um calendário contendo um ano (com quatro dígitos), 
mês e dia do mês;
� timetimetimetime representa horário, em horas, minutos e segundos.
Banco de Dados II 7
� Tabela cliente
create table cliente
(nome_cliente char (20) not null,
rua_cliente char (30) not null,
cidade_cliente char (30) not null,
primary key (nome_cliente))
Banco de Dados II 8
03/08/2010
3
� Tabela agência
create table agencia
(nome_agencia char (15) not null,
cidade_agencia char (30),
ativo numeric(16,2),
primary key (nome_agencia))
Banco de Dados II 9
� Tabela conta
create table conta
(numero_conta char (10) not null,
nome_agencia char (15),
saldo numeric(12,2),
primary key (numero_conta),
foreign key (nome_agencia) references agencia)
Banco de Dados II 10
� Tabela depositante
create table depositante
(nome_cliente char (20) not null,
numero_conta char (10) not null,
primary key (nome_cliente, numero_conta),
foreign key (nome_cliente) references cliente,
foreign key (numero_conta) references conta)
Banco de Dados II 11
� Tabela de empréstimo
create table emprestimo
(numero_emprestimo char(10) not null,
nome_agencia char(20) not null,
quantia float not null,
primary key (numero_emprestimo),
foreign key (nome_agencia) references agencia)
Banco de Dados II 12
03/08/2010
4
� Tabela tomador
create table tomador 
(nome_cliente char(20) not null,
numero_emprestimo char(10) not null,
primary key (nome_cliente, numero_emprestimo),
foreign key (nome_cliente) references cliente,
foreign key (numero_emprestimo) references emprestimo)
Banco de Dados II 13
� drop table: remove todas as informações de uma relação do banco 
de dados.
◦ Ex:
drop table cliente
� alter table: adiciona, exclui e renomeia atributos a uma relação 
existente.
� Ex1:
alter table agencia add estado varchar(2)
� Ex2:
alter table agencia drop estado
� Ex3:
alter table agencia rename estado to cidade_estado
Banco de Dados II 14
� Para inserir dados em uma relação podemos especificar uma tupla 
a ser inserida ou escrever uma consulta cujo resultado é um 
conjunto de tuplas a inserir;
� As tuplas a inserir devem possuir a ordem correta;
� Um comando insert simples é um pedido para inserção de uma 
tupla;
Banco de Dados II 15
“Inserir a informação que existe na agência de Perryridge, 
cidade de Araras e que ela tem um ativo de 1200 dólares”
Insert into agencia
values (’ Perryridge’, ‘Araras’, 1200.00)
� Para ajudar os usuários que não lembram da ordem desses 
atributos, a SQL permite a especificação desses atributos como parte 
do comando insert.
Insert into agencia (nome_agencia, cidade_agencia, ativo)
values (’ Perryridge’, ‘Araras’, 1200.00)
Banco de Dados II 16
03/08/2010
5
� Mais genericamente, podemos querer inserir tuplas de acordo com 
o resultado da consulta;
“Oferecer um brinde para todos os clientes da agência Perryridge, 
uma nova caderneta de poupança de 200 dólares para cada conta 
empréstimo que eles tenham. O número do empréstimo serve como 
número da caderneta de poupança”
Insert into conta
select numero_emprestimo, nome_agencia, 200
from emprestimo
where nome_agencia = ‘Perryridge’
Banco de Dados II 17
� É possível, na inserção de tuplas, fornecer valores somente para 
alguns atributos do esquema;
Insert into conta
values (‘A401’, 'Perryridge' ,null)
Banco de Dados II 18
� Tabela cliente
Banco de Dados II 19
nome_clientenome_clientenome_clientenome_cliente rua_crua_crua_crua_clientelientelienteliente cidade_clientecidade_clientecidade_clientecidade_cliente
Jones Main Harrison
Smith North Rye
Hayes Main Harrison
Curry North Rye
Lindsay Park Pittsfield
Turner Putnam Stamford
Williams Nassau Princeton
Adams Spring Pittsfield
Johnson Alma Palo alto
Glenn Sand Hill Woodside
Brooks Senator Brooklyn
Green Walnut Stamford
� Tabela agencia
Banco de Dados II 20
nome_agencianome_agencianome_agencianome_agencia cidade_agenciacidade_agenciacidade_agenciacidade_agencia ativoativoativoativo
Downtown Brooklyn 9000000
Redwood Palo Alto 2100000
Perryridge Horseneck 1700000
Mianus Horseneck 400000
Round Hill Horseneck 8000000
Pownal Bennington 3000000
North town Rye 3700000
Brighton Brooklyn 7100000
03/08/2010
6
� Tabela emprestimo
Banco de Dados II 21
numero_emprestimo nome_agencia quantia
L17 Downtown 1000
L23 Redwood 2000
L15 Perryridge 1500
L14 Downtown 1500
L93 Mianus 500
L11 Round Hill 900
L16 Perryridge 1300
� Tabela tomador
Banco de Dados II 22
nome_clientenome_clientenome_clientenome_cliente numero_emprestimonumero_emprestimonumero_emprestimonumero_emprestimo
Jones L17
Smith L23
Hayes L15
Johnson L14
Curry L93
Smith L11
Williams L17
Adams L16
� Tabela conta
Banco de Dados II 23
numero_contanumero_contanumero_contanumero_conta nome_agencianome_agencianome_agencianome_agencia saldosaldosaldosaldo
A101 Downtown 500
A215 Mianus 700
A102 Perryridge 700
A305 Round Hill 350
A201 Brighton 900
A222 Redwood 700
A217 Brighton 750
� Tabela depositante
Banco de Dados II 24
nome_clientenome_clientenome_clientenome_cliente numero_contanumero_contanumero_contanumero_conta
Johnson A101
Smith A215
Hayes A102
Turner A305
Johnson A201
Jones A217
Lindsay A222
03/08/2010
7
� Um pedido para remoção de dados é expresso muitas vezes do 
mesmo modo que uma consulta;
� Podemos remover somente tuplas inteiras;
� Não podemos excluir valores de um atributo em particular;
� Em SQL, a remoção é expressa por:
delete from r
where P
� Em que P representa um predicado e r, uma relação.
Banco de Dados II 25
Delete from conta where nome_agencia = ‘Perryridge’
“Remova os registros de todas as contas com saldos abaixo da 
média do banco”
delete from conta
where saldoempréstimo”
delete from emprestimo
� Outros exemplos da cláusula delete:
“Remova todos os empréstimos com total entre 1.300 e 1500 dólares”
delete from emprestimo
where total between 1300 and 1500
Banco de Dados II 27
“Remova todos os registros de contas do cliente Smith.”
delete from depositante
where nome_cliente = ‘Smith’
“Remova todas as contas de cada uma das agências localizadas em 
Perryridge”
delete from depositante
where numero_conta in 
(select numero_conta from conta
where nome_agencia = 'Perryridge');
Banco de Dados II 28
03/08/2010
8
� Em determinadas situações, podemos querer modificar valores das 
tuplas sem, no entanto, alterar todos os valores;
“Suponha que o pagamento da taxa de juros anual esteja sendo 
efetuado e todos os saldos deverão ser acrescidos de 5 por cento”
update conta
set saldo = saldo *1.05
Banco de Dados II 29
“Suponha agora que contas com saldo superior a 10 mil dólares 
recebam 6 por cento de juros, embora todas as outras recebam 5 
por cento.”
update conta 
set saldo = saldo * 1.06
where saldo > 700
update conta 
set saldo = saldo * 1,05
where saldo

Mais conteúdos dessa disciplina