1. Banco de Dados II
Prof. Marcos Miguel
marcos.a.miguel@gmail.com
http://marcosmiguel.tk
2. MSc. Marcos Miguel
2
BDII(Banco de Dados II)
2
◻ OBJETIVO
⬜ Mostrar e definir os conceitos relativos à criação e
organização de Sistemas de Bancos de Dados.
⬜ Fazer com que o aluno desenvolva habilidades
necessárias para a utilização da linguagem de
consulta SQL.
⬜ Possibilitar ao aluno o entendimento da
manipulação, criação e gerenciamento de um
banco de dados.
3. MSc. Marcos Miguel
3
BDII(Banco de Dados II)
3
◻ HABILIDADES
⬜ Desenvolver a habilidade para a implementação de
banco de dados, manipulação de dados através da
linguagem SQL e gerenciamento de um Banco de
Dados
◻ COMPETÊNCIAS
⬜ Compreender o funcionamento de Sistemas
Gerenciador de Banco de Dados, desenvolver a
capacidade de implementar, manipular e gerenciar
um Banco de Dados
◻
5. MSc. Marcos Miguel
55
◻ Unidade 2. PROJETO FÍSICO
⬜ 2.1. Estrutura geral do SGBD
⬜ 2.2. Regras de integridade
⬜ 2.3. Gerência de Transação e controle de
concorrência
⬜ 2.4. Implementação e criação do script do banco
de dados (MySQL e PostgresSQL)
⬜ 2.5. Indexação
Conteúdo Programático - Plano de
Ensino
6. MSc. Marcos Miguel
66
◻ Unidade 3. AMBIENTE DE BANCO DE
DADOS
⬜ 3.1. Modelo de Transação
⬜ 3.2. Log do Banco de Dados
⬜ 3.3. Controle de Concorrência
⬜ 3.4. Recuperação de Paradas e Falhas
⬜ 3.5. Segurança e Integridade
◻ Unidade 4. TÓPICOS ESPECIAIS
⬜ 4.1 Tendências das novas tecnologias em Banco de Dados
⬜ 4.2 Tipos de Banco de Dados (Híbrido, Orientado a Objeto,
Distribuídos)
Conteúdo Programático - Plano de
Ensino
7. MSc. Marcos Miguel
7
Bibliografia
7
◻ ELMASRI, Ramez e NAVATHE, Shamkant B.
Fundamentals of Database System. Third
Edition. Ed. Addison-Wesley, 2000.
◻ KORTH, H. F. e SILBERSCHATZ, A. Sistemas
de Banco de Dados. Terceira edição, São Paulo,
Ed. McGraw Hill, 1999.
◻ HEUSER, Carlos Alberto. Projeto de Banco de
Dados. Porto Alegre. Ed. Sagra Luzzato, 1998.
8. MSc. Marcos Miguel
8
Bibliografia auxiliar
8
◻ DATE, C. J. Introdução a sistemas de bancos de dados.
8.ed. Rio de Janeiro: Campus, 2004.
◻ STEZER, Valdemar W.. Banco de Dados, São Paulo,
Ed. Edgar Blucher, 1986.
◻ PERIÓDICOS: Revista SQL Magazine, DevMedia.
12. 1
2
Á LGEBRA RELACIONAL
12
◻ Matematicamente falando, uma tabela (relaç ão) é um
conjunto - um conjunto de linhas.
◻ No modelo relacional temos o BD representado como
uma coleç ão de tabelas. Quando queremos manipular
(recuperar) dados, em geral o resultado nos é
apresentado como uma tabela, derivada de alguma
forma de outras tabelas.
◻ A á lgebra relacional é um conjunto de operaç ões sobre
as relaç ões.
13. 1
3
Á LGEBRA RELACIONAL
13
◻ OPERAÇ ÕES TRADICIONAIS
⬜ UNION (UNIÃO)
R S: Retorna uma tabela que inclui todas as tuplas que estão ou em
R ou em S, ou em ambas. Tuplas duplicadas são eliminadas.
19. 1
9
Á LGEBRA RELACIONAL
19
◻ OPERAÇ ÕES ESPECIAIS
⬜ DIVISION (DIVISÃO)
◻ R1 ÷ R2: A operaç ão de divisão tem tabelas como
operandos. Os nomes das colunas (e os respectivos
domı́nios) da tabela R2 (C2) devem estar contidos
dentro dos nomes das colunas (e respectivos
domı́nios) da tabela R1 (C1). A tabela resultante tem
como nomes de colunas e domı́nios aqueles que
aparecem duas em R1 mas não aparecem em R2
(C1 - C2). Para que uma linha apareç a no resultado é
necessá rio que sua concatenaç ão com cada linha da
tabela R2 apareç a também na tabela R1.
Exemplo: Todos os fornecedores das peç as 'P2' e 'P4'
R3 = Fornecimento ÷ Temp
Divide Fornecimento by Temp over CodPeç a giving R
21. 2
1
Á LGEBRA RELACIONAL
21
◻ OPERAÇ ÕES ESPECIAIS
⬜ JOIN cont…
◻ Estamos trabalhando com join baseado em igualdade de valores de diferentes tabelas
(EQUIJOIN). Mas poderı́amos ter join com qualquer expressão booleana ("maior que", "menor
que", "não igual", etc). Esta operaç ão genérica de junç ão é chamada THETAJOIN.
◻ Uma operaç ao de EQUIJOIN também é representada com a seguinte sintaxe:
◻ Onde listaR e listaS indicam os nomes das colunas das tabelas R e S cujos valores serão
comparados um a um para fazer a junç ão. A segunda coluna é eliminada em cada um dos pares
que são comparados, já que os valores são idê nticos.
R = R1 * (A),(A) R2
◻ Um EQUIJOIN em que com os nomes das colunas sejam iguais é chamado NATURAL JOIN.
Neste caso, o nome das colunas não precisam ser especificados.
R = R1 * R2
22. 2
2
SQL-STRUCTURED QUERY LANGUAGE
22
◻ Structured Query Language, ou Linguagem de Consulta Estruturada ou
SQL, é a linguagem de pesquisa declarativa padrão para banco de dados
relacional (base de dados relacional). Muitas das características originais do
SQL foram inspiradas na álgebra relacional.
◻ Histórico
⬜ SEQUEL (Structured English Query Language) - Centro de Pesquisa
San Jose da IBM (Projeto System R)
■ Rapidamente surgiram vários "dialectos" desenvolvidos por outros produtores.
Essa expansão levou à necessidade de ser criado e adaptado um padrão para a
linguagem. Esta tarefa foi realizada pela American National Standards Institute
(ANSI) em 1986 e ISO em 1987.
⬜ SQL 1 (SQL-86): Padrão ISO/ANSI. Não havia clá usula para especificar
chave; modificado em 1989
⬜ SQL 2 (SQL-92): Implementa conexão cliente/servidor
⬜ SQL 3: Em fase de aprovaç ão; implementa o Modelo Orientado a
Objeto
23. 2
3
SQL-STRUCTURED QUERY LANGUAGE
23
◻ Conceitos
⬜ Tabela (table)
■ Equivale à relaç ão, no Modelo Relacional
⬜ Linha (row) - registros
■ Equivale à tupla, no Modelo Relacional
⬜ Coluna (column)
■ Equivale aos atributos da relaç ão, no Modelo relacional
24. 2
4
SQL-STRUCTURED QUERY LANGUAGE
24
◻ Tipos de dados (data type)
⬜ Caracter
■ CHAR(n) ou CHARACTER(n)
■ VARCHAR(n) ou CHARACTER VARYING(n) ou CHAR VARYING(n)
⬜ Numérico
■ SMALLINT, INTEGER
■ FLOAT, DOUBLE PRECISION
■ NUMERIC(precision, scale), DECIMAL(precision,scale)
⬜ Datas
■ DATE
■ TIME
■ TIMESTAMP
⬜ BLOB (Binary Large Objects)
25. 2
5
SQL-STRUCTURED QUERY LANGUAGE
25
◻ Domı́nios (domain)
⬜ Determina os valores possı́veis para colunas. Domı́nios
normalmente são definidos antes da criaç ão das tabelas,
para que possam ser usadas por estas
◻ Restriç ões (constraint)
⬜ Condiç ões necessá ria para manter a integridade dos
dados
◻ Visões (view)
⬜ Uma tabela cujo conteú do é derivado de outras tabelas
26. 2
6
SQL-STRUCTURED QUERY LANGUAGE
26
◻ Banco de dados (database)
⬜ Conjunto de tabelas, domı́nios, restriç ões, visões, etc
◻ Esquema (schema)
⬜ O conceito de uma esquema SQL foi definido com o SQL2 para agrupar
tabelas e outros elementos que pertenç am a mesma aplicaç ão. Um
esquema é identificado por um nome, um identificador do usuá rio ou
conta que possui o esquema e descritores de cada elemento do
esquema.
◻ Catá logo (catalog) – Dicioná rio de dados
⬜ Em SQL2 um catá logo é uma coleç ão nomeada de esquemas em um
ambiente SQL. Pode ser entendido com um BD do sistema, que pode
ser consultado, contendo: informaç ões sobre as tabelas, visões, direitos
de acesso, identificaç ões dos usuá rios, etc. Sua forma exata é uma
caracterı́stica de cada sistema e não da SQL
27. 2
7
SQL-STRUCTURED QUERY LANGUAGE
27
◻ Linguagem
⬜ Mais que uma linguagem de consulta, a SQL oferece funç ões para DEFINIÇ ÃO,
MANIPULAÇ ÃO e CONTROLE dos dados de um Banco de dados.
⬜ DDL (Data Definition Language)
■ CREATE: criaç ão de novas estruturas
■ ALTER: alteraç ão de estruturas existentes DROP: remoç ão de estruturas
⬜ DML (Data Manipulation Language)
■ INSERT: Inserç ão de registros
■ DELETE: remoç ão de registros
■ UPDATE: atualizaç ão de registros
■ SELECT: Seleç ão (consulta) de registros
⬜ DCL (Data Control Language)
■ GRANT: concessão de direitos de acesso a tabelas e visões
■ REVOKE: revogaç ão de direitos de acesso a tabelas e visões
31. 3
1
SQL-STRUCTURED QUERY LANGUAGE
3
1
◻ DDL (Data Definition Language)
Obs:
Domínios (Domain) não são aceitos no MySQL.
Podem ser utilizado em banco de dados como: PostgreSQL, Oracle, SQL Server.
51. DML – SQL
◻ Select – Funções
⬜ Count - Conta o total de registros
⬜ Min – Calcula o menor valor de uma campo
5
1 5
1
52. DML – SQL
◻ Select – Funções
⬜ Max – Calcula o maior valor de uma campo
⬜ AVG – Calcula a média dos valores de um campo
5
2 5
2
53. DML – SQL
◻ Select – Funções
⬜ SUM – Soma os valores de um campo
5
3 5
3
54. DML – SQL
⬜ Select – Funções
■ Like – manipulação de Strings
■ “%” - Busca zero ou mais caracteres
■ “%miguel” -> todos os caracteres terminados com “miguel”
■ “miguel%” -> todos os caracteres começados com “miguel”
5
4
5
4
55. DML – SQL
⬜ Select – Funções
■ Like
■ “_” - desconsidera o caracter
■ “_x” -> todos os caracteres desconsiderando o
primeiro
5
5
Linha
Inicial
Máximo de
linhas
5
5
56. DML – SQL
◻ Select – Funções
⬜ Left – retorna os primeiros caracteres à esquerda
de uma string
⬜ Rigth – retorna os últimos caracteres à direita de
uma string
5
6 5
6
57. Clá usula GROUP BY
◻ Na grande maioria dos casos, as funç ões de
agregaç ão são usadas em cá lculos baseados
em grupos de linhas da tabela. A clá usula
GROUP BY é usada para dividir as linhas de
uma tabela em subgrupos menores.
◻ O SQL recupera cada grupo de linhas de
acordo com os valores da(s) expressão(ões)
especificada(s) na clá usula GROUP BY.
5
7 5
7
58. Clá usula GROUP BY
◻ A clá usula GROUP BY deverá vir sempre após
a clá usula WHERE (ou após a clá usula FROM
quando não existir WHERE).
◻ Quando a clá usula GROUP BY é utilizada, é
possı́vel combinar resultados individuais com
funç ões de grupo na clá usula SELECT, desde
que aqueles resultados individuais sejam
usados no GROUP BY.
5
8 5
8
59. Clá usula GROUP BY
◻ Exemplo:
⬜ Conta o total de pessoas utilizando a primeira
letra do alfabeto
◻ Obs:
⬜ Quando usar GROUP BY todas as colunas que são usadas no SELECT mas não são usadas
na funç ão de grupo devem ser incluı́das na clausula GROUP BY.
⬜ Usando a clá usula WHERE pode-se selecionar as linhas antes de agrupá -las.
5
9 5
9
60. Clá usula GROUP BY com Having
◻ A clá usula WHERE não pode ser usada para
restringir funç ões de grupo. Assim, o exemplo
seguinte não é vá lido:
◻ Os grupos definidos pela clá usula GROUP BY
podem ser filtrados pela clá usula HAVING.
6
0 6
0
61. Clá usula GROUP BY com Having
◻ Exemplo:
⬜ Total de pessoas agrupados por nome e filtrado
com having para as pessoas iniciadas com a letra
“m”.
6
1 6
1
62. Processamento SQL
◻ O processamento da instruç ão SQL pode ser
visto da seguinte forma:
■ É feito o produto cartesiano das tabelas envolvidas;
■ São selecionadas as linhas da tabela que obedecem
ao critério da clá usula WHERE;
■ São criados grupos de linhas que contenham valores
idê nticos nas colunas do GROUP BY;
■ São selecionados os grupos que atendem ao critério
da clá usula HAVING;
■ É feita a classificaç ão do resultado pelos valores das
colunas da clá usula ORDER BY;
■ É feita a projeç ão sobre as colunas especificadas no
SELECT.
6
2 6
2
63. Subqueries
◻ Subqueries são comandos SELECT utilizados
em condiç ões de clá usulas WHERE ou
HAVING, para prover resultados que são
utilizados para completar a consulta principal.
◻ Uma subquery que retorna apenas uma linha
como resultado é chamada "single-row
subquery". Caso mais de uma linha seja
retornada, a subquery é chamada
"multiple-row subquery".
6
3 6
3
64. Subqueries
◻ Os operadores = , > , >= , < , <= e <> podem
ser usados em comparaç ões com "single-row
subqueries". Os operadores IN, ANY e ALL
são usados em "multiple-row subqueries".
◻ Exemplo:
⬜ Listar o Aluno
com o maior ID
6
4 6
4
65. Subqueries
◻ Operadores ANY e ALL
⬜ Quando a subquery retornar mais de um valor, os
operadores ANY e ALL podem ser utilizados para
compatibilizar o resultado da subquery com o tipo
do operador de comparaç ão.
◻ Essa condiç ão será verdadeira quando
<campo> for maior que qualquer um dos
resultados da subquery.
6
5 6
5
66. Subqueries
◻ Operadores ANY e ALL
⬜ Essa condiç ão será verdadeira quando <campo>
for menor que qualquer um dos resultados da
subquery
⬜ Essa condiç ão será verdadeira quando <campo>
for maior que todos os resultados da subquery.
⬜ Essa condiç ão será verdadeira quando <campo>
for menor que todos os resultados da subquery.
6
6 6
6
67. Subqueries
◻ Operadores ANY e ALL
⬜ Exemplo: Busca todas as pessoas em que o id
seja maior que qualquer resultado no subselect
6
7
Tabela
Aluno
6
7
68. Subqueries
◻ Operadores IN e NOT IN
⬜ Verifica se o dado faz parte ou não da lista
fornecida. A lista pode ser formada por valores
retornados por uma subquery.
⬜ Exemplo:
■ Busca todas as pessoas que estejam na tabela de
professor
6
8 6
8
69. Operadores de Conjuntos
◻ Como o resultado de um query é um conjunto de
linhas você pode realizar operaç ões de conjuntos
entre queries.
■ UNION : União entre os resultados das queries;
■ INTERSECT : Interseç ão entre os resultados das
queries;
■ MINUS : Subtraç ão entre os resultados das queries.
◻ A operaç ão de união permite reunir os resultados de
duas consultas distintas em um só resultado.
Equivale à operaç ão de União da Á lgebra
Relacional. A operaç ão de união elimina as linhas
duplicadas.
6
9
6
9
70. Operadores de Conjuntos
◻ Exemplo:
⬜ Unificar os resultados da seleção das tabelas de
professor e aluno.
7
0
7
0
71. Operadores EXISTS e NOT EXISTS
◻ EXIST: retorna “verdadeiro” se uma
determinada subquery retornar ao menos uma
linha e “falso” caso contrá rio.
◻ NOT EXIST: retorna o resultado contrá rio do
operador EXIST.
⬜ Exemplo: Selecionar todas as pessoas que sejam
alunos.
7
1
7
1
72. Visões (views)
◻ Uma visão na terminologia SQL é uma tabela que é derivada
de outras tabelas. Uma visão não precisa existir fisicamente.
Por isso, pode ser considerada como uma tabela virtual, isto
é, uma tabela que realmente não existe como tal, mas sim
como derivaç ão de uma ou mais tabelas bá sicas.
◻ A definiç ão da visão fica armazenada no dicioná rio de dados;
esta definiç ão mostra como ela é derivada das tabelas
bá sicas.
◻ O objetivo bá sico no uso de visões é restringir o acesso a
certas porç ões dos dados por questões de seguranç a, além
de pré-definir certas consultas através de tabelas virtuais que
poderão ser utilizadas por outras consultas.
7
27
2
75. Stored Procedures
◻ É uma biblioteca de comandos em SQL para
utilização junto ao banco de dados.
◻ Armazena tarefas repetitivas e aceita
parâmetros de entrada para que a tarefa seja
efetuada de acordo com a necessidade
individual.
⬜ Pode reduzir o tráfego na rede, melhorar a
performance de um banco de dados, cria tarefas
agendadas, diminuir riscos, cria rotinas de
processsamento em lote, cria funções a serem
utilizadas nas consultas SQL.
7
5
76. Stored Procedures
◻ Podem retornar um conjunto de resultados
(resultset) por meio de um select de retorno.
◻ Podem conter variáveis para controle interno e
processamento, bem como variáveis passadas
como referência para a função.
◻ Permitem instruções de fluxo IF , WHILE ,
LOOP , REPEAT e CASE
◻ Disparar um Stored Procedure:
■ CALL procedure(...)
■ EXECUTE procedure(...)
7
6
85. Trigger
◻ Um recurso de programação executado
sempre que o evento associado ocorrer em
uma ação:
■ INSERT, UPDATE, DELETE (Ação)
■ AFTER, BEFORE (Evento)
⬜ OLD.CAMPO → valor antigo – Antes da ação
⬜ NEW.CAMPO → valor atual -> Valor corrente da
ação
8
5