banco de dados baseado no material do professor raul paradeda

43
Banco de dados Baseado no material do Professor Raul Paradeda

Upload: internet

Post on 22-Apr-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Banco de dados Baseado no material do Professor Raul Paradeda

Banco de dadosBaseado no material do Professor Raul Paradeda

Page 2: Banco de dados Baseado no material do Professor Raul Paradeda

Revisão• Vimos na aula passada como criar um banco de

dados e realizar alterações e restrições de integridade.

Page 3: Banco de dados Baseado no material do Professor Raul Paradeda

SQL• Crie um banco de dados com o seu nome.• Crie uma tabela chamada alunos.• Crie outra tabela chamada cursos.• Crie outra tabela chamada alu_cur.

• Os atributos das duas primeiras tabelas você escolhe, apenas temos que ter chaves primárias em cada uma.

• Na tabela alu_cur será apresentado apenas chaves estrangeiras das duas primeiras tabelas.

Page 4: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Inserção• Inserir de elementos (tuplas) em uma relação (tabela).• Sintaxe:INSERT INTO tabela [<lista atributos>] VALUES (<lista de valores atômicos>)

• Exemplo:INSERT INTO alunos(nome_alu, sexo) VALUES (‘Johnny’, ‘m’);INSERT INTO alunos VALUES (1, ‘Allan’, 26, ‘1983-10-04’,‘m’);INSERT INTO alunos VALUES (2, ‘André’, 24, ‘1985-11-10’,‘m’);INSERT INTO alunos VALUES (3, ‘Renata’, 20, ‘1989-02-24’,‘f’);INSERT INTO alunos VALUES (4, ‘Lucas’, 26, ‘1983-01-07’,‘m’);

Caso este parâmetro seja a chave primária, normalmente tem-se como auto-increment, não sendo necessário seu preenchimento.

Page 5: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Inserção• Podemos omitir uma ou mais colunas da relação destino. • Toda tupla inserida terá um valor nulo em cada posição de

coluna omitida.• Sintaxe:INSERT INTO <tabela>(<atributos>) VALUES (<valores>);• Exemplo:INSERT INTO alunos(nome_alu, sexo) VALUES (‘Johnny’, ‘m’);

Page 6: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Atualização• O comando UPDATE modifica o valor de atributos de uma ou mais

tuplas.• Sintaxe:

UPDATE <tabela>SET <lista_atributos com atribuições de valores>[WHERE <condição>]

• Omitir a cláusula WHERE implica em modificar todas as tuplas da relação.

Page 7: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Atualização• UPDATE alunos SET id_alu=10 WHERE id_alu=1;

• UPDATE alunos SET id_alu=1 WHERE nome_alu='Allan' ;

• UPDATE alunos SET data_alu=curdate() where data_alu='0000-00-00' ;

• UPDATE alunos SET sexo='m' ;

Page 8: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Remoção• O comando DELETE remove tuplas de uma relação.• Sintaxe:

DELETE FROM tabela[WHERE condição]

• Omitir a cláusula WHERE implica em remover todas as tuplas da relação.• A relação permanece no BD como uma relação vazia.

Page 9: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Remoção• DELETE FROM alunos WHERE id_alu=1;

• DELETE FROM alunos WHERE nome_alu=‘Allan’;

• DELETE FROM alunos;

Page 10: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A sintaxe básica do comando de seleção é:

SELECT <lista atributos>FROM <lista de tabelas>WHERE <condição>Onde: • <lista atributos> é uma lista de nomes de atributos cujos

valores são para ser recuperados pela consulta.• <lista de tabelas> é uma lista de nomes de relações requeridas

para processar a consulta.• <condição> é uma expressão (Booleana) que identifica as

tuplas a serem recuperadas pela consulta, se não houver será selecionada todas as tuplas da relação.

Page 11: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• É usada para listar os atributos desejados no resultado da

consulta, exemplo:SELECT nome, cidade FROM Fornecedores;• Será listado apenas o nome e a cidade de todos os fornecedores.

• O resultado de uma consulta SQL é também uma relação.

Page 12: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A seleção permite duplicação na consulta, exemplo:

SELECT cidade FROM Fornecedores;• Será listado a cidade de todos os fornecedores da relação,

sendo os valores duplicados, caso houver.

Page 13: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Para remover a duplicação é utilizado o parâmetro DISTINCT

na consulta, exemplo:

SELECT DISTINCT cidade FROM Fornecedores;

Page 14: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A cláusula SELECT pode conter expressões aritméticas

envolvendo as operações de adição (+), subtração (-), multiplicação (*) e divisão (/).

SELECT nome, status*2 FROM Fornecedores;

Page 15: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Para renomear atributos na seleção é utilizado o parâmetro

AS, exemplo:SELECT id_fornecedor, status AS situacao FROM

fornecedores;

Page 16: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A cláusula FROM permite que se combine informações de

duas relações, exemplo:Select fornecedores.id_fornecedor, pecas.nome,

fornecedores.cidade, pecas.cidade from fornecedores, pecas;

• As linhas são obtidas combinando-se cada linha da primeira tabela com todas as linhas da segunda tabela:• O esquema resultante é a concatenação dos esquemas

das duas relações fornecidas como argumento.

Page 17: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção

x

y

a

b

c

a

a

b

b

c

c

x

y

x

y

x

y

Page 18: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A eliminação de tuplas incoerentes pode ser feita através do

parâmetro WHERE.Select fornecedores.id_fornecedor, peças.nome,

fornecedores.cidade, peças.cidade from fornecedores, peças where fornecedores.cidade=peças.cidade;

Page 19: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção

Page 20: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - SeleçãoSelect fornecedores.id_fornecedor, peças.nome,

fornecedores.cidade, peças.cidade from fornecedores, peças where fornecedores.cidade=“Natal”;

Page 21: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Encontre todos os identificadores dos fornecedores

localizados na cidade de Pelotas:select id_fornecedorfrom fornecedoreswhere cidade=“Pelotas”;• Encontre todas as matriculas dos alunos com nome de João:Select matriculafrom alunoswhere nome_aluno=“João”;

Page 22: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A cláusula WHERE usa os conectivos lógicos AND, OR e NOT:• Encontre o nome de todas as peças fornecidas por Jones para o

Projeto Classificador

select distinct peças.nomefrom fornecedores, peças, projeto, fornecedor_projeto_pecas where fornecedores.nome=“Jones” AND

projeto.nome=“Classificador”;

Page 23: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Encontre a matricula e o nome de todos os alunos com o

nome de João ou Maria:

select matricula, nome_alunofrom alunoswhere nome_aluno=“João” OR nome_aluno=“Maria”;

Page 24: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Na condição é permitido usar expressões aritméticas de

comparação (=, <>, <, <=, >=, >)• Encontre o nome de todos os fornecedores que fornecem mais de

300 peças para um só projeto:

select distinct fornecedores.nome_fornecedorfrom fornecedores, fornecedor_proj_peças where fornecedor_proj_peças.qde>300;

Page 25: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Encontre todas as informações de todos os alunos do sexo

masculino:

select *from alunoswhere sexo=‘m’;

Page 26: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Operador BETWEEN permite que um atributo seja

comparado dentro de uma faixa especificada.• É permitido usar expressões aritméticas de comparação (=,

<>, <, <=, >=, >)• Encontre o nome de todos os alunos que pagam

mensalidades entre 300 a 700 reais• select nome_aluno

from alunoswhere mensalidade between 300 AND 700;

Page 27: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Operador LIKE permite a comparações em seqüências de

caracteres. • Padrões são descritos usando dois caracteres especiais:• percentual (%) casa com qualquer conjunto de caracteres, exemplo:

select * from fornecedores where cidade LIKE "P%";

Page 28: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• sublinhado (_). O caractere “_” casa com qualquer caractereselect * from fornecedores where cidade LIKE "P_l_t_s";

select * from fornecedores where cidade LIKE "P_l%";

Page 29: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Operador IS NULL verificar se o atribulo é nulo.• Encontre os nomes de todos os projetos cuja cidade não tenha sido

informada na relação

select nome from projeto where cidade is null;

• Pode-se usar IS NOT NULLselect nome from projeto where cidade is not null;

Page 30: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Operador IN permite que um atributo seja comparado com

um conjunto.select nome from peças where cor IN(‘Vermelha’, ‘Azul’);

select * from fornecedores where cidade IN ("Pelotas","Natal");

Page 31: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• O operador IN provê um mecanismo para o aninhamento de

subconsultas:

select matriculafrom alunos where nome IN (

select nome from alunos where nome=“J%”

);

Page 32: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A função EXISTS também provê aninhamento de

subconsultas.• É usada para checar se o resultado de uma consulta

aninhada é vazia ou não.select * from alunoswhere exists (

select * from pagamento where pagamento=“ok”

);

Se existir um aluno com o pagamento OK será apresentado todos os alunos.

Page 33: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Note que quando você está utilizando o operador EXISTS,

não importa o que o comando SELECT interno irá buscar interessa apenas se ele retorna ou não linhas:• select exists (select * from fornecedores where cidade

in ("Pelotas","Natal"));

Page 34: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A cláusula SELECT pode conter funções que operam sobre

uma coleção de valores de uma coluna de uma relação e retorna um valor.• O SQL fornece 5 funções embutidas:• COUNT: número de tuplas ou valores.• SUM: soma os valores de uma coluna.• AVG: calcula a média dos valores de uma coluna.• MAX: identifica o maior valor de uma coluna.• MIN: identifica o menor valor de uma coluna.

• Todas as funções, exceto count(*), ignoram as tuplas com valores nulos.

Page 35: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Quantas relações aluno, curso, disciplina temos?• select count(*) from aluno_curso_disciplina;

• Quantos projetos ativos temos?• select count(distinct pr)

from fornecedor_projeto_pecas;• Quantas peças são fornecidas ao todo?• select sum(qde) from fornecedor_projeto_pecas;

Page 36: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Em médias quantas peças são fornecidas por um determinado

fornecedor em um certo projeto?• select avg(qde) from fornecedor_projeto_pecas;

• Qual é a maior quantidade de peças fornecidas por um único fornecedor a um só projeto?• select max(qde) from fornecedor_projeto_pecas;

Page 37: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• Qual é a menor quantidade de peças fornecidas por um único

fornecedor a um só projeto?• select min(qde) from fornecedor_projeto_pecas;

Page 38: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• ORDER BY é usada para ordenar as linhas selecionadas pelo

comando de seleção.• Crescente:

select cidade,statusfrom fornecedoresorder by status ASC;• Decrescente:

select cidade,statusfrom fornecedoresorder by status DESC;

Page 39: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• GROUP BY é usada para agrupar linhas com base em valores

de determinadas colunas:select f, p, sum(qde) as qdefrom fornecedor_projeto_pecasgroup by f, p;

select cidade,statusfrom fornecedoresgroup by status,cidade;

Page 40: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Seleção• A cláusula GROUP BY deve vir antes da ORDER BY e depois

do WHERE

select cidade,statusfrom fornecedoresgroup by status,cidade; order by cidade;

Page 41: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Atividade• Criar um banco de dados com seu nome e uma tabela

chamada acessos.• Nesta tabela teremos quatro atributos:• id_acesso: chave primária inteira não nula auto

incrementável;• dia_acesso: atributo inteiro não nulo;• mes_acesso: atributo inteiro não nulo;• ano_acesso: atributo inteiro não nulo;

Page 42: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Atividade• SQL da tabela:

CREATE TABLE acessos (id_acesso INT NOT NULL AUTO_INCREMENT ,dia_acesso INT NOT NULL ,mes_acesso INT NOT NULL ,ano_acesso INT NOT NULL ,PRIMARY KEY (id_acesso)) ;

Page 43: Banco de dados Baseado no material do Professor Raul Paradeda

SQL - Atividade• Realizar a inserção de 10 tuplas na tabela acessos com

valores diferentes para mês_acesso e ano_acesso:• Ex:INSERT INTO acessos(dia_acesso,mes_acesso,ano_acesso)VALUES (15, 03,2009) ;INSERT INTO acessos(dia_acesso,mes_acesso,ano_acesso)VALUES (13, 02,2009) ;INSERT INTO acessos(dia_acesso,mes_acesso,ano_acesso)VALUES (15, 01,2009) ;INSERT INTO acessos(dia_acesso,mes_acesso,ano_acesso)VALUES (10, 02,2009) ;