0% acharam este documento útil (0 voto)
8 visualizações38 páginas

Aula 4 Parte 4 - Linguagem SQL - Parte 3 DML

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
8 visualizações38 páginas

Aula 4 Parte 4 - Linguagem SQL - Parte 3 DML

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 38

Aula 4 Parte 4

Linguagem SQL - Parte 3: DML (Data


Manipulation Language)
Revisão da aula anterior: Linguagem SQL - Parte 2:
DML. Select, as Alias, condições AND, IS NOT
NULL, ORDER BY, ROUND, DATE_FORMAT,
BETWEEN, LIKE e IN, AND, IS NOT NULL,
Função Agregada SUM, AVG, COUNT(*) , MAX,
MIN, SubConsulta.

Objetivo da aula (Bloom - Aplicar): Aplicar


comandos DML (Data Manipulation Language)
para inserir, consultar, atualizar e excluir dados
em um banco de dados relacional, construindo
consultas complexas com filtros, Junções (JOIN),
INNER, UNION, LEFT e
RIGHT JOIN, visando a manipulação eficiente de
dados em sistemas de automação industrial.
Competências e Capacidades
Técnicas
Utilização de Construção de
comandos DML consultas SQL
Domínio dos Habilidade para
comandos para criar consultas
manipulação de eficientes e
dados em bancos otimizadas
relacionais
Fundamentos Técnicos e Científicos
Linguagem SQL, comandos DML (SELECT,
INSERT, UPDATE, DELETE), cláusulas
(WHERE, ORDER BY, GROUP BY, HAVING),
operadores (lógicos, de comparação,
aritméticos), junções (INNER JOIN, LEFT
JOIN, RIGHT JOIN, FULL OUTER JOIN),
subconsultas
Exemplo Banco de Dados para Sistema de Automação Industrial
-- Criando o banco de dados
CREATE DATABASE AutomacaoIndustrial;

-- Usando o banco de dados


USE AutomacaoIndustrial;

-- Criando a tabela Produtos


CREATE TABLE Produtos (
id_produto INT PRIMARY KEY,
nome_produto VARCHAR(255),
preco DECIMAL(10, 2),
categoria VARCHAR(255)
);

-- Criando a tabela Sensores


CREATE TABLE Sensores (
id_sensor INT PRIMARY KEY,
tipo_sensor VARCHAR(255),
valor_leitura DECIMAL(10, 2),
timestamp DATETIME
);
Exemplo Banco de Dados para Sistema de Automação Industrial
-- Criando a tabela Maquinas
CREATE TABLE Maquinas (
id_maquina INT PRIMARY KEY,
nome_maquina VARCHAR(255),
status VARCHAR(255)
);

-- Criando a tabela Clientes


CREATE TABLE Clientes (
id_cliente INT PRIMARY KEY,
nome_cliente VARCHAR(255),
endereco VARCHAR(255)
);

-- Criando a tabela Pedidos


CREATE TABLE Pedidos (
id_pedido INT PRIMARY KEY,
id_cliente INT,
data_pedido DATE,
FOREIGN KEY (id_cliente) REFERENCES Clientes(id_cliente)
);
Exemplo Banco de Dados para Sistema de Automação Industrial

-- Criando a tabela Produtos_Pedidos (tabela intermediária para o relacionamento N:M)

CREATE TABLE Produtos_Pedidos (


id_produto INT,
id_pedido INT,
quantidade INT,
FOREIGN KEY (id_produto) REFERENCES Produtos(id_produto),
FOREIGN KEY (id_pedido) REFERENCES Pedidos(id_pedido),
PRIMARY KEY (id_produto, id_pedido)
);
Exemplo Banco de Dados para Sistema de Automação Industrial

-- Inserindo dados na tabela Produtos


INSERT INTO Produtos (id_produto, nome_produto, preco, categoria) VALUES
(1, 'Sensor de Temperatura', 120.50, 'Sensores'),
(2, 'Atuador Pneumático', 80.00, 'Atuadores'),
(3, 'Controlador Lógico Programável', 500.00, 'Controladores'),
(4, 'Sensor de Pressão', 95.20, 'Sensores'),
(5, 'Válvula Solenoide', 45.75, 'Atuadores');

-- Inserindo dados na tabela Sensores


INSERT INTO Sensores (id_sensor, tipo_sensor, valor_leitura, timestamp) VALUES
(1, 'Temperatura', 25.5, '2024-03-08 10:00:00'),
(2, 'Pressão', 12.8, '2024-03-08 10:05:00'),
(3, 'Temperatura', 26.2, '2024-03-08 10:10:00');
Exemplo Banco de Dados para Sistema de Automação Industrial

-- Inserindo dados na tabela Maquinas


INSERT INTO Maquinas (id_maquina, nome_maquina, status) VALUES
(1, 'Máquina A', 'Operacional'),
(2, 'Máquina B', 'Manutenção');

-- Inserindo dados na tabela Clientes


INSERT INTO Clientes (id_cliente, nome_cliente, endereco) VALUES
(1, 'João Silva', 'Rua A, 123'),
(2, 'Maria Souza', 'Rua B, 456'),
(3, 'Pedro Santos', 'Rua C, 789');
Exemplo Banco de Dados para Sistema de Automação Industrial

-- Inserindo dados na tabela Pedidos


INSERT INTO Pedidos (id_pedido, id_cliente, data_pedido) VALUES
(1, 1, '2024-12-10'),
(2, 2, '2024-12-15'),
(3, 1, '2024-12-20');

-- Inserindo dados na tabela Produtos_Pedidos


INSERT INTO Produtos_Pedidos (id_produto, id_pedido, quantidade) VALUES
(1, 1, 2),
(2, 1, 1),
(1, 2, 3),
(4, 3, 1);
Junções (JOIN)
INNER JOIN LEFT JOIN
Retorna registros quando Retorna todos os
há correspondência em registros da tabela à
ambas as tabelas esquerda e os
correspondentes da
tabela à direita
FULL OUTER JOIN OU UNION RIGHT JOIN
Retorna registros quando Retorna todos os
há correspondência em registros da tabela à
qualquer uma das tabelas direita e os
correspondentes da
tabela à esquerda

"Joins are used to combine rows from two or more tables based on a related column
between them." (Silberschatz et al., 2011, p. 362)
Exemplos de junções em um contexto de automação (ex: juntar dados de sensores com
informações das máquinas).
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN

-- Selecionando nome do cliente e data do pedido (INNER JOIN)


SELECT c.nome_cliente, p.data_pedido FROM
Clientes c INNER JOIN Pedidos p ON c.id_cliente =
p.id_cliente;
-- Selecionando todos os clientes e todos os pedidos, exibindo as
combinações correspondentes e também os não correspondentes. (FULL
OUTER JOIN - Não suportado diretamente no MySQL. Simulado com UNION)
SELECT c.nome_cliente, p.id_pedido FROM Clientes c
LEFT JOIN Pedidos p ON c.id_cliente = p.id_cliente
UNION
SELECT c.nome_cliente, p.id_pedido FROM Pedidos p
RIGHT JOIN Clientes c ON c.id_cliente = p.id_cliente;
Exemplo Consulta Select Junções (JOIN), INNER, UNION, LEFT e RIGHT JOIN

-- Selecionando todos os clientes e seus pedidos, mesmo que


o cliente não tenha pedidos (LEFT JOIN)
SELECT c.nome_cliente, p.id_pedido FROM Clientes c
LEFT JOIN Pedidos p ON c.id_cliente = p.id_cliente;

-- Selecionando todos os pedidos e seus clientes, mesmo que


o pedido não esteja associado a um cliente. (RIGHT JOIN)
SELECT c.nome_cliente, p.id_pedido FROM Pedidos p
RIGHT JOIN Clientes c ON c.id_cliente = p.id_cliente;
Atualizando Dados com UPDATE

Sintaxe do UPDATE

"The UPDATE statement modifies existing data in a


table." (Date, 2004, p. 153)

Importância do WHERE Exemplos em Automação

Evita atualizações Atualizar o status de uma


indesejadas em máquina, corrigir um valor
múltiplos registros de sensor incorreto
Exemplo Atualizando Dados com UPDATE

-- Atualizando o preço do produto com id_produto = 1


UPDATE Produtos SET preco = 130.00
WHERE id_produto = 1;

-- Atualizando o status da máquina com id_maquina = 2


UPDATE Maquinas SET status = 'Operacional'
WHERE id_maquina = 2;
Excluindo Dados com DELETE
Sintaxe do DELETE Importância da cláusula
"The DELETE WHERE
statement removes Sem WHERE, todos os
rows from a table." registros da tabela serão
(Elmasri & Navathe, excluídos
2016, p. 127)
Comparação com TRUNCATE TABLE
DELETE remove registros um a um e pode ser
revertido
TRUNCATE é mais rápido, mas remove todos
os registros e não pode ser facilmente
revertido
Exemplo Excluindo Dados com DELETE

-- Excluindo o produto com id_produto = 5


DELETE FROM Produtos WHERE id_produto = 5;

-- Excluindo todos os registros de sensores com


valor de leitura inferior a 25
DELETE FROM Sensores WHERE valor_leitura < 25;
Exemplo Excluindo Dados com DELETE

-- Excluindo o produto com id_produto = 5


DELETE FROM Produtos WHERE id_produto = 5;

-- Excluindo todos os registros de sensores com


valor de leitura inferior a 25
DELETE FROM Sensores WHERE valor_leitura < 25;
Exemplo Excluindo Dados com DELETE
Exemplo Excluindo Dados com DELETE
Exemplo Excluindo Dados com DELETE
Exemplo Excluindo Dados com DELETE
Práticas Recomendadas para DML

Ao trabalhar com comandos DML, é fundamental seguir boas práticas como: usar
transações para garantir a integridade dos dados, otimizar consultas para melhor
desempenho, implementar validações para evitar erros de dados e manter backups
regulares para recuperação em caso de falhas.
Aplicações em Automação Industrial

Armazenamento de Dados Consulta e Análise


Registro de leituras de Monitoramento de
sensores e estados de parâmetros e identificação
equipamentos de tendências

Relatórios e Dashboards Controle de Processos


Visualização de métricas de Ajustes baseados em
produção e eficiência dados históricos e em
tempo real
Segurança em Operações DML

Prevenção de Injeção SQL Controle de Acesso Auditoria e Logs


Utilize consultas Implemente permissões Mantenha registros
parametrizadas e validação granulares para garantir detalhados de todas as
de entrada para evitar que usuários tenham operações DML para
ataques de injeção SQL acesso apenas aos dados rastreabilidade e
que podem comprometer a necessários para suas conformidade com
segurança do banco de funções. regulamentações.
dados.
Exercício 1: Inserção de Dados
Enunciado Solução Esperada
Escreva um comando SQL INSERT INTO ???? (
para inserir um novo produto ??,
na tabela "produtos" com os ??,
seguintes dados: ??,
???)
id_produto = 10,
nome_produto = 'Sensor de VALUES (
Temperatura', preco = 120.50, ??, ‘???’, ???, ‘???');
categoria = 'Sensores'.

Dicas
Lembre-se de colocar valores de texto entre aspas simples
Valores numéricos não precisam de aspas
Exercício 2: Consulta com Filtro
Resultado Esperado
Lista de sensores com nome e preço

Filtro por Categoria


Usar WHERE para filtrar apenas 'Sensores'

Seleção de Colunas
Selecionar apenas nome_produto e preco

Escreva uma consulta SQL para selecionar o nome e o preço de todos os produtos da
categoria 'Sensores'.

Solução:
SELECT ????, ???? FROM ????? WHERE ???? = ‘????';
Exercício 3: Atualização de Dados
Identificar o Produto
Localizar o produto com id_produto = 10

Modificar o Preço
Alterar o valor para 135.00

Confirmar Atualização
Verificar se a atualização foi bem-sucedida

Escreva um comando SQL para atualizar o preço


do produto com id_produto = 10 para 135.00.
Solução:
????? produtos ???? preco = 135.00
??? id_produto = 10;
Exercício 4: Cálculo com Função
Agregada
AVG()
Função de Média
Calcula a média dos valores

WHERE
Filtro por Categoria
Limita o cálculo apenas para 'Atuadores'
Escreva uma consulta SQL para calcular o preço
médio dos produtos da categoria 'Atuadores'.
Solução:
SELECT ????(???) AS ???? FROM produtos WHERE
???? = 'Atuadores';
Exercício 5: Consulta com Junção
Tabela Clientes
Contém informações dos clientes

JOIN
Conecta as tabelas por um campo comum

Tabela Pedidos
Contém informações dos pedidos

Filtro por Data


Limita aos pedidos de dezembro/2024

Escreva uma consulta SQL para selecionar os


nomes dos clientes que fizeram pedidos no mês de
dezembro de 2024. Utilize junção entre as tabelas
"clientes" e "pedidos".
Exercício 6: Exclusão de Dados
Verificar o Resultado
Formular o Comando DELETE Confirmar que apenas os
Identificar os Registros Usar a cláusula WHERE para registros desejados foram
Localizar pedidos com limitar a exclusão excluídos
status "cancelado"
Escreva um comando SQL para excluir todos os pedidos com status "cancelado".
Solução:
???? FROM ??? WHERE ????? = ‘???';
Conclusão e Fechamento
SELECT INSERT UPDATE DELETE
Resumo dos principais tópicos: Comandos DML para manipular dados
em um banco de dados relacional.

Tema da próxima aula: Armazenamento em Larga Escala - Big Data.


Introdução aos conceitos e desafios do Big Data.

Dúvidas: Espaço para perguntas e esclarecimentos.


Referências Bibliográficas
CONNOLLY, T.; BEGG, C. Database Systems: A Practical
Approach to Design, Implementation,
and Management. 6. ed. Harlow:
Pearson Education Limited, 2014.

DATE, C. J. An Introduction to Database Systems. 8.


ed. Boston: Addison-Wesley, 2004.

ELMASRI, R.; NAVATHE, S. B. Fundamentals of database systems. 7.


ed. Harlow: Pearson Education Limited,
2016.
RAMAKRISHNAN, R.; GEHRKE, J. Database management systems. 3. ed.
Nova Iorque: McGraw-Hill, 2003.

SILBERSCHATZ, A.; KORTH, H. F.; Database System Concepts. 6. ed. Nova


SUDARSHAN, S. Iorque: McGraw-Hill, 2011.

STOUFFER, K.; FALCO, J.; SCARFONE,Guide


K. to Industrial Control Systems
(ICS) Security. Gaithersburg: NIST, 2011.
(NIST Special Publication 800-82)

Você também pode gostar