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

Adbd0305 SQLDML

DML (Data Management Language) do SQL

Enviado por

giovanebarcelos
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)
5 visualizações39 páginas

Adbd0305 SQLDML

DML (Data Management Language) do SQL

Enviado por

giovanebarcelos
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/ 39

SQL (Structured Query Language)

DML (Data Manipulation Language)


➢ Anteriormente aprendemos como criar tabelas e outras estruturas para
armazenar dados
➢ Agora está na hora de preencher as tabelas com dados
➢ A manipulação de dados (DML) compreende como inserir, atualizar e
excluir dados em tabelas
➢ Também podemos ter outros formas de efetuar mudanças automáticas
nos dados quando ocorrem certos eventos: gatilhos (triggers) e regras
de reescrita (rewrite rules)
➢ Para completar, também estudaremos como fazer consultas para extrair
dados do banco de dados

Pág. 1 De 39
SQL (Structured Query Language)
Inserção de Dados
➢ A tabela recém-criada não contém dados
➢ A primeira ação a ser realizada para o banco de dados ter utilidade é
inserir dados
➢ Conceitualmente, os dados são inseridos uma linha de cada vez
➢ É claro que é possível inserir mais de uma linha, mas não existe maneira
de inserir menos de uma linha por vez
➢ Mesmo que se conheça apenas o valor de algumas colunas, deve ser
criada uma linha completa

Pág. 2 De 39
SQL (Structured Query Language)
Qual o comando para Inserir Dados?
➢ Para criar uma linha é utilizado o comando INSERT
➢ Este comando requer o nome da tabela, e um valor para cada coluna da
tabela. Por exemplo, considere a tabela produtos:
CREATE TABLE produtos (
cod_prod integer,
nome text,
preco numeric
);
➢ Um exemplo de comando para inserir uma linha é:
INSERT INTO produtos VALUES (1, 'Queijo', 9.99);

Pág. 3 De 39
SQL (Structured Query Language)
Inserção de Dados
➢ Os valores dos dados são colocados na mesma ordem que as colunas se
encontram na tabela, separados por vírgula
➢ Geralmente os valores dos dados são literais (constantes), mas também
são permitidas expressões escalares
➢ A sintaxe anterior tem como desvantagem ser necessário conhecer a
ordem das colunas da tabela
➢ Para evitar isto, as colunas podem ser relacionadas explicitamente.
Exemplo:
INSERT INTO produtos (cod_prod, nome, preco) VALUES (1, 'Queijo',
9.99);
INSERT INTO produtos (nome, preco, cod_prod) VALUES ('Queijo', 9.99,
1);

Pág. 4 De 39
SQL (Structured Query Language)
Inserção de Dados
➢ Muitos usuários consideram boa prática escrever sempre os nomes das
colunas
➢ Se não forem conhecidos os valores de todas as colunas, as colunas com
valor desconhecido podem ser omitidas
➢ Neste caso, estas colunas são preenchidas com seu respectivo valor
padrão. Por exemplo:
INSERT INTO produtos (cod_prod, nome)
VALUES (1, 'Queijo');
INSERT INTO produtos VALUES (1, 'Queijo');

Pág. 5 De 39
SQL (Structured Query Language)
Inserção de Dados
➢ A segunda forma é uma extensão do PostgreSQL, que preenche as
colunas a partir da esquerda com quantos valores forem fornecidos, e as
demais com o valor padrão
➢ Para ficar mais claro, pode ser requisitado explicitamente o valor padrão
da coluna individualmente, ou para toda a linha:
INSERT INTO produtos (cod_prod, nome, preco) VALUES (1, 'Queijo',
DEFAULT);
INSERT INTO produtos DEFAULT VALUES;
➢ Dica: Para realizar "cargas volumosas", ou seja, inserir muitos dados,
consulte o comando COPY. Este comando não é tão flexível quanto o
comando INSERT, mas é mais eficiente.

Pág. 6 De 39
SQL (Structured Query Language)
Como funciona a consulta de dados?
➢ A consulta é realizada pelo comando SELECT
➢ A forma básica do SELECT é:
SELECT <lista de atributos>
FROM <lista de tabelas>
WHERE <condição>;
➢ <lista de atributos>: é uma lista de nomes de atributos cujos valores
devem ser recuperados pela consulta
➢ <lista de tabelas>: é uma lista dos nomes de relações (tabelas ou
visões) exigidos para processar a consulta
➢ <condição>: é uma expressão condicional (booleana) que identifica as
tuplas a serem recuperadas pela consulta

Pág. 7 De 39
SQL (Structured Query Language)
Exemplos de Consulta SELECT
➢ SELECT CODIGO, NOME FROM CLIENTES
➢ SELECT * FROM CLIENTES

Pág. 8 De 39
SQL (Structured Query Language)
E o asterisco?
➢ Especificar um asterisco (*)
✔ Recuperar todos os valores de atributo das tuplas selecionadas

Pág. 9 De 39
SQL (Structured Query Language)
E as condições?
➢ A cláusula WHERE permite ao comando SQL passar condições de
filtragem. Exemplos:
SELECT CODIGO, NOME FROM CLIENTES
WHERE CODIGO = 10;

SELECT CODIGO, NOME FROM CLIENTES


WHERE UF = ‘RS’;

SELECT CODIGO, NOME FROM CLIENTES


WHERE CODIGO >= 100 AND CODIGO <= 500

SELECT CODIGO, NOME FROM CLIENTES


WHERE UF = ‘RS’ OR UF = ‘SC’
Pág. 10 De 39
SQL (Structured Query Language)
Quais os operadores possíveis nas condições?
➢ Operadores de comparação lógicos
✔ =, <, <=, >, >= e <>
➢ Atributos de projeção
✔ Atributos cujos valores devem ser recuperados
➢ Condição de seleção
✔ Condição booleana que deve ser verdadeira para qualquer tupla
recuperada

Pág. 11 De 39
SQL (Structured Query Language)
Parênteses podem influenciar
➢ Os parênteses corretamente utilizados dão mais poder as consultas,
conforme exemplo abaixo:

SELECT CODIGO, NOME FROM CLIENTES


WHERE UF = ‘RS’ OR (UF = ‘SC’ AND ATIVO = ‘N’)

➢ Neste comando todos os clientes do Rio Grande do Sul e apenas os


clientes inativos de Santa Catarina seriam capturados

Pág. 12 De 39
SQL (Structured Query Language)
Parênteses podem influenciar
➢ Agora veja o exemplo a seguir:

SELECT CODIGO, NOME FROM CLIENTES


WHERE (ENDERECO IS NULL) OR (CIDADE IS NULL)

➢ Aqui, todos os clientes que não possuem endereço ou cidade cadastrada


serão selecionados

Pág. 13 De 39
SQL (Structured Query Language)
Pesquisa de Strings
➢ Para busca parcial de string, o SELECT fornece o operador LIKE. Veja o
exemplo abaixo:
SELECT CODIGO, NOME FROM CLIENTES
WHERE NOME LIKE ‘VIGARISTA%’
➢ Neste comando, todos os clientes cujos nomes iniciam com VIGARISTA
serão retornados. Se quisermos retornar os nomes que contenham
‘VIGARISTA’ também no meio, pode-se usar:
SELECT CODIGO, NOME FROM CLIENTES
WHERE NOME LIKE ‘%VIGARISTA%’
➢ O uso de máscara no início e no fim da string fornece maior poder de
busca, mas causa considerável perda de performance. Este recurso deve
ser utilizado com critério.

Pág. 14 De 39
SQL (Structured Query Language)
E as subcadeias e operadores aritméticos?
➢ Operador de comparação LIKE
✔ Usado para combinação de padrão de cadeia
✔ % substitui um número qualquer de zero ou mais caracteres
✔ Sublinhado (_) substitui um único caractere
➢ Operadores aritméticos padrão:
✔ Adição (+), subtração (–), multiplicação (*) e divisão (/)
➢ Operador de comparação BETWEEN

Pág. 15 De 39
SQL (Structured Query Language)
E ordenação dos resultados?
➢ Use a cláusula ORDER BY
✔ Palavra-chave DESC para ver o resultado em uma ordem decrescente
de valores
✔ Palavra-chave ASC para especificar a ordem crescente explicitamente
✔ ORDER BY D.Dnome DESC, F.Unome ASC, F.Pnome ASC

Pág. 16 De 39
SQL (Structured Query Language)
Como Ordenar uma Consulta?
➢ A ordenação pode ser definida com o comando ORDER BY
➢ Assim como no comando WHERE, o campo de ordenação não precisa
estar listado como campo de visualização. Veja o exemplo:

SELECT CODIGO, NOME FROM CLIENTES


ORDER BY NOME

SELECT CODIGO, NOME FROM CLIENTES


ORDER BY UF, NOME

Pág. 17 De 39
SQL (Structured Query Language)
Como Ordenar de modo Descendente?
➢ A utilização da palavra DESC garante a ordenação invertida:

SELECT CODIGO, NOME FROM CLIENTES


ORDER BY NOME DESC

SELECT CODIGO, NOME FROM CLIENTES


ORDER BY UF DESC

Pág. 18 De 39
SQL (Structured Query Language)
Como fazer Junção de tabelas?
➢ O SELECT permite juntar duas ou mais tabelas no mesmo resultado. Isso
pode ser feito de várias formas. Uma delas segue abaixo:

SELECT CLIENTES.CODIGO, CLIENTES.NOME,


PEDIDOS.DATA
FROM CLIENTES, PEDIDOS
WHERE CLIENTES.CODIGO = PEDIDOS.CODCLIENTE

➢ Nesta linha as tabelas relacionadas CLIENTES e PEDIDOS são unificadas


através do campo chave, em uma operação de igualdade.

Pág. 19 De 39
SQL (Structured Query Language)
Como fazer Junção de tabelas?
➢ Repare que os nomes dos campos passam a ser prefixados pelo nome
das tabelas, resolvendo duplicidades. Uma versão resumida desse
comando pode ser como abaixo:

SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR


FROM CLIENTES A, PEDIDOS B
WHERE A.CODIGO = B.CODCLIENTE

➢ O uso de aliases no código SQL torna a manutenção mais simples

Pág. 20 De 39
SQL (Structured Query Language)
Exemplo de Junção
➢ No comando abaixo temos várias tabelas unificadas em uma mesma
cláusula. Veja a Listagem 3.
SELECT A.CODIGO, A.NOME, B.DATA,
B.VALOR, C.QTD, D.DESCRICAO
FROM CLIENTES A, PEDIDOS B,
ITENS C, PRODUTOS D
WHERE A.CODIGO = B.CODCLIENTE
AND B.CODIGO = C.CODPEDIDO
AND C.CODPRODUTO = D.CODIGO

➢ Neste comando unificamos as tabelas relacionadas CLIENTES, PEDIDOS,


ITENS e PRODUTOS.

Pág. 21 De 39
SQL (Structured Query Language)
Outro Exemplo de Junção
SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR
FROM CLIENTES A, PEDIDOS B
WHERE A.CODIGO = B.CODCLIENTE0
AND A.UF = ‘RS’
➢ A junção através da igualdade de campos traz como resultado somente
os registros que possuem referências nas duas tabelas. Observe o
comando:
SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO
FROM PROUTOS A, COMPONENTES B
WHERE A.CODIGO = B.CODPRODUTO
➢ Os produtos que não possuem componentes não são selecionados, caso
seja necessário criar uma listagem incluindo também os registros que
não possuem correspondência, deve-se utilizar o comando JOIN.

Pág. 22 De 39
SQL (Structured Query Language)
Como trazer os dados de forma distinta?
➢ SQL não elimina automaticamente tuplas duplicadas nos resultados das
consultas
➢ Usa-se a palavra-chave DISTINCT na cláusula SELECT
✔ Apenas as tuplas distintas deverão permanecer no resultado

Pág. 23 De 39
SQL (Structured Query Language)
E as uniões e exceções?
➢ Operações de conjunto
• UNION, EXCEPT (diferença), INTERSECT
• Operações multiconjuntos correspondentes: UNION ALL, EXCEPT ALL,
INTERSECT ALL)
Criar uma lista de todos os
números de projeto para
aqueles que envolvam um
funcionário cujo último nome é
'Silva', seja como um
trabalhador ou como um
gerente de departamento que
controla o projeto.

Pág. 24 De 39
SQL (Structured Query Language)
Comando Join
➢ A junção de tabelas no comando SELECT também pode ser feita com o
comando JOIN
➢ Este comando deve ser utilizado com a palavra reservada INNER ou com
a palavra OUTER
➢ INNER: Semelhante ao uso do operador “=” na junção de tabelas. Aqui
os registros sem correspondências não são incluídos. Esta cláusula é
opcional e pode ser omitida no comando JOIN
➢ OUTER: Os registros que não se relacionam também são exibidos. Neste
caso, é possível definir qual tabela será incluída na seleção, mesmo não
tendo correspondência.

Pág. 25 De 39
SQL (Structured Query Language)
Exemplo Join
➢ Para exemplificar, temos as tabelas abaixo:
SELECT A.CODIGO, A.DESCRICAO,
B.DESCRICAO, B.QTD
FROM PRODUTOS A
INNER JOIN COMPONENTES B
ON (A.CODIGO = B.CODPRODUTO)
➢ Este comando pode ser escrito na versão resumida abaixo:
SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO
FROM PRODUTOS A
JOIN COMPONENTES B
ON (A.CODIGO = B.CODPRODUTO)

Pág. 26 De 39
SQL (Structured Query Language)
Exemplo Join
SELECT A.CODIGO, A.DESCRICAO,
B.DESCRICAO, B.QTDE
FROM PRODUTOS A
LEFT OUTER JOIN COMPONENTES B
ON (A.CODIGO = B.CODPRODUTO)
➢ Neste comando todos os produtos serão incluídos na seleção,
independente de possuírem um componente. Observe que a palavra
LEFT se refere à primeira tabela do relacionamento. Mesmo comando:
SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO
FROM COMPONENTES A
RIGHT OUTER JOIN PRODUTOS B
ON (A.CODIGO = B.CODPRODUTO)

Pág. 27 De 39
SQL (Structured Query Language)
Exemplo Join
➢ A ordem das tabelas foi invertida mas o resultado é o mesmo. Observe
mais alguns exemplos:
SELECT A.CODIGO, A.DESCRICAO,
B.DESCRICAO, B.QTDE
FROM PRODUTOS A
JOIN COMPONENTES B
ON (A.CODIGO = B.CODPRODUTO)
WHERE A.CATEGORIA = 1
➢ Outro exemplo:
SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO
FROM PRODUTOS A JOIN COMPONENTES B
ON (A.CODIGO = B.CODPRODUTO)
WHERE A.CATEGORIA = 1 OR A.CATEGORIA = 2
ORDER BY A.CATEGORIA, A.DESCRICAO
Pág. 28 De 39
SQL (Structured Query Language)
FULL OUTER JOIN
➢ Podemos ainda combinar o uso de INNER e OUTER através do comando
FULL OUTER JOIN
➢ Neste caso, todos os registros das duas tabelas envolvidas serão
exibidos, tendo ou não relacionamento

Pág. 29 De 39
SQL (Structured Query Language)
Atualização de dados
➢ A modificação dos dados armazenados no banco de dados é referida
como atualização
➢ Pode ser atualizada uma linha, todas as linhas, ou um subconjunto das
linhas da tabela
➢ Uma coluna pode ser atualizada separadamente e as outras colunas não
são afetadas
➢ Para realizar uma atualização são necessárias três informações:
✔ O nome da tabela e da coluna a ser atualizada;
✔ O novo valor para a coluna;
✔ Quais linhas serão atualizadas

Pág. 30 De 39
SQL (Structured Query Language)
Atualização de dados precisa de Chave Primária
➢ O SQL, de uma maneira geral, não fornece um identificador único para
as linhas
➢ Portanto, não é necessariamente possível especificar diretamente a
linha a ser atualizada
➢ Em vez disso, devem ser especificadas as condições que a linha deve
atender para ser atualizada
➢ Somente havendo uma chave primária na tabela (não importando se foi
declarada ou não), é possível endereçar uma linha específica com
confiança, escolhendo uma condição correspondendo à chave primária
➢ Ferramentas gráficas de acesso a banco de dados dependem da chave
primária para poderem atualizar as linhas individualmente

Pág. 31 De 39
SQL (Structured Query Language)
Atualização de dados
➢ Por exemplo, o comando mostrado abaixo atualiza todos os produtos
com preço igual a 5, mudando estes preços para 10:
UPDATE produtos SET preco = 10 WHERE preco = 5
➢ Este comando pode atualizar nenhuma, uma, ou muitas linhas. Não é
errado tentar uma atualização que não corresponda a nenhuma linha

Pág. 32 De 39
SQL (Structured Query Language)
Exemplo de Atualização de dados
➢ Por exemplo, se for desejado aumentar o preço de todos os produtos em
10% pode ser utilizado:

UPDATE produtos SET preco = preco * 1.10;

Pág. 33 De 39
SQL (Structured Query Language)
Atualização de dados - Where
➢ Como pode ser visto, a expressão para obter o novo valor pode fazer
referência ao valor antigo
➢ Também foi deixada de fora a cláusula WHERE
➢ Quando esta cláusula é omitida, significa que todas as linhas da tabela
serão atualizadas e, quando está presente, somente as linhas que
atendem à condição desta cláusula serão atualizadas
➢ Deve ser observado que o sinal de igual na cláusula SET é uma
atribuição, enquanto o sinal de igual na cláusula WHERE é uma
comparação, mas isto não cria uma ambiguidade
➢ A condição WHERE não é necessariamente um teste de igualdade, estão
disponíveis vários outros operadores, mas a expressão deve produzir um
resultado booleano

Pág. 34 De 39
SQL (Structured Query Language)
Atualização de dados
➢ Também pode ser atualizada mais de uma coluna pelo comando UPDATE,
colocando mais de uma atribuição na cláusula SET. Por exemplo:

UPDATE minha_tabela
SET a = 5, b = 3, c = 1
WHERE a > 0;

Pág. 35 De 39
SQL (Structured Query Language)
Exclusão de dados
➢ Assim como só é possível adicionar dados para toda uma linha, uma
linha também só pode ser removida por inteiro da tabela
➢ A remoção das linhas só pode ser feita especificando as condições que
as linhas a serem removidas devem atender
➢ Havendo uma chave primária na tabela, então é possível especificar
exatamente a linha
➢ Também pode ser removido um grupo de linhas atendendo a uma
determinada condição, ou podem ser removidas todas as linhas da
tabela de uma só vez

Pág. 36 De 39
SQL (Structured Query Language)
Exclusão de dados
➢ É utilizado o comando DELETE para remover linhas
➢ A sintaxe deste comando é muito semelhante a do comando UPDATE
➢ Por exemplo, para remover todas as linhas da tabela produtos possuindo
preço igual a 10:
DELETE FROM produtos WHERE preco = 10;

➢ Se for escrito simplesmente


DELETE FROM produtos;

➢ Então todas as linhas da tabela serão excluídas

Pág. 37 De 39
Pesquisa

➢ Ajude a melhorar esta disciplina e o nosso aprendizado respondendo


esta pesquisa:
http://bit.do/UniRitter-BancoDeDadosI

➢ São apenas três perguntas que irão tomar menos de um minuto do seu
tempo:

1. Qual a aula/conteúdo que estas avaliando?


2. Você indicaria esta aula/conteúdo para algum amigo? Escala Likert
(Não Indicaria – Indicaria)
3. O que poderia/deveria melhorar nesta aula/conteúdo? Resposta aberta

Pág. 38 De 39
SQL (Structured Query Language)
Lembre-se

“ Esforce-se para não ser um sucesso, mas sim


para ser valioso”

Albert
Einstein

Pág. 39 De 39

Você também pode gostar