Você está na página 1de 68

Apresentação |

Revisão sobre SGBD e


Linguagens do SQL

Tecnologia de Banco de Dados III

Profa. Carolina Sacramento | Campus Zona Oeste

carolina.sacramento@uerj.br
https://linktr.ee/carolina_sacramento
Apresentação

2
Quem é você?
1. Quem é?
2. Só estuda ou estagia/trabalha?
3. Por que escolheu Ciência da Computação?
4. O que mais gostou do que estudou até agora na UERJ?

3
O que aprenderam em
Banco de Dados até agora?
Tecnologia de Banco de Dados I e II

4
Como será a disciplina?
▪ Quatro encontros presenciais

▪ Tira-dúvidas online aos sábados, a partir de 18/11/2023 às 11h:


▪ Link do Meet: https://meet.google.com/sje-owzt-syg

▪ Agenda disponível no repositório da disciplina:


00-agenda-disciplina-MC.docx

5
Avaliações
MÉDIA = ( AV1 + AV2 ) / 2
Se MÉDIA > 7:
APROVADO
AV2: Prova
AV1: Seminário Senão:
presencial com
sobre NoSQL
consulta
10 pontos Se MÉDIA >= 4 E MÉDIA < 7:
10 pontos
EXAME FINAL
Senão
É APROVADO no EXAME FINAL:
REPROVADO
(MÉDIA + EXAME FINAL)/2 > 5
6
https://linktr.ee/carolina_sacramento

Agenda da disciplina
Data Evento
10/11 Apresentação da disciplina + revisão sobre SGBD e linguagens do SQL
17/11 Segurança em banco de dados (acesso, restrições de integridade,
disponibilidade, confidencialidade) + indexação e hashing
24/11 Processamento de transações + recuperação e atomicidade
01/12 NÃO HAVERÁ AULA
08/12 Apresentação dos Seminários sobre NoSQL (AV1)
15/12 Prova individual (AV2)
22/12 Prova final individual (AV3)

7
AV1: Seminários - regras do jogo
▪ Grupos de alunos: 3 ou 4 pessoas

▪ Quatro tipos de bancos de dados NoSQL

▪ Critérios:
▪ Atender três pontos essenciais

▪ 20-30min apresentação + 10min discussões

▪ Assistir e avaliar outros seminários


Ilustração: pch-vector 8
Seminários: tipos de NoSQL

Cada grupo será responsável por apresentar para a turma um tipo de


bancos de dados NoSQL

9
Seminários: pontos essenciais

1 O que é? Por que é relevante? Quais são os prós e contras de


utilizá-lo?

2 Como funciona? Quais são os SGBD’s desse tipo disponíveis no


mercado

3 Exemplos de empresas e/ou sistemas que utilizam ou poderiam


se beneficiar desse tipo de estrutura de banco de dados

Demonstração de uso/funcionamento

10
avaliação da
professora
5

avaliação dos
colegas
1
Seminários:
composição da 10
apresentação
nota dentro do
tempo
2

fez avaliação
dos colegas
2
11
AV2 e Prova final: regras do jogo
▪ Distribuição das questões:
▪ 10 Questões objetivas, 0.5 ponto cada
▪ 2 questões discursivas, 1.5 pontos cada
▪ 2 questões discursivas, 1 ponto cada

▪ Individual e com consulta:


▪ Anotações impressas, livros, apostilas
▪ Não vale consultar dispositivos digitais
Ilustração: pch-vector 12
Material da disciplina

https://linktr.ee/carolina_sacramento

13
Bibliografia

14
Revisão sobre SGBD e
Linguagens do SQL

15
Perguntas iniciais
▪ O que vocês aprenderam até agora em Tecnologia de Banco
de Dados
▪ Teoria? Prática? Que SGBD?

▪ Que linguagem de programação vocês conhecem?

▪ Que ferramentas estão instaladas nesses computadores?

16
A importância dos dados na atualidade

“Dados são o novo petróleo"


(Data is the new oil) Clive Humby

“O recurso mais valioso do


mundo não é mais o petróleo,
mas dados” The Economist
Ilustração: junsoft

17
Sistemas Gerenciadores de Bancos de Dados
(Data Base Management System)

Diagrama: Jhonatas Soares


Sistemas Gerenciadores de Bancos de Dados:
vantagens
Funcionalidades que permitem executar
Acesso rápido aos
requisições aos dados de forma eficiente
dados
(índices, memória)

Controle de Dados armazenados em um único local,


redundância evitando inconsistência

Funcionalidade que garante o atendimento


Garantia de
a regras definidas (tipos de dados;
integridade
restrições de operação)
Sistemas Gerenciadores de Bancos de Dados:
vantagens

Backup e Subsistemas que ajudam a recuperar dados


recuperação após ocorrência de falhas

Funcionalidades que permitem o controlar o


Controle de acesso
acesso aos dados
Principais SGBD | Nov. 2023

Crédito: DB-Engines
Bancos de dados relacionais versus NoSQL
Limites de uso: bancos de dados
relacionais em grandes
conjuntos de dados
▪ Capacidade de armazenamento: Peta bytes

▪ Perda de performance e dificuldade de


processar relacionamentos em grandes
conjuntos de dados

▪ Dificuldades em esquemas complexos


Tabela e Diagrama: Fórum TechTudo e Blog Neoway
Características: banco de dados NoSQL [1 de 2]
▪ Não usam SQL (No-SQL ou Not-only-SQL)

▪ Geralmente são open-sources

▪ Formas diferentes de organização (não usam tabelas)


Características: banco de dados NoSQL [2 de 2]
▪ Persistência poliglota: usam dois
formatos de dados ao mesmo tempo
▪ Clusterização: executar banco em
várias máquinas ao mesmo tempo
▪ Escala horizontal: possibilidade de
aumentar a quantidade de
computadores) etc.
Crédito: Eduardo Lara
Papéis no uso de SGBDs

Usuário Desenvolvedor

Fotos: Freepik e DCStudio 26


Papéis no uso e gerenciamento de SGBDs

Analista de Dados Administrador de Banco de Dados


Fotos: Marymount University e iStock
27
Demonstração com MySQL

28
Diferenças entre os SGBDs

INSERT cliente (nome) VALUES INSERT INTO cliente (nome)


('Carolina'); VALUES ('Carolina');

29
Um modelo conceitual simplório

Diagrama Entidade-Relacionamento gerado com o BR Modelo Web

30
Modelo lógico > físico

Modelo gerado com o MySQL Workbench

31
Ferramentas de modelagem, como o MySQL
Workbench geram esquema do banco de dados
para ajudar o desenvolvedor!
Mas é essencial conhecer os
comandos!

Script gerado
com o MySQL
Workbench

32
Como criar e manipular o banco de dados?
▪ No MySQL ...

Modo console PHP MyAdmin MySQL Workbench

33
Structured
Query
Language

Diagrama: DevMedia
34
DDL: Linguagem de Definição de Dados
Define os comandos utilizados
para criação (CREATE) de
tabelas, views, índices,
atualização dessas estruturas
(ALTER), assim como a
remoção (DROP)

Diagrama: DevMedia
35
SHOW DATABASES
SHOW {DATABASES | SCHEMAS}

[LIKE 'pattern' | WHERE expr]

Objetivo: Listar os bancos de dados presentes no servidor MySQL

Fonte: https://dev.mysql.com/doc/refman/8.0/en/show-databases.html
36
CREATE DATABASE | USE DATABASE
CREATE DATABASE nome_do_banco_de_dados;

USE nome_do_banco_de_dados
Database changed

Objetivo: Criar e selecionar um banco de dados


Fonte: https://dev.mysql.com/doc/refman/8.0/en/creating-database.html 37
SHOW TABLES
SHOW TABLES;

Objetivo: Exibir todas as tabelas associadas ao banco de dados que está


selecionado (USE deve ter sido acionado anteriormente)

Fonte: https://dev.mysql.com/doc/refman/8.0/en/show-tables.html
38
TIPO DE DADO DESCRIÇÃO

CREATE TABLE INTEGER Números inteiros

FLOAT Números reais

CREATE TABLE nome_tabela ( String de comprimento


CHAR (tamanho) fixo
(0 a 255)
campo1 TIPO_DE_DADO constraint, String de tamanho
VARCHAR(tamanho)
variável: 0 a 65.535
campo2 TIPO_DE_DADO constraint, Igual a CHAR(), mas
BINARY(size) armazena binário.
Padrão: 1
campo3 TIPO_DE_DADO
String com comprimento
TEXT(size)
máximo de 65.535
); String com comprimento
LONGTEXT
máx. 4,294,967,295
Objetivo: Criar tabela (e campos) DATETIME
Padrão: 'YYYY-MM-DD
hh:mm:ss'
Fonte: https://dev.mysql.com/doc/refman/8.0/en/creating- E muitos outros tipos de dados 39
tables.html
CONSTRAINT (restrições) mais usadas
• NOT NULL- Garante que uma coluna não tenha valor NULL

• UNIQUE- Garante que todos os valores em uma coluna sejam diferentes

• PRIMARY KEY- Combinação de a NOT NULL e UNIQUE. Identifica exclusivamente cada linha em uma
tabela

• FOREIGN KEY - Impede ações que destruiriam links entre tabelas

• CHECK- Garante que os valores em uma coluna satisfaçam uma condição específica

• DEFAULT- Define um valor padrão para uma coluna se nenhum valor for especificado

• CREATE INDEX- Usado para criar e recuperar dados do banco de dados muito rapidamente

40
Fonte: W3Schools
ALTER TABLE
ALTER TABLE nome_da_tabela

ADD nome_da_coluna TIPO_DE_DADO;

Objetivo: Alterar estrutura de uma tabela

Fonte: https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
41
DROP TABLE
DROP TABLE nome_da_tabela;

Objetivo: Remover uma tabela

Fonte: https://dev.mysql.com/doc/refman/8.0/en/drop-table.html
42
DROP DATABASE
DROP DATABASE nome_do_banco_de_dados;

Objetivo: Remover um banco de dados

Fonte: https://dev.mysql.com/doc/refman/8.0/en/drop-database.html
43
DML: Linguagem de Manipulação de Dados
Define os comandos usados para
manipulação de dados em
tabelas, o que inclui tarefas para
inserção (INSERT), atualização
(UPDATE) e exclusão (DELETE)
de registros (linhas) em uma
tabela.
Diagrama: DevMedia
44
INSERT INTO
INSERT INTO nome_da_tabela (coluna1, coluna2 ...)

VALUES (valor1, valor2 ...)

Objetivo: Inserir novos registros na tabela

OBS: Caso vá inserir valores em todas as colunas, não é necessário


indicar o nome da coluna! Mas precisa inserir dados na ordem em que
as colunas estão definidas no SGBD
Doc: https://dev.mysql.com/doc/refman/8.0/en/insert.html
45
UPDATE
UPDATE nome_da_tabela

SET coluna1=valor1, coluna2=valor2,

WHERE condição

Objetivo: Modificar um registro existente na tabela

OBS: Estabelecer a condição de alteração é essencial. Caso contrário,


modifica todos os valores da coluna.
Doc: https://www.w3schools.com/mysql/mysql_update.asp
46
DELETE FROM
DELETE FROM nome_da_tabela

WHERE condição

Objetivo: Remover um registro da tabela

OBS: Aqui a condição também é essencial!

Doc: https://dev.mysql.com/doc/refman/8.0/en/delete.html
47
DQL: Linguagem de Consulta de Dados
Define os comandos usados
para consulta em tabelas
(SELECT).
Em algumas bibliografias o
SELECT é associado à DML,
em outras tem esse grupo
próprio
Diagrama: DevMedia
48
SELECT
SELECT coluna1, coluna2, coluna3, ...

FROM nome_da_tabela

Objetivo: Selecionar/Consultar dados do banco de dados

Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
49
SELECT ... WHERE
SELECT coluna1, coluna2, coluna3, ...

FROM nome_da_tabela

WHERE condição

Objetivo: Selecionar/Consultar dados do banco de dados, atendendo a


determinada condição

Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
50
SELECT ... WHERE ... AND, OR, NOT
SELECT coluna1, coluna2, coluna3, ...

FROM nome_da_tabela

WHERE condição AND/OR/NOT condição

Objetivo: Selecionar/Consultar dados do banco de dados, atendendo a


uma ou mais condições

Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
51
SELECT ... WHERE ... ORDER BY
SELECT coluna1, coluna2, coluna3, ...
FROM nome_da_tabela
WHERE condição AND|OR|NOT condição
ORDER BY coluna1, coluna2, ... ASC|DESC
Objetivo: Selecionar/Consultar dados do banco de dados, atendendo a uma ou mais
condições e apresentando resultados ordenado por determinada coluna (de forma
crescente ou decrescente)
Doc: https://dev.mysql.com/doc/refman/8.0/en/select.html
52
E como consultar dados de tabelas
relacionadas?

53
JOIN
Objetivo: combinar linhas de duas ou mais tabelas, com base em uma
coluna relacionada entre elas.

idcliente nome idtelefone Numero Tipo fk_idcliente


1 Carol 1 22233-2332 Fixo 1
2 Adriano 2 2322-12221 Fixo 2
3 Maria 3 90000-2233 Celular 2

Doc: https://dev.mysql.com/doc/refman/8.0/en/join.html
54
TIPO DESCRIÇÃO DIAGRAMA

Tipos de Join no MySQL


Registros comuns entre as tabelas
AeB

Todos os registros da tabela A


(esquerda) e registros
correspondentes na tabela B
(direita)

Todos os registros da tabela B


(direita) e registros
correspondentes na tabela A
(esquerda)

Todos os registros de ambas as


tabelas A e B (pode-se usar JOIN
também)

55
Crédito: UGT World
Join - comandos

56
SELECT com JOIN
SELECT Tabela1.coluna1, Tabela2.coluna1, Tabela1.coluna3

FROM Tabela1

INNER JOIN Tabela2 ON

Tabela1.campoID = Tabela2.campoFK;

57
DQL: Linguagem de Controle de Dados
Define comandos relacionados
à segurança do banco de
dados, permitindo o controle
de acesso aos dados (concede
e retira) privilégios de acesso
com GRANT e REVOKE

Diagrama: DevMedia
58
GRANT
GRANT ALL PRIVILEGES ON banco_de_dados.coluna.*

TO ‘username’@’server’

ou GRANT SELECT, INSERT, UPDATE, DELETE (privilégios


específicos) ...

Objetivo: Permitir o acesso de um banco de dados para um usuário (ideal por


questões de segurança
Doc: https://dev.mysql.com/doc/refman/8.0/en/grant.html
59
GRANT ... ANTES PORÉM ... CREATE USER
CREATE USER 'nome'@'localhost' IDENTIFIED BY ‘senha’;

É necessário criar o usuário que terá acesso ao banco de


dados!

Doc: https://dev.mysql.com/doc/refman/8.0/en/create-user.html
60
REVOKE
REVOKE lista_de_privilégios ON objeto FROM
usuario1,usuário2 ...

Objetivo: Remover permissões de acesso!

Doc: https://dev.mysql.com/doc/refman/8.0/en/revoke.html
61
DQL: Linguagem de Transação de Dados
Gerencia diferentes transações ocorridas.

▪ BEGIN TRAN: marca o começo de uma


transação no banco

▪ COMMIT: envia todos os dados da


transação permanentemente para o
banco;

▪ ROLLBACK: desfaz as alterações feitas


na transação
Diagrama: DevMedia
62
TRANSAÇÕES EM SQL: PROPÓSITO

▪ Manter o banco de dados consistente em


caso de falha do sistema ou de operações

▪ Fornecer isolamento entre os programas


que acessam o banco de forma
concorrente.

Crédito: Usuário do 63
Reddit
Ativado por padrão na engine
COMMIT e ROLLBACK InnoDB();

COMMIT ROLLBACK

Quando uma transação é efetuada Caso haja falha em qualquer uma


com sucesso, o banco de dados é das operações da transação, o
alterado de forma permanente, com banco de dados deverá ser
os dados envolvidos na transação retornado ao estado em que se
persistidos encontrava anteriormente à
execução da transação

64
65
Como verificar se o commit está ativado por
padrão?

1: ATIVADO
0: DESATIVADO

66
Desabilitar e habilitar commit
Por que isso é
relevante?

Para
conseguirmos
aplicar
ROLLBACK!

67
Dúvidas?
carolina.sacramento@uerj.br

68

Você também pode gostar