Vous êtes sur la page 1sur 36

Banco de dados II

Professora Cristiane de Ftima dos Santos Cardoso

2011/01

DDL - Linguagem de Definio de Dados


Permite definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL tem extenses proprietrias no DDL. Os comandos bsicos da DDL so poucos: CREATE: cria um objeto (tabela) dentro da base de dados. DROP: apaga um objeto do banco de dados. Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usurio alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente. Outros comandos DDL:
ALTER TABLE CREATE INDEX ALTER INDEX DROP INDEX CREATE VIEW DROP VIEW
25/03/11

COMANDO BSICOS DA DML

25/03/11

DML COMANDOS BSICOS


INS E R T INTO nome _ta be la (C OL 1, C OL 2,...C OL N) VAL U E S (VAL 1,VAL 2,...,VAL n)

O nome das colunas pode ser omitido se todos os valores forem inseridos (na ordem correta)

25/03/11

TABELA ASSUNTO E TABELA EDITORA

25/03/11

INSERINDO REGISTROS

Inserindo registros sem especificar o nome dos campos (deve ser especificado Na ordem em que os campos foram definidos no CREATE TABLE):

25/03/11

CONSULTA SIMPLES
a operao mais realizada Sua complexidade e tempo de resposta so diretamente ligados a quantidade de tabelas usadas e tamanho das mesmas. Comando select:
SELECT COL1, COL2, ...., COLN FROM nome_tabela

25/03/11

CONSULTANDO
SELECT CODIGO, TITULO FROM LIVRO SELECT * FROM LIVRO Selecionando CODIGO E TITULO DE LIVRO Selecionando tudo DE LIVRO

25/03/11

CLUSULA WHERE
Usamos a clusula where quando desejamos filtrar linhas da tabela. Uma condio dever ser estabelecida, por exemplo: a) Livros com preos superiores a R$ 50,00 b) Livros cujos ttulos possuam a palavra 'DADO' c) Livros que foram lanados a mais de 5 anos

25/03/11

CONDIES
Expresso lgica Pode usar operadores relacionais (>,<,=,>=,<=,<>) Pode usar operadores lgicos (AND, OR, E NOT) Pode usar predicados prprios da linguagem SQL ( IS (NOT) NULL, IS (NOT) LIKE, IN e EXISTS Sero selecionadas as linhas que apresentarem valor VERDADEIRO para a expresso avaliada

25/03/11

a) Livros com preos superiores a R$ 50,00


SELECT * FROM LIVRO WHERE PRECO>50

b) Livros com preos superiores a R$ 50,00 e com o assunto 'P'


SELECT * FROM LIVRO WHERE PRECO>50 AND ASSUNTO ='P'
25/03/11

c) Livros que no tenham sido lanados (lancamento null)


SELECT * FROM LIVRO WHERE LANCAMENTO IS NULL

d) Livros que j tenham sido lanados (lancamento NO null)


SELECT * FROM LIVRO WHERE LANCAMENTO IS NOT NULL
25/03/11

e) Livros cujo ttulo se inicie por Bancos


SELECT * FROM LIVRO WHERE TITULO LIKE 'BANCOS%' Obs.: SQL padro utiliza IS LIKE, % caractere curinga

f) Livros que possuam 'Bancos' em qualquer lugar do ttulo


SELECT * FROM LIVRO WHERE TITULO LIKE '%BANCOS%'
25/03/11

g) Selecione as editora 'Mirandelo Editora ou 'Mirandela Editora'


SELECT * FROM EDITORA WHERE NOME LIKE 'MIRANDEL_ EDITORA'

h) Selecione os livros que custam entre R$ 30,00 e R$ 100,00


SELECT * FROM LIVRO WHERE PRECO BETWEEN 30 AND 100
25/03/11

i) Selecione os livros cujo assunto seja S, P ou B


SELECT * FROM LIVRO WHERE ASSUNTO IN('S', 'P', 'B')

j) Selecione o cdigo, o ttulo e o preo dos livros que contenham a expresso 'LINGUAGEM C'
SELECT CODIGO, TITULO, PRECO FROM LIVRO WHERE TITULO LIKE '%LINGUAGEM C%'
25/03/11

ATUALIZAO DE INFORMAO
UPDATE nome_tabela SET COL1=VAL1, COL2=VAL2,...,COLN=VALN WHERE expressao_lgica Exemplo: a) Acrescentar 10% ao valor dos livros
UPDATE LIVRO SET PRECO = PRECO*1.1
25/03/11

b) mudar o ttulo e valor do livro de cdigo 2 que passa a ser PROGRAMAO EM LINGUAGEM C de valor R$ 42,00
UPDATE LIVRO SET PRECO = 42, TITULO = 'PROGRAMAO EM LINGUAGEM C' WHERE CODIGO = 2

25/03/11

EXCLUSO DE LINHAS
Tambm usam a clusula where DELETE FROM nome_tabela WHERE expressao_logica Exemplo: a) Excluir todos os livros da tabela livro

DELETE FROM LIVRO

25/03/11

CENTRO

25/03/11

25/03/11

25/03/11

25/03/11

AGRUPANDO DADOS

25/03/11

POR QUE AGRUPAR DADOS?


As vezes queremos saber informaes sobre o conjunto de dados. Ex.: quantos livros custam mais que 50,00, qual o preo mdio dos produtos

25/03/11

FUNES AGREGADAS
Operam sobre grupos de dados (obtm estatsticas sobre eles) Retornam uma tabela de uma linha e uma coluna. Ex.
Contagem Soma Mdia Valor Mximo Valor Mnimo Desvio Padro
25/03/11

CONTAGEM
Quantas linhas satisfazem uma determinada condio? A funo COUNT recebe um parmetro e retorna um nmero. Contagem do nmero de linhas: Linhas de LIVRO com lanamento Preenchido: Linhas de LIVRO com preo maior Que R$ 50,00:
SELECT COUNT(*) FROM LIVRO

SELECT COUNT(LANCAMENTO) FROM LIVRO

SELECT COUNT(*) FROM LIVRO 25/03/11 PRECO>50 WHERE

SOMA
Somando os preos dos livros
SELECT SUM(PRECO) FROM LIVRO

MDIA
Obtendo a mdia dos preos (apenas para valores no nulos)
SELECT AVG(PRECO) FROM LIVRO

25/03/11

VALOR MXIMO
Maior preo da tabela de livros cujo assunto seja 'P'
SELECT MAX(PRECO) FROM LIVRO WHERE ASSUNTO = 'P'

VALOR MNIMO
Menor preo da tabela de livros cujo assunto seja 'B'
SELECT MIN(PRECO) FROM LIVRO WHERE ASSUNTO='B'

25/03/11

GROUP BY
As funes apresentadas anteriormente geravam um valor, mas se quisssemos saber a mdia dos preos dos livros de cada assunto como faramos?

SELECT AVG(PRECO) FROM LIVRO WHERE ASSUNTO='B' SELECT AVG(PRECO) FROM LIVRO WHERE ASSUNTO='P' SELECT AVG(PRECO) FROM LIVRO WHERE ASSUNTO='S'
25/03/11

CLUSULA GROUP BY
SELECT COL1, COL2,...,COLN, FUNCAO1,..,FUNCAON FROM nome_tabela WHERE CONDIO GROUP BY COL1,...,COLN

Qual o preo mdio dos livros para cada assunto?

SELECT ASSUNTO, AVG(PRECO) FROM LIVRO GROUP BY ASSUNTO


25/03/11

Quantos livros existem para cada assunto?

SELECT ASSUNTO,COUNT(*) FROM LIVRO GROUP BY ASSUNTO

Qual o preo do livro mais caro de cada assunto dentre os que j foram lanados?

SELECT ASSUNTO,MAX (PRECO) FROM LIVRO WHERE LANCAMENTO IS NOT NULL GROUP BY ASSUNTO

Quantos livros foram lanados por cada editora?

25/03/11

Quantos livros existem para cada assunto?

SELECT ASSUNTO,COUNT(*) FROM LIVRO GROUP BY ASSUNTO

Qual o preo do livro mais caro de cada assunto dentre os que j foram lanados?

SELECT ASSUNTO,MAX (PRECO) FROM LIVRO WHERE LANCAMENTO IS NOT NULL GROUP BY ASSUNTO

Quantos livros foram lanados por cada editora?

SELECT EDITORA, COUNT(*) FROM LIVRO WHERE LANCAMENTO IS NOT NULL GROUP BY EDITORA

25/03/11

Qual a mdia de preo para cada cdigo e assunto?

25/03/11

Qual a mdia de preo para cada cdigo e assunto?


SELECT CODIGO, ASSUNTO, AVG(PRECO) FROM LIVRO GROUP BY CODIGO, ASSUNTO

25/03/11

CLUSULA HAVING

25/03/11

25/03/11

Vous aimerez peut-être aussi