SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfTIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfmarialuciadasilva17
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdforganizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdfCarlosRodrigues832670
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdfDemetrio Ccesa Rayme
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxDeyvidBriel
 
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptxAULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptxGislaineDuresCruz
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024GleyceMoreiraXWeslle
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.HildegardeAngel
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLaseVasconcelos1
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoCelianeOliveira8
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Combinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptx
Combinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptx
Combinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxalessandraoliveira324
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxLuizHenriquedeAlmeid6
 
Sistema de Bibliotecas UCS - A descoberta da terra
Sistema de Bibliotecas UCS  - A descoberta da terraSistema de Bibliotecas UCS  - A descoberta da terra
Sistema de Bibliotecas UCS - A descoberta da terraBiblioteca UCS
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptAlineSilvaPotuk
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?MrciaRocha48
 
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
 

Kürzlich hochgeladen (20)

TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfTIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdforganizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
organizaao-do-clube-de-lideres-ctd-aamar_compress.pdf
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
 
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptxAULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
AULA-06---DIZIMA-PERIODICA_9fdc896dbd1d4cce85a9fbd2e670e62f.pptx
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdf
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e feminino
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Combinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptx
Combinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptx
Combinatória.pptxCombinatória.pptxCombinatória.pptxCombinatória.pptx
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
 
Sistema de Bibliotecas UCS - A descoberta da terra
Sistema de Bibliotecas UCS  - A descoberta da terraSistema de Bibliotecas UCS  - A descoberta da terra
Sistema de Bibliotecas UCS - A descoberta da terra
 
treinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppttreinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppt
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?
 
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
 

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;