Cardinalidade Máxima:   DepartamentoFuncionários   1                                         nUm departamento             ...
Criando TabelaCreatetable cidadecodcidadenumber(4) notnull,nomecidade varchar2(20) no null)Mostra tabela cidadedesc cidade...
(a reference é a PK (nesse caso codcidade da tabela cidade) que você quer referenciar napresente tabela através de uma cha...
select titulo from acervowherecodacervo> 2 (mostra na coluna titulo da tabela acervo as linhas onde codavervo formaior que...
Usando Aliases:   1. Exibir o título de todos os filmes da categoria “Acervo” do gênero “Ação”.       Selectf.titulo(Campo...
Matéria nova:Funções de Grupo:AVGSUMCOUNTMINMAXselect sum (valor) --------- somafrom multaselectmax (valor) --------- maxi...
selecte.nome, count(*) (count (*), quantidade de vezes que aparece)from equipe e, equipe_atletaae, participacao p, competi...
1) Mostre clientes que não tem orçamentoSelect c.nomefrom cliente cWHERE NOT EXISTS (select * from orcamento o WHERE c.cod...
Próximos SlideShares
Carregando em…5
×

Manual de consulta rápido de PL/SQL

4.094 visualizações

Publicada em

Manual bem básico que eu fiz pra meu uso durante a disciplina de banco de dados, que pode ser de utilidade.

Manual de consulta rápido de PL/SQL

  1. 1. Cardinalidade Máxima: DepartamentoFuncionários 1 nUm departamento Um funcionáriopode ter quantos pode pertencer afuncionários? quantos departamentos? Cardinalidade Mínima: DepartamentoFuncionários 1 0Para cadastrar Para cadastrarfuncionários, eu departamento, eupreciso de preciso dedepartamento? funcionário? Relacionamento n para 1: PK de “1” vira FK de “n” (“1” exporta chave primaria para “n”) Relacionamento 1 pra 1: Se trocam as chaves primárias, portanto podem ser a mesma entidade Relacionamento n pra n: Cria-se outra entidade, exportando as chaves primarias das duas entidades “n” para a nova entidade (chaves estrangeiras da nova entidade) Modelo Entidade-Relacionamento: Relações de entidades e chaves primárias Modelo Físico: Chaves primarias, estrangeiras, novas entidades criadas com o relacionamento n pra n SQL: Comandos DDL:
  2. 2. Criando TabelaCreatetable cidadecodcidadenumber(4) notnull,nomecidade varchar2(20) no null)Mostra tabela cidadedesc cidadeExclui tabeladroptable cidadeIncluir campo posteriormentealtertable cidadeadd estado varchar2(2) notnullExcluindo campo:altertable cidadedropcolumn estadoModificando campoaltertable acervo modifytitulo varchar(100) notnullAdicionar chave primáriaaltertable cidadeaddconstraintcidade_pkprimarykey (codcidade)(codcidade é o campo que você deseja transformar em PK)Adicionar múltiplas chaves primáriasaltertable cidadeaddconstraintcidade_pkprimarykey (codcidade,cidade,estado)Adicionar chave estrangeiraaltertable alunoaddconstraintaluno_cidade_fkforeignkey (codcidade)references cidade (codcidade)
  3. 3. (a reference é a PK (nesse caso codcidade da tabela cidade) que você quer referenciar napresente tabela através de uma chave estrangeira)Adicionar múltiplas chaves estrangeiraaltertable alunoaddconstraintaluno_cidade_fkforeignkey (codcidade,cidade,estado)references cidade (codcidade,cidade,estado)Comandos DML:Inserção:Insertinto cidade (codcidade,descrição,uf)values (1,’caxias’,’RS’)(vai inserir nos campos da tabela cidade relacionados entre parênteses os valores nessaordem. Deve-se colocar dentro de aspas simples os varchar)Insertinto cidade (codcidade, descrição,uf)values(2,’Bento’,NULL)(caso o campo não seja NotNull, irá ser inserido valor nulo no campo uf)Alteração:update cidadeset uf=’RS’where uf=’SC’Exclusão:deletefrom cidadewherecodcidade>=1andcodcidade<= 10Visualizando conteúdo:select * from livros (ver tudo o que está em livros)desc livros (visualizar as colunas e suas caracteristicas)select autor from livros (visualiza apenas a coluna livros)orderbypublicacao (ordena pelo campo publicação em ordem alfabética)
  4. 4. select titulo from acervowherecodacervo> 2 (mostra na coluna titulo da tabela acervo as linhas onde codavervo formaior que 2)select titulo from acervowherecodacervo> 2andcodacervo<= 4select titulofrom acervowherecodacervo IN (1,3) (apenas os que estão entre parenteses)select titulofrom acervowherecodacervo BETWEEN 2 and 4 (todos entre 2 e 4)Select *from empréstimowheredtdevolucao IS NULLSelectNVL(dtdevolucao,)from empréstimowheredtdevolucao IS NULL (mostra onde esta null com valor 0)select titulo from acervowhere titulo like %a% (que contenha "a" no titulo)
  5. 5. Usando Aliases: 1. Exibir o título de todos os filmes da categoria “Acervo” do gênero “Ação”. Selectf.titulo(Campo que você quer consultar) From filme f, categoria c, (da onde os dados vem) genero g whereupper (c.descricao) = ‘ACERVO’ (Condições) andupper (g.descricao) = ‘ACAO’ andf.genero = g.codgem (Abaixo, ligando de acordo com as constraints) andf.categoria = c.codcat 2. Exibir todos os clientes que pagaram alguma multa. Select * From cliente c, Locação l Wherenvl(vlrmulta,0)>0 (NVL transforma valores NULL em 0 para exibição) Andc.codcli=l.codcliente (Constraint entre cliente e locação) 3. Exibir o título dos filmes e a descrição do seu gênero em ordem alfabética. Selectf.titulo, g.descricao from filme f, genero g whereg.codgen = f.genero orderby 1 Se usar “asc” depois de orderby1, é crescente, se usar “desc”, é decrescente. 4. Exibir nome de atleta e nome da equipe, odernar pro atleta (Relação de equipe e atleta é n:n, por tanto há uma terceira entidade) selecta.nome, e.nome from atleta a, equipe e, equipe_atletaae (as três entidades) wherea.cod_atleta = ae.cod_atleta (ligando as 3 entidades através das PK/FK) andae.cod_equipe = e.cod_equipe orderbye.nome; (ordenando por nome de equipe)
  6. 6. Matéria nova:Funções de Grupo:AVGSUMCOUNTMINMAXselect sum (valor) --------- somafrom multaselectmax (valor) --------- maximo valorfrom multaselectavg (valor) --------- media valorfrom multaselectcount (valor) --------- quantidade valorfrom multaselectcod_socio, sum (valor) ----- cod_socio não tem funcao de grupo, sum(valor) tem.from multagroupbycod_socio ----- o campo que vai no groupbynão tem função de grupo. É obrigatório apresençadele para que os campos sem função de grupo sejam exibidos.selectm.cod_socio, a.nome, sum(m.valor)from multa m, associado awherem.cod_socio=a.cod_sociohaving sum(m.valor)>8 --------- testar por funcao de grupo --- testa se o somatorio é > 8groupbym.cod_socio, a.nomeorderbym.cod_socio ou 1 ---------- ordena tanto com o nome ou com o nº (ordem no select)Having testa a função de grupo:Mostra somente cidades que tenham mais de 3 alunosHavingCount(a.codaluno) > 3Agrupa por chaves que não tem função de grupo.1) Exibir o nome das equipes e a quantidade de atletas que cada uma adicionou nacompetição de São Paulo
  7. 7. selecte.nome, count(*) (count (*), quantidade de vezes que aparece)from equipe e, equipe_atletaae, participacao p, competicao c (todas as tabelas atéchegar em competição)whereae.cod_equipe = e.cod_equipeandae.cod_equipe = p.cod_equipe (Ligando as tabelas PK/FK)andae.cod_atleta = p.cod_atletaandp.cod_competicao = c.cod_competicaoandc.cidade = Sao Paulo (condição para exibir no select)groupbye.nome;2) Exibir o nome do atleta com o maior número de penalidades.selecta.nomefrom atleta a, penalidades pwherea.cod_atleta = p.cod_atletaandp.pontos = (select MAX(pontos)from penalidades);3) Escreva o comando SQL para consultar o nome de todos os pacientes e quantas consultarforam agendadas. Mostre somente os pacientes que tiveram mais de 5 consultas agendadase que são do sexo feminino.Selectp.nome,count(*)From paciente p, agenda aWherep.codpaciente = a.codpacienteAndp.sexo = ‘F’Groupbyp.nomeHavingcount(*) > 5Comando pra gerar um script pra excluir todo o bancoselect droptable ||table_name|| CASCADE CONSTRAINTS;FROM user_tablesSubqueries:
  8. 8. 1) Mostre clientes que não tem orçamentoSelect c.nomefrom cliente cWHERE NOT EXISTS (select * from orcamento o WHERE c.codcliente=o.codcliente)OUSelect c.nomefrom cliente cWerec.codcliente NOT IN (Select o.codcliente from orçamento o)2)O Nome do cliente que fez a maior compraSelectc.nomefrom cliente c, compra mWherec.codcliente = m.codclienteandm.valor = (SelectMAX(valor) from compra)3)Exibir o nome do atleta com o maior número de penalidades.selecta.nomefrom atleta a, penalidades pwherea.cod_atleta = p.cod_atletaandp.pontos = (select MAX(pontos)from penalidades);4) Escreva o nome do comprador que possui o maior valor total de vendaselectv.nomecompradorfromvenda vwherev.valortotal = (selectmax(v. valortotal) from venda v)5) Escreva o comando SQL para consultar o nome de todos os pacientes que agendaramconsulta mas não fizeram tratamento.Selectp.nomeFrom paciente p, agenda ap.codpaciente =a.codpacienteand NOT EXISTS (select * frompacientetratamenteopt Wherept.codpaciente=p.codpaciente)

×