formação de administradores de redes linux lpi – level 1 senac ti fernando costa sql (structure...
TRANSCRIPT
![Page 1: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/1.jpg)
Formação de Administradores de Redes Linux
LPI – level 1
SENAC TI
Fernando CostaSQL (Structure Query Language)
![Page 2: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/2.jpg)
SQL
Linguagem para:Definição de dados: criação das estruturas
Data Definition Language (DDL)Manipulação de dados: atualização e
consultas Data Manipulation Language (DML)
![Page 3: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/3.jpg)
Manipulação de Dados
Define operações de manipulação de dados I (INSERT) A (UPDATE) E (DELETE) C (SELECT)
Instruções declarativas manipulação de conjuntos especifica-se o que fazer e não como fazer
![Page 4: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/4.jpg)
Inserções, Alterações e Exclusões
![Page 5: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/5.jpg)
SQL – Insert Inserção de dadosINSERT INTO nome_tabela [(lista_atributos)] VALUES (lista_valores_atributos) [, (lista_valores_atributos)]
Exemplos INSERT INTO Ambulatorios VALUES (1, 1, 30)
INSERT INTO Medicos (codm, nome, idade, especialidade, CPF, cidade) VALUES (4, ‘Carlos’, 28,’ortopedia’, 11000110000, ‘Joinville’);
![Page 6: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/6.jpg)
SQL – Inserção a partir de outra tabela
Inserção de dadosPermite inserir em uma tabela a partir de outra tabelaA nova tabela terá os mesmos atributos, com os mesmos
domínios
Exemplos INSERT into cliente as SELECT * from funcionario
![Page 7: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/7.jpg)
SQL – Update Alteração de dadosUPDATE nome_tabela SET nome_atributo_1 = Valor [{, nome_atributo_n = Valor}][WHERE condição]
Exemplos UPDATE Medico SET cidade = ‘Florianopolis’
UPDATE AmbulatoriosSET capacidade = capacidade + 5, andar = 3WHERE nroa = 2
![Page 8: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/8.jpg)
SQL – DML Exclusão de dadosDELETE FROM nome_tabela [WHERE condição]
Exemplos DELETE FROM Ambulatorios
DELETE FROM MedicosWHERE especialidade = ‘cardiologia’
or cidade < > ‘Florianopolis’
![Page 9: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/9.jpg)
Exercícios
Inserir 3 médicos na tabela de médicos Cadastrar 4 ambulatórios, com numeroA
sendo 1,2,3 e 4 Cadastrar 2 pacientes Cadastrar 3 consultas Alterar o numero do ambulatório de todos
os médicos para 3 Alterar o nome do paciente 1 para Pedro
da Silva
![Page 10: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/10.jpg)
Consultas: SELECT
![Page 11: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/11.jpg)
Estrutura Básica
Uma consulta em SQL tem a seguinte forma:
select A1, A2, ..., An
from r1, r2, ..., rmwhere P
Ai representa um atributo Ri representa uma tabela P é um predicado
Esta consulta é equivalente a uma expressão da Algebra Relacional
O resultado de uma consulta SQL é sempre uma tabela
))(( 21,,, 21 mPAAA rrrn
![Page 12: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/12.jpg)
Estrutura Básica: resumindo….
SELECT lista de atributos desejados FROM uma ou mais tabelasWHERE com restrições sobre atributos
Exemplo: encontre o nome e o salário dos funcionarios da relação funcionário
SELECT nome, salario
FROM funcionario
Equivalente a operação de PROJEÇÃO na Álgebra
nome, salario (funcionario)
![Page 13: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/13.jpg)
Distinct
O SQL permite duplicatas em relações e resultados em consultas
Para eliminar duplatas, usa-se a cláusula DISTINCT depois do SELECT
Exemplo: SELECT distinct nome FROM funcionario
![Page 14: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/14.jpg)
A cláusula *
O asterisco na cláusula SELECT denota TODOS OS ATRIBUTOS
SELECT * FROM funcionario
Expressões artitméticas podem ser usadas na cláusula SELECT +, –, , /
Exemplo: SELECT nome, salario + 200 FROM funcionario
![Page 15: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/15.jpg)
A cláusula FROM
Equivale a operação de Produto Cartesiano da Álgebra
Lista as relações envolvidas na consulta
Exemplo: SELECT FROM funcionario, departamento
![Page 16: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/16.jpg)
A cláusula FROM
Quando mais de uma tabela é utilizada é necessário dar um apelido para elas que deve ser utilizado para diferenciar atributos iguais
Exemplo: SELECT f. FROM funcionario f, departamento d WHERE f.codDepto = d.codDepto
![Page 17: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/17.jpg)
A cláusula WHERE
A cláusula where especifica as condições que o resultado precisa satisfazer
Corresponde ao predicado de seleção da álgebra
Exemplo: SELECT nome, salario
FROM funcionario
WHERE salario > 2000
operadores AND, OR e NOT podem ser usados Exemplo: SELECT nome, salario
FROM funcionario
WHERE salario > 2000 AND idade < 30
![Page 18: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/18.jpg)
Renomeando atributos
Renomeação de atributos
old-name as new-name
Exemplo: SELECT nome as nomeCliente, (salario+200) as comissao
FROM funcionario
![Page 19: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/19.jpg)
Operações com Strings
O SQL permite comparar strings com o operador like Pode ser combinado com outros caracteres
% compara substrings
Exemplo I: encontre o nome dos funcionarios cujos nomes iniciam com “Pedro”
select nomefrom funcionariowhere nome like 'Pedro%'
Exemplo II: encontre o nome dos funcionarios cujos nomes contém “Pedro” no nome
select nomefrom funcionariowhere nome like ‘%Pedro%'
![Page 20: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/20.jpg)
Operações de Conjunto
Envolvem ao menos 2 tabelas Interseção e União: elimina automaticamente repetições
Relações precisam ser compatíveis (mesmo número de atributos)Union ALL e intersects ALL preserva duplicatas
(select nome from conta)intersect(select nome from emprestimo)
Encontre os clientes que tenham empréstimos e contas
(select nome from conta)union(select nome from emprestimo)
![Page 21: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/21.jpg)
Ordenando tuplas com Order By
Exemplo: Liste em ordem alfabética os funcionarios que trabalham no departamento financeiro
select distinct funcionario.nomefrom funcionario, departamento
where funcionario.codDepto=departamento.codDepto AND
departamento.nome=‘financeiro’
order by funcionario.nome
Order by pode ser em ordem descendente Exemplo: order by nome desc
![Page 22: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/22.jpg)
Funções de Agregação
Operam sobre múltiplos valores de uma coluna da tabela e retornam um valor
avg: médiamin: valor mínimo
max: valor máximosum: soma de valorescount: número de valores
![Page 23: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/23.jpg)
Exemplos:
Encontre a soma dos salarios dos funcionarios
select count(*)
FROM cliente
select SUM(salario)
FROM funcionario
Funções de Agregação
Encontre o número de tuplas da relação CLIENTE
![Page 24: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/24.jpg)
Funções de Agregação e Group By
Encontre o total de funcionarios de cada departamento
Nota: Atributos na cláusula SELECT que estão FOR A da função de agregação precisam aparecer na lista de atributos do GROUP BY
select d.nome, count(f.*) as numeroFuncionarios
FROM funcionario f, departamento d
WHERE f.codDepto=d.codDepto
GROUP BY d.nome
![Page 25: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/25.jpg)
Funções de Agregação e Having
A função HAVING é utilizada para aplicar condições sobre grupos e não sobre uma única tupla Exemplo: Quais são os departamentos onde a soma dos salários dos funcionários ultrapassa 50.000
Nota: predicados da cláusula having são aplicados depois que os grupos foram gerados, mas a condição do where é aplicada antes da formação dos
grupos
select d.nome, sum(f.salario)
from funcionario f, departamento d
where f.codDepto=d.codDepto
group by d.nome having um (salario) > 50.000
![Page 26: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/26.jpg)
Consultas Aninhadas
Uma subconsulta select-from-where está aninhada dentro de outra consulta
Exemplo: Selecione os clientes que são funcionários
select nomeCliente
From cliente
Where nomeCliente in (select nomeFuncionario
from funcionario)
![Page 27: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/27.jpg)
Valores nulos Consulta sobre valores inexistentes Exemplo: Encontre os funcionarios que
não possuem carteira de habilitação select nome
from funcionariowhere carteiraHabilitacao is null
OBS: cuidado que valores nulos em operações matemáticas podem dar problemas
![Page 28: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/28.jpg)
Álgebra SQL
nome (
(Médicos X
= Médicos.codm = Consultas.codm
(codm ( data = ’06/11/13’ (Consultas))) ) )
Select nomeFrom MédicosWhere codm in (select codm from Consultas where data = ‘06/11/13’)
(CPF (Funcionários))
(CPF (Pacientes))
Select CPF From FuncionáriosWhere CPF not in(select CPF from Pacientes)
(CPF (Médicos)) (CPF (Pacientes))
Select CPFFrom MédicosWhere CPF in(select CPF from Pacientes)
SQL e Algebra
![Page 29: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/29.jpg)
Exercícios
Escreva em SQL todas as consultas escritas em Algebra Relacional
![Page 30: Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc110497959413d8c56d8/html5/thumbnails/30.jpg)
Fernando [email protected]