Você está na página 1de 24

As Instruções DML

As Instruções de manipulação de dados(DML) em SQL são


representados por:

Modificam o estado do banco de dados:

o INSERT - permite a inclusão de novos registros (linhas) nas tabelas


o UPDATE - altera os valores de dados existentes
o DELETE - remove registros (linhas) existentes

Acessam (consultam) os dados:

o SELECT - usado para consultar o BD e retornar os dados de acordo


com a que satisfazem a determinada expressão.

1
A Instrução INSERT

Sintaxe:

2
A Instrução INSERT

Exemplos:
INSERT INTO ALUNO
(CPF, MATRICULA, NOME, GRAU_INSTRUCAO, IDADE)
VALUES ('023.999.999-99', '00000001','Beltrano de Tal','Primeiro Grau',15);

INSERT INTO DISCIPLINA (NOME, AREA) VALUES ('Português', 'Humanas');


A coluna ID não precisa ser incluída no INSERT , pois o BD
irá gerar um valor incremental para cada novo registro

INSERT INTO PROFESSOR (CPF, NOME, TEMPO_ENSINO, DISCIPLINA_ID)


VALUES ('123.999.999-99', 'Mário Sergio',6,7),
Inclusão de múltiplos registros em
('456.999.999-99', 'João da Silva',15,1); uma única instrução INSERT.

PROFESSOR_CPF, ALUNO_MATRICULA, NOTA, DATA


INSERT INTO AULA VALUES ('000.999.999-99', '00000001',8.5,'2015-02-01');

Se os valores estiverem exatamente na ordem em que as colunas foram criadas


na tabela, então não precisa informar a lista de colunas no INSERT 3
A Instrução UPDATE

Sintaxe: Define a coluna que se deseja alterar

UPDATE sua_tabela SET coluna = novovalor;

Nome da coluna Novo valor


que terá o valor
alterado
Exemplo:
Isto alteraria o valor da
UPDATE ALUNO SET IDADE = 13; coluna Idade de TODOS
os alunos para 13 anos.

Mas, como escolher qual/quais alunos desejo alterar ?

Incluindo a cláusula: WHERE (condição lógica)

UPDATE ALUNO SET IDADE = 13 WHERE CPF = '023.999.999-99‘ ;

Agora Sim, o update somente afetará os registros que satisfazem a


condição lógica, ou seja só alterará a coluna idade nos registros em que:
CPF = '023.999.999-99´ -> VERDADEIRO
10
A Instrução DELETE

Sintaxe:
DELETE FROM sua_tabela;
Exemplo:
Isto APAGARIA TODOS
os alunos da tabelas.
DELETE FROM ALUNO;

A cláusula WHERE também pode e deve ser utilizada com a instruções DELETE

Incluindo a cláusula: WHERE (condição lógica)

DELETE ALUNO WHERE IDADE > 25;

Isso excluiria da tabela apenas os alunos que


que tem idade maior que 25 anos

11
A cláusula WHERE (filtro)
A cláusula WHERE pode ser utilizada em conjunto com as instruções UPDATE, DELETE E SELECT
Essa condição segue o padrão das
Sintaxe: WHERE (condição lógica) linguagens de programação, assim todos
os operadores Relacionais e Lógicos
podem ser utilizados.

Exemplo:
DELETE ALUNO WHERE GRAU_INSTRUCAO = 'Primeiro Grau‘ AND IDADE < 20;

Isso excluiria da tabela apenas os alunos que


possuem o primeiro grau E tem idade menor que 20 anos (AS DUAS COISAS) 12
A cláusula WHERE (filtro)

Mais Exemplos: O filtro com a chave primária, garante que somente um registro será alterado.

UPDATE ALUNO SET IDADE = 13 WHERE CPF = '022.999.999-99‘ ;

F
V 13
Será
F alterado
de 17 pra
F 13

A comparação lógica é feita pelo SGBD para cada um dos registros


da tabela, para que somente sejam alterados os registros cujo
resultado logico seja verdadeiro.

7
A cláusula WHERE (filtro)

Mais Exemplos:

DELETE ALUNO WHERE GRAU_INSTRUCAO = 'Primeiro Grau‘ AND IDADE < 20;

V
F
F Registros
que serão
V excluídos

A comparação lógica é feita pelo SGBD para cada um dos registros


da tabela, para que somente sejam excluídos os registros cujo
resultado logico seja verdadeiro.

8
A Instrução SELECT
É melhor dar do que receber?

Quando se trata de Bancos de Dados, você precisará recuperar seus dados,


muito mais vezes do que inseri-lo na base.

Para isso há a poderosa instrução SELECT, que permite consultar as importantes


informações que foram inseridas em suas tabelas.

Sintaxe: Especifica as colunas separadas por virgula


Especifica a tabela que se
deseja recuperar os dados

SELECT colunas1, coluna2,... FROM sua_tabela

Este * é conhecido como o símbolo Coringa, ele indica que


TODAS AS COLUNAS devem ser retornadas na consulta SELECT

SELECT * FROM sua_tabela

9
A Instrução SELECT

Exemplos: SELECT * FROM DISCIPLINA

SELECT * FROM PROFESSOR

SELECT NOME, TEMPO_ENSINO FROM PROFESSOR


SELECT NOME FROM DISCIPLINA

10
A cláusula ORDER BY (Ordenação)
Ascendente / Descendente

Ordena o resultado de uma consulta, de acordo com a coluna escolhida.


SELECT * FROM DISCIPLINA ORDER BY ID ASC SELECT * FROM DISCIPLINA ORDER BY ID DESC

SELECT * FROM DISCIPLINA ORDER BY NOME SELECT * FROM DISCIPLINA ORDER BY AREA ASC, NOME DESC

ASC/DESC
Quando
omite-se
é Ascendente

11
A cláusula WHERE no SELECT
A Cláusula WHERE serve para ESCOLHER (FILTRAR) quais são os registros que queremos CONSULTAR (retornar)

SELECT * FROM DISCIPLINA

F
V
F SELECT * FROM DISCIPLINA WHERE (AREA = 'Exatas')
V
V
F
F Resultado do Filtro

SELECT NOME, SEXO FROM ALUNO

V
V SELECT NOME FROM ALUNO WHERE (NOME LIKE '%Tal‘)

F
F Resultado do Filtro

A comparação lógica é feita pelo SGBD para cada um dos registros da tabela, para que somente sejam
retornados os registros cujo resultado logico seja verdadeiro. 18
A cláusula WHERE no SELECT

SELECT CPF, NOME, SEXO, CIDADE FROM ALUNO

V
F
F
V
F

SELECT CPF, NOME, SEXO, CIDADE FROM ALUNO WHERE (SEXO = 'M' AND CIDADE = 'Olinda‘);

Resultado do Filtro:
Alunos Homens que moram em Olinda

13
Resumo:
Escolhendo Colunas e Registros
com SELECT... WHERE

SELECT * FROM ALUNO

SELECT CPF, NOME, CIDADE FROM ALUNO WHERE (SEXO = 'M' AND CIDADE = 'Olinda‘);
Escolha de 3 colunas Escolha de 2 registros (linhas)

14
RESUMO das Sintaxes DML

INSERT INTO nometabela (colunas)VALUES (valores);

UPDATE nometabelaSET coluna = valor

DELETE FROM nometabela

SELECT (colunas) FROM nometabela

WHERE (condições lógicas)

A Cláusula WHERE serve para ESCOLHER (FILTRAR) quais são os registros que
queremos ALTERAR, EXCLUIR ou CONSULTAR (retornar)
21
Funções de Agregação

Efetuam operações sobre um conjunto de registros, de acordo com as colunas e


filtro (where) desejados.

16
A cláusula JOIN (Junção de tabelas)

Exemplo:

17
A cláusula JOIN (Junção de tabelas)

SELECT professor.* , disciplina.*


FROM professor
JOIN disciplina ON ( professor.disciplina_id = disciplina.id )

COLUNAS DA TABELA
COLUNAS DA TABELA PROFESSOR DISCIPLINA

Esse JOIN retorna o TABELÃO acima, contedo todos os registros e colunas de


PROFESSOR, JUNTANDO com os todas as colunas de DISCIPLINA, MAS APENAS os
registros que tem relação com PROFESSOR
18
A cláusula JOIN (Junção de tabelas)
Mas, se ao invés de *, escolhermos apenas as colunas NOME das duas tabelas, teremos:

SELECT professor.nome, disciplina.nome


FROM professor
JOIN disciplina ON ( professor.disciplina_id = disciplina.id )

COLUNAS DA TABELA
COLUNAS DA TABELA PROFESSOR DISCIPLINA

Consulta Retornada

19
A cláusula JOIN (Junção de tabelas)
E agora, colocando Apelido para as colunas, teriamos:

SELECT professor.nome as professor


, disciplina.nome as disciplina
FROM professor
JOIN disciplina ON ( professor.disciplina_id = disciplina.id )

COLUNAS DA TABELA
COLUNAS DA TABELA PROFESSOR DISCIPLINA

Consulta Retornada

20
Alias de Tabelas (Apelidando tabelas)

É um apelido da tabela para você se referenciar ao especificar suas colunas.


É muito útil quando precisamos nos referir várias vezes a mesma tabela em uma
instrução SELECT juntamente com a instrução JOIN, ou quando o nome da tabela é muito
grande, e você não quer perder tempo digitando seu nome várias vezes

Exemplo sem Alias de tabela:


SELECTprofessor.nome as professor, disciplina.nome as disciplina
FROM professor
JOIN disciplina ON (disciplina.id = professor.disciplina_id)

Exemplo com Alias de tabela:


SELECT p.nome as professor, d.nome as disciplina
FROM professor p
JOIN disciplina d ON (d.id = p.disciplina_id)

33
RESUMO da Sintaxe
Instrução SELECT simples

As funções de Agregação:
SUM(), AVG(), COUNT(), MIN(), MAX(), DISTINCT()

SELECT (colunas, ou funções_agregação)


FROM nometabela

JOIN tabela ON (condição)


...
Cláusulas opcionais
WHERE (condições lógicas)

ORDER BY colunas ASC/DESC

22
RESUMO da Sintaxe
Instrução SELECT agrupado

SELECT colunasdoAgrupamento, função_agregação) FROM nometabela

JOIN tabela2 ON (condição)


...
WHERE (condições lógicas)

GROUP BY colunasdoAgrupamento

ORDER BY colunas ASC, DESC

As funções de Agregação:
SUM(), AVG(), COUNT(), MIN(), MAX(), DISTINCT

23
Exercícios

1. Exiba um a listagem, ordenada por nota da maior a menor, de todas as aulas


ocorridas no período de 2016-03-01 a 2016-03-30, contendo a colunas: data,
nome do aluno, nota, duracao e nome do professor.

2. Considerando a consulta agrupada da pag 26, inclua no resultado da consulta


duas novas colunas: nome do professor e área de formação.

3. A ONG precisa saber qual é o custo total da aulas dos alunos do sexo masculino.
Para isso mostre uma lista com nome do aluno (cada aluno apenas uma vez), o
total de aulas e o valor total, ordenado pelo total de aulas.

24