Você está na página 1de 35

Fundamentos de Banco de Dados

2013/1
Aula 15
Pablo Ariel do Prado Lpez

Fundamentos de Banco de Dados

28/05/2013

Agenda
Modelo Fsico
Comandos SQL (DML)
Exerccios

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
SELECT
uma declarao SQL que retorna um conjunto de
resultados de registros de uma ou mais tabelas.
Recupera zero ou mais linhas de uma ou mais
tabelas-base, tabelas temporrias ou vises em um
banco de dados.
Por ser declarativa, consultas SELECT especificam um
conjunto de resultados, mas no especificam como
calcul-los ou obt-los.

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Sintaxe:
SELECT [ALL | DISTINCT]
[TOP (n)] lista [ INTO nova_tabela ]
[ FROM tabela(s) origem ]
[ WHERE condies ]
[ GROUP BY expresso para agrupamento]
[ HAVING condies ]
[ ORDER BY expresso para ordenao [ ASC |
DESC ] ]
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
A instruo SELECT INTO cria uma tabela
e a popula com o conjunto de
resultados da instruo SELECT.
Pode ser usado para combinar dados de
vrias tabelas ou exibies em uma nica
tabela.
A estrutura da nova tabela definida
pelos atributos das expresses na lista de
seleo.
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
A sua sintaxe representada por:
SELECT atributos INTO tabela_nova
FROM
tabela_origem
WHERE
condies_desejadas

Fundamentos de Banco de Dados

28/05/2013

Exerccios

Execute os comandos abaixo:


CREATE TABLE Aluno(
matricula int NOT NULL,
nome varchar(50) NOT NULL,
telefone varchar(20) NULL,
endereco varchar(150) NULL,
idade int NOT NULL)

INSERT INTO Aluno(matricula, nome, telefone, endereco, idade)


VALUES (2010001,'Jos Maria','2233-5566', 'Rua bl bl bl bl bl', 15)
INSERT INTO Aluno(matricula, nome, telefone, endereco, idade)
VALUES (2010002,'Maria Jos ','5544-3300', 'Rua bl bl bl bl bl', 14)
INSERT INTO Aluno(matricula, nome, telefone, endereco, idade)
VALUES (2010003,'Jair Pereira','1122-7788', 'Rua bl bl bl bl bl', 16)
Fundamentos de Banco de Dados

28/05/2013

Exerccios

Selecione todos os dados da tabela atravs de uma


instruo SELECT:
De posse do resultado da instruo, execute os seguintes
comandos:
1. Retornar todas as colunas de todos os registros da tabela.
2. Retornar o nome e a idade de todos os alunos.
3. Retornar o nome e o telefone dos alunos com idade >= 15.
4. Retornar a matricula e o nome do aluno com nome= Jos
Maria.
5. Retornar a matricula, o nome e o telefone dos alunos com
matricula > 2010001
6. Inserir 3 novos alunos na tabela (uma instruo para cada um).
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
UPDATE
uma instruo da linguagem SQL que altera os dados de um
ou mais registros em uma tabela.
Sintaxe do comando:
UPDATE nome_tabela
SET nome_coluna = novo_valor [, nome_coluna = novo_valor ... ]
[ WHERE condio ]

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Para o comando UPDATE ser bem sucedido, o
usurio deve ter:
Privilgios de manipulao de dados na tabela ou
coluna
O valor atualizado no deve entrar em conflito
com todas as restries aplicveis

Chaves Primrias ,
ndices nicos,
Restries CHECK e
Restries NOT NULL.
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Na tabela Aluno, atualize as seguintes
informaes:
1. Inclua a coluna datanasc, do tipo datetime.
2. Atualize a data de nascimento de cada um
dos alunos registrados
3. Altere o telefone do aluno Jair Pereira para
o nmero 3459-9034
4. Inclua a coluna status, do tipo caracter (1)
5. Atualize todos os alunos para o status A
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
DELETE
a instruo na linguagem que remove um ou mais registros
de uma tabela.
Um subconjunto pode ser definido para excluso usando uma
condio, caso contrrio, todos os registros so removidos.

Sintaxe
DELETE FROM nome_tabela
[WHERE (condio)]

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
FROM: Especifica a tabela correspondente de onde
os dados sero removidos.
WHERE: Especifica as condies usadas para limitar o
nmero de linhas que so excludas. Se uma clusula
WHERE no for fornecida, DELETE remover todas as
linhas da tabela.

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Para excluir todas as linhas em uma tabela, mais indicado utilizar a
instruo TRUNCATE TABLE, por ser mais rpido que DELETE e
utilizar menos recursos do sistema e do log de transaes.
A instruo DELETE pode falhar se violar um gatilho ou tentar
remover uma linha referenciada por dados em outra tabela com
uma restrio FOREIGN KEY. Se DELETE remover vrias linhas e
qualquer uma das linhas removidas violar um gatilho ou uma
restrio, a instruo ser cancelada, um erro ser retornado e
nenhuma linha ser removida.
O mesmo ocorre quando encontra um erro aritmtico (estouro,
diviso por zero ou um erro de domnio). Todo o lote do comando
cancelado e uma mensagem de erro retornada.
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Para a tabela aluno acima criada, execute os
seguintes comandos:
1.
2.
3.
4.

Excluir o aluno de matricula 2010002.


Excluir todos os alunos com idade < 16
Excluir o aluno chamado Jair Pereira
Excluir todos os registros da tabela.

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
TRUNCATE
Remove todas as linhas de uma tabela, sem excluir
fisicamente a tabela, o que feito pelo comando
DROP.
No
registra
as
excluses
de
linhas
individuais. TRUNCATE TABLE semelhante
instruo DELETE sem nenhuma clusula WHERE;
entretanto, TRUNCATE TABLE mais rpida e utiliza
menos recursos de sistema e log de transaes.

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Sintaxe
TRUNCATE TABLE [ { database_name .[ schema_name ] . |
schema_name . } ] table_name [ ; ]
database_name o nome do banco de dados.
schema_name o nome do esquema ao qual a tabela
pertence.
table_name o nome da tabela a ser truncada ou da qual
todas as linhas so removidas. table_name deve ser um
literal.

Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Em comparao com a instruo DELETE, TRUNCATE
TABLE possui as seguintes vantagens:
O espao utilizado para log de transaes menor.
A instruo DELETE remove as linhas uma de cada
vez e registra uma entrada no log de transaes para
cada linha excluda.
TRUNCATE TABLE remove os dados desalocando as
pginas de dados usadas para armazenar os dados
da tabela e registra somente as desalocaes de
pgina no log de transaes.
Fundamentos de Banco de Dados

28/05/2013

Comandos SQL
Exclua todos os registros da tabela
Aluno utilizando a instruo TRUNCATE
e em seguida selecione a tabela atravs
da Instruo SELECT e verifique o
resultado.

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Considere o modelo conceitual abaixo:

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Crie um banco de dados chamado SisPedidos,
utilize parmetros opcionalmente, para
armazenar as estruturas a seguir.
Crie todas as estruturas, atentando aos tipos
de dados de cada uma (Restries de
Domnio).
Os campos cdigo ou nmero devem ser
considerados as chaves primrias das tabelas.

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Acrescente os dados, conforme descrito
abaixo, s tabelas criadas no banco de dados
(INSERT
INTO
(<campos>)
VALUES
(<valores>)). Crie os Scripts e execute no
banco de dados criado.
Tabela de Clientes (segue estrutura abaixo).

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Cd

Nome

Endereo

Cidade

CEP

UF

CNPJ

IE

720

Ana

Rua 17 n. 19

Niteri

24358310

RJ

12113231/0001-34

2134

870

Flvio

Av. Pres. Vargas 10

So Paulo

22763931

SP

22534126/9387-9

4631

110

Jorge

Rua Caiapo 13

Curitiba

30078500

PR

14512764/9834-9

222

Lcia

Rua Itabira 123 loja 9

Belo
Horizonte

22124391

MG

28315213/9348-8

2985

830

Maurcio

Av. Paulista 1236 sl 2345

So Paulo

3012683

SP

32816985/7465-6

9343

130

Edmar

Rua da Praia sn

Salvador

30079300

BA

23463284/234-9

7121

410

Rodolfo

Largo da Lapa 27 sobrado

Rio de Janeiro

30078900

RJ

12835128/2346-9

7431

20

Beth

Av. Climrio 45

So Paulo

25679300

SP

32485126/7326-8

9280

157

Paulo

Tv. Moraes c/3

Londrina

PR

32848223/324-2

1923

180

Lvio

Av. Beira Mar n 1256

Florianpolis

30077500

SC

12736571/2347-4

260

Susana

Rua Lopes Mendes 12

Niteri

30046500

RJ

21763571/232-9

2530

290

Renato

R. Meireles 123 bl 2 sl 345

So Paulo

30225900

SP

13276571/1231-4

1820

390

Sebastio

Rua da Igreja 10

Uberaba

30438700

MG

3217654/213-3

9071

234

Jos

Quadra 3 bl 3 sl 1003 Fundamentos


Dados
Brasliade Banco de
22841650

DF

21763576/1232-3 28/05/2013
2931

Exerccios
Tabela de Vendedores
Cdigo

Nome

Salrio

Faixa Comisso

209

Jos

1.800,00

111

Carlos

2.490,00

11

Joo

2.780,00

240

Antnio

9.500,00

720

Felipe

4.600,00

213

Jonas

2.300,00

101

Joo

2.650,00

310

Josias

870,00

250

Maurcio

2.930,00

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Tabela de Vendedores
Cdigo

Nome

Salrio

Faixa Comisso

209

Jos

1.800,00

111

Carlos

2.490,00

11

Joo

2.780,00

240

Antnio

9.500,00

720

Felipe

4.600,00

213

Jonas

2.300,00

101

Joo

2.650,00

310

Josias

870,00

250

Maurcio

2.930,00

Fundamentos de Banco de Dados

28/05/2013

Exerccios

Tabela de Pedidos
Nmero

Prazo

CodCliente

CodVendedor

121

20

410

209

97

20

720

101

101

15

720

101

137

20

720

720

148

20

720

101

189

15

870

213

104

30

110

101

203

30

830

250

98

20

410

209

143

30

20

111

Fundamentos de Banco de Dados

28/05/2013

Exerccios

Tabela de Pedidos - Continuao


Nmero

Prazo

CodCliente

CodVendedor

105

15

180

240

111

20

260

240

103

20

260

11

91

20

260

11

138

20

260

11

108

15

290

310

119

30

390

250

127

10

410

11

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Tabela de Produtos
Cdigo

Unidade

Descrio

Valor Unitrio

25

Kg

Queijo

0,97

31

BAR

Chocolate

0,87

78

Vinho

2,00

22

Linho

0,11

30

SAC

Acar

0,30

53

Linha

1,80

13

Ouro

6,18

45

Madeira

0,25

87

Cano

1,97

77

Papel

1,05

Fundamentos de Banco de Dados

28/05/2013

Exerccios

Tabela Item de Pedidos


Nmero Produto

Cdigo Produto

Quantidade

121

25

10

121

31

35

97

77

20

101

31

101

78

18

101

13

98

77

148

45

148

31

148

77

148

25

10

148

78

30

Fundamentos de Banco de Dados

28/05/2013

Exerccios

Tabela Item de Pedidos Continuao 1


Nmero Produto

Cdigo Produto

Quantidade

104

53

32

203

31

189

78

45

143

31

20

143

78

10

105

78

10

111

25

10

111

78

70

103

53

37

91

77

40

138

22

10

138

77

35

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Tabela Item de Pedidos Continuao 2
Nmero Produto

Cdigo Produto

Quantidade

108

13

17

119

77

40

119

13

119

22

10

119

53

43

137

13

Fundamentos de Banco de Dados

28/05/2013

Exerccios

Listar todos os produtos com as respectivas descries, unidades e valores


unitrios, obtendo o seguinte resultado (SELECT simples sem WHERE com
especificao de todos os campos): Abaixo est o exemplo do resultado
esperado.
Descrio
Unidade
Valor Unitrio
Queijo

Kg

0,97

Chocolate

BAR

0,87

Vinho

2,00

Linho

0,11

Acar

SAC

0,30

Linha

1,80

Ouro

6,18

Madeira

0,25

Cano

1,97

Papel

1,05

Fundamentos de Banco de Dados

28/05/2013

Exerccios
Listar da tabela CLIENTE o CNPJ, o nome do cliente e seu endereo.
Listar todo o contedo de vendedor, obtendo o seguinte resultado (SELECT
sem a especificao de campos coringa *).
Problema: Listar o numero do pedido, o cdigo do produto e a quantidade
dos itens do pedido com a quantidade igual a 35 da tabela item de pedido,
obtendo o seguinte resultado atravs de um SELECT com WHERE0.
Quais so os clientes que moram em Niteri?
Listar os produtos que tenham unidade igual a M e valor unitrio igual a
R$ 1,05 da tabela Produtos.
Listar o cdigo e a descrio dos produtos que tenham o valor unitrio na
faixa de R$ 0,32 at R$ 2,00, obtendo o seguinte resultado (operador
between).
Listar todos os produtos que tenham o seu nome comeando por Q,
obtendo o resultado atravs do operador LIKE, com o coringa %.
Fundamentos de Banco de Dados

28/05/2013

Exerccios

Listar os vendedores que no comeam por Jo, obtendo o resultado com


o operador LIKE, com o coringa %.
Listar os vendedores que so da faixa de comisso A e B, obtendo o
resultado atravs dos operadores IN e um conjunto de valores:
Mostrar os clientes que no tenham inscrio estadual, obtendo o
resultado atravs da instruo IS NULL:
Mostrar em ordem alfabtica a lista de vendedores e seus respectivos
salrios fixos, obtendo o resultado atravs da clausula ORDER BY
[ASC/DESC]:
Listar os nomes, cidades e estados de todos os clientes, ordenados por
estado e cidade de forma descendente, obtendo o resultado atravs dp
operador ORDER BY com mais de um campo especificado:
Mostrar a descrio e o valor unitrio de todos os produtos que tenham a
unidade KG, em ordem de valor unitrio ascendente, obtendo o resultado
atravs da clausula ORDER BY:
Fundamentos de Banco de Dados

28/05/2013

Obrigado!

Perguntas?
Dvidas?

Fundamentos de Banco de Dados

28/05/2013