SlideShare une entreprise Scribd logo
1  sur  36
Tópicos Especiais em
Desenvolvimento de Software
Aprofundamento de DDL & DML
Objetivo: Resgatar recursos avançados de
bancos de dados
Prof. Nécio de Lima Veras
Parte I : DDL
Relembrando DDL
• Qual sua serventia?
• Possui conjuntos de:
– Domínios (incluindo o valor null);
– Comandos:
• Create (database, table, ...);
• Alter;
• P/ restrições de integridades (chaves,
valores com checagens, valor padrão,
valor único, valor não nulo, referencial);
• Certo, e agora o que podemos ter de
novidade?
Eis algumas novidades...
• Criação de domínios;
• Criação de índices;
• Criação de gatilhos;
• Criação de procedimentos;
• Criação de funções;
• Criação de visões;
Criação de Domínios
• Útil para padronizações;
• Comando:
create domain <identificador> <tipo> [opções]
• Exemplos:
1)create domain nomePessoa varchar(45);
2)create domain codigos int not null
default autoincrement;
3)create domain combustiveis varchar(15)
check (combustiveis in ('Gasolina',
'Alcool', 'Diesel', 'Flex'));
● Detalhe, o mySQL não implementa;
Apagando um domínio
• drop domain <identificador>;
• Cuidado, pois você poderá estar usando o
domínio;
Criação de Índices
• Serve para otimizações de consultas;
• Para as chaves já são criados índices automáticos;
• Sintaxe:
create index <identificador> on <tabela>
(coluna [ asc || desc] [, ...]);
• Exemplos:
create index idx_notaR on TBNotas (nNotaR
asc);
create index idx_inicioNome on tbAluno
(vNome (10)); → note a diferença (este
pega apenas os 10 primeiros caracteres do
nome);
Mais sobre índices
• Sintaxe do Comando p/ excluir:
drop index <identificador> on <tabela>;
Exemplo:
drop index idx_notaR on tbNotas;
• Visualizando (mySQL):
– show index from tbNotas;
Gatilhos (triggers)
• Servem como armas prontas para serem
disparadas;
• Sintaxe do comando (mySQL):
create trigger <identificador> <tempo>
<evento> on <tabela> for each row
begin
end
– Tempo: Before ou After;
– Evento: Insert, Update ou Delete;
Gatilhos (triggers)
• Limitações (mySQL):
– Não pode realizar chamadas a
procedimentos ou funções que retornem
dados ou usam comandos SQL
dinâmicos, por exemplo: now();
– Não pode ter comandos explícitos de
controle de transações, por exemplo:
commit ou rollback;
Gatilhos (triggers)
• Exemplo (o campo dDataNasc SEMPRE será null):
delimiter !
create trigger dataNascNull before insert on tbAluno
for each row
begin
if new.dDataNasc is not null then
set new.dDataNasc = null;
end if;
end; !
delimiter ;
Exibindo os gatilhos (mySQL)
• Comando:
show triggers from <database>;
– Exemplo:
show triggers from dbTeste;
• Excluindo:
– drop trigger <nome_da_trigger>;
– Exemplo:
drop trigger dataNascNull;
Criação de Procedimentos
• Serve para promover:
– Modularização;
– Refatoração;
– E evitar códigos duplicados;
• Sintaxe do comando (mySQL):
create procedure <identificador> ([tipo_parametro]
<identificador_parâmetro> <tipo> [,...])
begin
end;
• Observações:
– Tipo_Parâmetro: in , out ou inout;
Exemplos de Procedimento
• Criando:
create procedure addAluno (in nome varchar(30))
begin
insert into tbAluno (vNome)
values (nome);
end;
• Executando:
call addAluno ('Nécio Veras');
• Excluindo:
drop procedure addAluno;
• Visualizando:
select * from information_schema.routines; ou
show procedure status;
Exemplo de um procedimento
com retorno
• Criando o procedimento:
create procedure recuperaAluno (in cod int, out
nome varchar(30), dataNasc date)
begin
select vNome, dDataNasc from tbAluno
where id = cod
into nome, dataNasc;
end;
• Executando:
call listaAluno (10, @nm, @dt);
• Exibindo o resultado:
select @nm, @dt
Funções
• Retornam valores (podem inclusive serem
calculados);
• Também servem para criar UDF's
(Funções definidas por usuários);
• Sintaxe do comando:
create function <identificador>
(<identificador_parâmetro> <tipo> [,...])
returns <tipo>
begin
end;
Exemplo
• Retornando a média:
create function calcMedia (codNota int)
returns numeric(4,1)
begin
declare n1 numeric(4,1);
declare n2 numeric(4,1);
select nNota1, nNota2 from tbNotas where iNota_id =
codNota
into n1, n2;
return (n1 + n2) / 2;
end;
• Executando:
select calcMedia (101);
Visões
• É um select pré-moldado, serve para
personalizar comandos de consulta e deixá-
los preparados para a execução;
• Sintaxe do comando:
create view <identificador> [<lista de
colunas>] as <comando select>;
• Exemplo:
create view listaAlunos (cod, nome)
as select id, vNome from tbAluno;
• Visualizando:
select * from listaAlunos ;
Exercícios
• Abstraia e crie um banco qualquer (com 3 tabelas que
se relacionem)
– Crie índices que possam agilizar possíveis
consultas futuras;
– Crie gatilhos que possam ser úteis ao banco de
dados;
– Crie procedimentos que padronize as
operações CRUD em TODAS as tabelas;
– Crie funções que possam agilizar possíveis
cálculos;
– Crie visões que forneçam suporte para a
construção de relatórios (a serem imaginados
por você!)
Parte II - DML
Aprofundando
• Sabemos que existem as operações
CRUD que servem como base para a
DML;
• O aprofundamento se dá, principalmente,
no comando de RETRIVE;
– SELECT;
• As outras operações, praticamente, não
existem variações dentre o que já foi
exposto;
Relembrando...
• Formatação básica:
select A1, A2, A3, ..., An
from r1, r2, ..., rm
where P
onde Ai representa um atributo
ri é uma (relação) tabela
P é um predicado (condição/critério de seleção).
A cláusula BETWEEN
• Especifica intervalos (inclusive);
• Ex:
SELECT numero_emprestimo
FROM emprestimo
WHERE total BETWEEN 90 AND 100;
• Similarmente, temos o NOT BETWEEN;
A cláusula From
• Define um produto cartesiano das relações;
– A junção natural é definida em termos de produto cartesiano;
• Exemplo:
– Queremos a seguinte consulta: “para todos os clientes que
tenham um empréstimo em um banco, encontre seus
nomes e números de empréstimos”;
– Em SQL:
SELECT distinct nome_cliente,
devedor.numero_emprestimo
FROM devedor, emprestimo
WHERE devedor.numero_emprestimo =
emprestimo.numero_emprestimo
– Observe as especificações de <tabela>.<coluna> , pois isso
servirá para evitar AMBIGUIDADES;
A cláusula As
• Como as tabelas podem possuir nomes relativamente
grandes, então podemos “apelidá-las” usando a cláusula
As;
• O mesmo comando anterior ficaria:
SELECT distinct nome_cliente,
d.numero_emprestimo
FROM devedor as d, emprestimo as e
WHERE d.numero_emprestimo =
e.numero_emprestimo
• Pode ser aplicado no nome da tabela ou no nome do
campo;
– No caso do nome do campo será “apelidada” a
coluna do resultado da consulta;
Cláusula Like
• É aplicado em operações de Strings;
• Serve para checar coincidências de pares;
• Elementos:
% => Compara qualquer substring;
_ => Compara qualquer caractere;
• Lembre-se que são sensíveis ao caso;
• Exemplo:
SELECT nome_cliente FROM cliente
WHERE rua_cliente LIKE ‘%Avenida%’;
• Outros exemplos:
– 'Francisco%' => Qualquer valor que inicie com Francisco;
– '_ _ _' => Qualquer string que tenha 3 caracteres;
• Também podemos usar o NOT LIKE;
Cláusula Order By
• Serve para ordenar as tuplas resultantes de uma
consulta;
• Temos duas opções:
– Asc => Ascendente;
– Desc => Descendente;
• Pode ordenar qualquer tipo de atributo;
• Exemplo:
SELECT *
FROM emprestimo
ORDER BY total DESC, numero_emprestimo
ASC;
A Cláusula Join
• Compõem mecanismos de junção de DUAS relações, são eles:
– Junção condicional;
– Junção natural;
– Junção externa;
– Outras...
• Tipos de junção:
– Define como as tuplas de cada relação irão se corresponder e quais
atributos serão incluídos no resultado final;
– São eles:
• Inner Join (junção interna);
• Outer Join (junção externa);
– São opcionais estas especificações;
– Tipos de condições:
• Natural;
• On;
• Using;
Junção Interna
• É quando tuplas são incluídas no resultado de uma
consulta somente se existir uma correspondente na
outra relação;
• Exemplo:
SELECT tabela1.atributo1, tabela2.atributo2
FROM tabela1 INNER JOIN tabela2 ON
tabela1.atributo1 = tabela2.atributo2;
• Se o nome dos atributos for igual, não há necessidade da
cláusula ON, basta usar o NATURAL;
SELECT tabela1.atributo1, tabela2.atributo2
FROM tabela1 NATURAL JOIN tabela2;
– Neste caso, a cláusula INNER também não
precisa;
Junção Externa
• É quando tuplas são incluídas no resultado sem que exista
uma tupla correspondente na outra relação;
• Tipos:
– RIGHT OUTER JOIN = Junção Externa a Direita;
– LEFT OUTER JOIN = Junção Externa a Esquerda;
– FULL OUTER JOIN = Junção Externa Total (Junção
Externa a Esquerda + Junção Externa a Direita);
• Exemplo:
SELECT R1.A1, R2.A2
FROM R1 RIGHT OUTER JOIN R2 ON R1.A1= R2.A2;
ou
SELECT R1.A1, R2.A2
FROM R1 LEFT OUTER JOIN R2 ON R1.A1= R2.A2;
Operações de Conjunto
• Possuímos as operações de União, Interseção e
Exceção (exceto ou subtração);
• Exemplo de união:
(SELECT nome_cliente FROM depositante)
UNION
(SELECT nome_cliente FROM devedor);
• Esta operação, automaticamente, eliminina as
repetições;
– Se isso não for desejado então usa-se UNION
ALL;
– E isso é válido para TODAS as operações de
conjunto;
Operações de conjunto
• De forma análoga à união, temos:
– Interseção : intersect;
– Exceção: except;
Funções agregadas
• São funções simples que parte de um conjunto de dados
(valores) e retorna uma valor simples (único);
• Exemplos:
– Média (average): avg;
– Mínimo (minimum): min;
– Máximo (maximum): max;
– Total (total): sum;
– Contagem (count): count;
– Desvio Padrão: stddev;
• Exemplo:
SELECT avg(saldo) FROM conta
WHERE nome_agencia = ‘Parnaíba-Central’;
A cláusula Group By
• Existem circunstância em que gostaríamos de
aplicar uma função agregada não somente a
um conjunto de tuplas, mas também a um
grupo de conjunto de tuplas;
• Isso é possível usando a cláusula SQL group
by;
• Exemplo: 'Encontrar a média dos saldos nas
contas de cada uma das agências do banco':
SELECT nome_agencia, avg(saldo)
FROM conta
GROUP BY nome_agencia;
Leia sobre ...
• Existem ainda muitas outras coisas que
devem ser pesquisadas e estudadas, tais
como:
– Subconsultas (Cláusulas IN, SOME, ALL,
EXISTS, UNIQUE);
– Subconsultas escalares;
Exercícios

Contenu connexe

Tendances

Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQLArley Rodrigues
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - BásicoAirton Zanon
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4Ed W. Jr
 
Sql - Introdução ao mysql
Sql - Introdução ao mysqlSql - Introdução ao mysql
Sql - Introdução ao mysqlArley Rodrigues
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Emiliano Barbosa
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHPLeonardo Soares
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Emiliano Barbosa
 

Tendances (18)

Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - Básico
 
Sql - introdução
Sql -  introduçãoSql -  introdução
Sql - introdução
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4
 
Aula 05 acessando o mysql
Aula 05   acessando o mysqlAula 05   acessando o mysql
Aula 05 acessando o mysql
 
A Estrutura da Linguagem SQL
A Estrutura da Linguagem SQLA Estrutura da Linguagem SQL
A Estrutura da Linguagem SQL
 
Sql - Introdução ao mysql
Sql - Introdução ao mysqlSql - Introdução ao mysql
Sql - Introdução ao mysql
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 

Similaire à Aprofundamento de DDL e DML

Net Coders Ladies SQL
Net Coders Ladies SQL Net Coders Ladies SQL
Net Coders Ladies SQL Aline Lavorato
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosAlefe Variani
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxSaraR49
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhoresRodrigo Crespi
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxAugustoNicolau2
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
Alg aula 02 - algoritmos 1 tp1
Alg   aula 02 - algoritmos 1 tp1Alg   aula 02 - algoritmos 1 tp1
Alg aula 02 - algoritmos 1 tp1Thalles Anderson
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - EstrategiasIsmael
 

Similaire à Aprofundamento de DDL e DML (20)

Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Net Coders Ladies SQL
Net Coders Ladies SQL Net Coders Ladies SQL
Net Coders Ladies SQL
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Visualg
VisualgVisualg
Visualg
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptx
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
Alg aula 02 - algoritmos 1 tp1
Alg   aula 02 - algoritmos 1 tp1Alg   aula 02 - algoritmos 1 tp1
Alg aula 02 - algoritmos 1 tp1
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 

Plus de Nécio de Lima Veras

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Nécio de Lima Veras
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoNécio de Lima Veras
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesNécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsNécio de Lima Veras
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesNécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 

Plus de Nécio de Lima Veras (20)

Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Java swing
Java swingJava swing
Java swing
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 

Dernier

CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfmirandadudu08
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 

Dernier (20)

CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdf
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 

Aprofundamento de DDL e DML

  • 1. Tópicos Especiais em Desenvolvimento de Software Aprofundamento de DDL & DML Objetivo: Resgatar recursos avançados de bancos de dados Prof. Nécio de Lima Veras
  • 2. Parte I : DDL
  • 3. Relembrando DDL • Qual sua serventia? • Possui conjuntos de: – Domínios (incluindo o valor null); – Comandos: • Create (database, table, ...); • Alter; • P/ restrições de integridades (chaves, valores com checagens, valor padrão, valor único, valor não nulo, referencial); • Certo, e agora o que podemos ter de novidade?
  • 4. Eis algumas novidades... • Criação de domínios; • Criação de índices; • Criação de gatilhos; • Criação de procedimentos; • Criação de funções; • Criação de visões;
  • 5. Criação de Domínios • Útil para padronizações; • Comando: create domain <identificador> <tipo> [opções] • Exemplos: 1)create domain nomePessoa varchar(45); 2)create domain codigos int not null default autoincrement; 3)create domain combustiveis varchar(15) check (combustiveis in ('Gasolina', 'Alcool', 'Diesel', 'Flex')); ● Detalhe, o mySQL não implementa;
  • 6. Apagando um domínio • drop domain <identificador>; • Cuidado, pois você poderá estar usando o domínio;
  • 7. Criação de Índices • Serve para otimizações de consultas; • Para as chaves já são criados índices automáticos; • Sintaxe: create index <identificador> on <tabela> (coluna [ asc || desc] [, ...]); • Exemplos: create index idx_notaR on TBNotas (nNotaR asc); create index idx_inicioNome on tbAluno (vNome (10)); → note a diferença (este pega apenas os 10 primeiros caracteres do nome);
  • 8. Mais sobre índices • Sintaxe do Comando p/ excluir: drop index <identificador> on <tabela>; Exemplo: drop index idx_notaR on tbNotas; • Visualizando (mySQL): – show index from tbNotas;
  • 9. Gatilhos (triggers) • Servem como armas prontas para serem disparadas; • Sintaxe do comando (mySQL): create trigger <identificador> <tempo> <evento> on <tabela> for each row begin end – Tempo: Before ou After; – Evento: Insert, Update ou Delete;
  • 10. Gatilhos (triggers) • Limitações (mySQL): – Não pode realizar chamadas a procedimentos ou funções que retornem dados ou usam comandos SQL dinâmicos, por exemplo: now(); – Não pode ter comandos explícitos de controle de transações, por exemplo: commit ou rollback;
  • 11. Gatilhos (triggers) • Exemplo (o campo dDataNasc SEMPRE será null): delimiter ! create trigger dataNascNull before insert on tbAluno for each row begin if new.dDataNasc is not null then set new.dDataNasc = null; end if; end; ! delimiter ;
  • 12. Exibindo os gatilhos (mySQL) • Comando: show triggers from <database>; – Exemplo: show triggers from dbTeste; • Excluindo: – drop trigger <nome_da_trigger>; – Exemplo: drop trigger dataNascNull;
  • 13. Criação de Procedimentos • Serve para promover: – Modularização; – Refatoração; – E evitar códigos duplicados; • Sintaxe do comando (mySQL): create procedure <identificador> ([tipo_parametro] <identificador_parâmetro> <tipo> [,...]) begin end; • Observações: – Tipo_Parâmetro: in , out ou inout;
  • 14. Exemplos de Procedimento • Criando: create procedure addAluno (in nome varchar(30)) begin insert into tbAluno (vNome) values (nome); end; • Executando: call addAluno ('Nécio Veras'); • Excluindo: drop procedure addAluno; • Visualizando: select * from information_schema.routines; ou show procedure status;
  • 15. Exemplo de um procedimento com retorno • Criando o procedimento: create procedure recuperaAluno (in cod int, out nome varchar(30), dataNasc date) begin select vNome, dDataNasc from tbAluno where id = cod into nome, dataNasc; end; • Executando: call listaAluno (10, @nm, @dt); • Exibindo o resultado: select @nm, @dt
  • 16. Funções • Retornam valores (podem inclusive serem calculados); • Também servem para criar UDF's (Funções definidas por usuários); • Sintaxe do comando: create function <identificador> (<identificador_parâmetro> <tipo> [,...]) returns <tipo> begin end;
  • 17. Exemplo • Retornando a média: create function calcMedia (codNota int) returns numeric(4,1) begin declare n1 numeric(4,1); declare n2 numeric(4,1); select nNota1, nNota2 from tbNotas where iNota_id = codNota into n1, n2; return (n1 + n2) / 2; end; • Executando: select calcMedia (101);
  • 18. Visões • É um select pré-moldado, serve para personalizar comandos de consulta e deixá- los preparados para a execução; • Sintaxe do comando: create view <identificador> [<lista de colunas>] as <comando select>; • Exemplo: create view listaAlunos (cod, nome) as select id, vNome from tbAluno; • Visualizando: select * from listaAlunos ;
  • 19. Exercícios • Abstraia e crie um banco qualquer (com 3 tabelas que se relacionem) – Crie índices que possam agilizar possíveis consultas futuras; – Crie gatilhos que possam ser úteis ao banco de dados; – Crie procedimentos que padronize as operações CRUD em TODAS as tabelas; – Crie funções que possam agilizar possíveis cálculos; – Crie visões que forneçam suporte para a construção de relatórios (a serem imaginados por você!)
  • 20. Parte II - DML
  • 21. Aprofundando • Sabemos que existem as operações CRUD que servem como base para a DML; • O aprofundamento se dá, principalmente, no comando de RETRIVE; – SELECT; • As outras operações, praticamente, não existem variações dentre o que já foi exposto;
  • 22. Relembrando... • Formatação básica: select A1, A2, A3, ..., An from r1, r2, ..., rm where P onde Ai representa um atributo ri é uma (relação) tabela P é um predicado (condição/critério de seleção).
  • 23. A cláusula BETWEEN • Especifica intervalos (inclusive); • Ex: SELECT numero_emprestimo FROM emprestimo WHERE total BETWEEN 90 AND 100; • Similarmente, temos o NOT BETWEEN;
  • 24. A cláusula From • Define um produto cartesiano das relações; – A junção natural é definida em termos de produto cartesiano; • Exemplo: – Queremos a seguinte consulta: “para todos os clientes que tenham um empréstimo em um banco, encontre seus nomes e números de empréstimos”; – Em SQL: SELECT distinct nome_cliente, devedor.numero_emprestimo FROM devedor, emprestimo WHERE devedor.numero_emprestimo = emprestimo.numero_emprestimo – Observe as especificações de <tabela>.<coluna> , pois isso servirá para evitar AMBIGUIDADES;
  • 25. A cláusula As • Como as tabelas podem possuir nomes relativamente grandes, então podemos “apelidá-las” usando a cláusula As; • O mesmo comando anterior ficaria: SELECT distinct nome_cliente, d.numero_emprestimo FROM devedor as d, emprestimo as e WHERE d.numero_emprestimo = e.numero_emprestimo • Pode ser aplicado no nome da tabela ou no nome do campo; – No caso do nome do campo será “apelidada” a coluna do resultado da consulta;
  • 26. Cláusula Like • É aplicado em operações de Strings; • Serve para checar coincidências de pares; • Elementos: % => Compara qualquer substring; _ => Compara qualquer caractere; • Lembre-se que são sensíveis ao caso; • Exemplo: SELECT nome_cliente FROM cliente WHERE rua_cliente LIKE ‘%Avenida%’; • Outros exemplos: – 'Francisco%' => Qualquer valor que inicie com Francisco; – '_ _ _' => Qualquer string que tenha 3 caracteres; • Também podemos usar o NOT LIKE;
  • 27. Cláusula Order By • Serve para ordenar as tuplas resultantes de uma consulta; • Temos duas opções: – Asc => Ascendente; – Desc => Descendente; • Pode ordenar qualquer tipo de atributo; • Exemplo: SELECT * FROM emprestimo ORDER BY total DESC, numero_emprestimo ASC;
  • 28. A Cláusula Join • Compõem mecanismos de junção de DUAS relações, são eles: – Junção condicional; – Junção natural; – Junção externa; – Outras... • Tipos de junção: – Define como as tuplas de cada relação irão se corresponder e quais atributos serão incluídos no resultado final; – São eles: • Inner Join (junção interna); • Outer Join (junção externa); – São opcionais estas especificações; – Tipos de condições: • Natural; • On; • Using;
  • 29. Junção Interna • É quando tuplas são incluídas no resultado de uma consulta somente se existir uma correspondente na outra relação; • Exemplo: SELECT tabela1.atributo1, tabela2.atributo2 FROM tabela1 INNER JOIN tabela2 ON tabela1.atributo1 = tabela2.atributo2; • Se o nome dos atributos for igual, não há necessidade da cláusula ON, basta usar o NATURAL; SELECT tabela1.atributo1, tabela2.atributo2 FROM tabela1 NATURAL JOIN tabela2; – Neste caso, a cláusula INNER também não precisa;
  • 30. Junção Externa • É quando tuplas são incluídas no resultado sem que exista uma tupla correspondente na outra relação; • Tipos: – RIGHT OUTER JOIN = Junção Externa a Direita; – LEFT OUTER JOIN = Junção Externa a Esquerda; – FULL OUTER JOIN = Junção Externa Total (Junção Externa a Esquerda + Junção Externa a Direita); • Exemplo: SELECT R1.A1, R2.A2 FROM R1 RIGHT OUTER JOIN R2 ON R1.A1= R2.A2; ou SELECT R1.A1, R2.A2 FROM R1 LEFT OUTER JOIN R2 ON R1.A1= R2.A2;
  • 31. Operações de Conjunto • Possuímos as operações de União, Interseção e Exceção (exceto ou subtração); • Exemplo de união: (SELECT nome_cliente FROM depositante) UNION (SELECT nome_cliente FROM devedor); • Esta operação, automaticamente, eliminina as repetições; – Se isso não for desejado então usa-se UNION ALL; – E isso é válido para TODAS as operações de conjunto;
  • 32. Operações de conjunto • De forma análoga à união, temos: – Interseção : intersect; – Exceção: except;
  • 33. Funções agregadas • São funções simples que parte de um conjunto de dados (valores) e retorna uma valor simples (único); • Exemplos: – Média (average): avg; – Mínimo (minimum): min; – Máximo (maximum): max; – Total (total): sum; – Contagem (count): count; – Desvio Padrão: stddev; • Exemplo: SELECT avg(saldo) FROM conta WHERE nome_agencia = ‘Parnaíba-Central’;
  • 34. A cláusula Group By • Existem circunstância em que gostaríamos de aplicar uma função agregada não somente a um conjunto de tuplas, mas também a um grupo de conjunto de tuplas; • Isso é possível usando a cláusula SQL group by; • Exemplo: 'Encontrar a média dos saldos nas contas de cada uma das agências do banco': SELECT nome_agencia, avg(saldo) FROM conta GROUP BY nome_agencia;
  • 35. Leia sobre ... • Existem ainda muitas outras coisas que devem ser pesquisadas e estudadas, tais como: – Subconsultas (Cláusulas IN, SOME, ALL, EXISTS, UNIQUE); – Subconsultas escalares;