Comandos DML
13/11/2019 Prof. Rodrigo Saito 1
Utilizamos DML para efetuar inserção, alteração e
exclusão de dados nas tabelas de um banco de dados,
respectivamente através dos comandos INSERT, UPDATE
e DELETE. Alguns autores consideram que o comando de
consulta (SELECT) também faz parte da linguagem DML,
porém, como o SELECT possui uma grande extensão de
formas, a seleção dos dados é considerada outra
subdivisão, chamada DQL (Data Query Language).
INSERT
13/11/2019 Prof. Rodrigo Saito 2
O comando INSERT é utilizado para inserir registros nas
tabelas já definidas dos banco de dados. É considerado
um comando simples por não obter muitas formas de
utilizá-lo. Assim como o SELECT, é necessário sempre
especificar a tabela em que os dados deverão ser
inseridos;
Quando não especificados os campos que serão
inseridos os dados, o comando deve obedecer sempre a
sequencia de campos que a tabela foi criada
INSERT
13/11/2019 Prof. Rodrigo Saito 3
No SQL Server, quando o usuário não estiver no seu
SCHEMA padrão, também é necessário especificar o
SCHEMA antes da tabela a ser inserido o dado. Quando
especificadas as colunas, a ordem da inserção dos dados
deve ser a ordem da especificação dada;
Quando uma tabela não depende de outra
(relacionamento entre tabelas), é possível fazer a
inserção diretamente na tabela indicada pelo comando
INSERT. Caso não, é necessário respeitar a ordem de
dependência dos dados;
INSERT
13/11/2019 Prof. Rodrigo Saito 4
É necessário também sempre observar os tipos de dados
que serão inseridos na tabela, pois cada tipo de dado
possui formatos e especificações; (Campos datas no
formato mm/dd/aaaa entre aspas; campos do tipo
caractere, como char, varchar, nvarchar entre aspas,
tipos de campos numéricos sem aspas; campos com
casas decimais separadas por ponto (exemplo: 10.22,
334.98, 1254.09))
INSERT
13/11/2019 Prof. Rodrigo Saito 5
Em caso de dados que ultrapassem a quantidade de
caracteres suportadas dos campos, o SQL Server irá
retornar um erro, não completando a operação;
Em uma tabela com um dos campos IDENTITY ativo será
necessário especificar todos os campos, pois o IDENTITY
ativo não permitirá que o campos tenha um valor
imposto;
Em tabelas que estiverem especificações de campos NOT
NULL, o campo deverá ser respeitado;
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 6
Exemplo 1 – Comando de inserção em uma tabela,
especificando as colunas
INSERT INTO Funcionarios (Nome,
Sobrenome, Cargo)
VALUES ('Paulo','Braga','Estagiario')
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 7
Exemplo 2 – Inserindo na tabela de Funcionários todos
os dados retornados da SELECT
INSERT INTO Funcionarios
SELECT Estagiarios.*
FROM Estagiarios
WHERE DataDaContratacao <
GetDatete() – 30
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 8
Exemplo 3 – Inserindo dados linha a linha, com especificação de campos
USE MASTER
GO
-- criacao do banco de dados
CREATE DATABASE CORP_PEDIDOS ON PRIMARY
(
NAME = N'CORP_PEDIDOS',
FILENAME = N'C:TESTCORP_PEDIDOS.MDF',
SIZE = 4 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 2 MB
)
LOG ON
(
NAME = N'CORP_PEDIDOS_LOG',
FILENAME = N'C:TESTCORP_PEDIDOS_LOG.LDF',
SIZE = 2 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 2 MB
)
GO
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 9
--alterando a conexao para o banco de dados criado
use CORP_PEDIDOS
GO
--criação do schema
CREATE SCHEMA test AUTHORIZATION dbo
go
--criando tabelas
CREATE TABLE test.Cliente (
Cod_Cliente int not null,
Nome_Cliente varchar(30) not null,
UF char(02),
constraint pk_Cliente Primary Key(cod_Cliente)
)
go
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 10
--inserindo dados linha a linha, na ordem da tabela
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (6,'FERNANDA', 'SP')
GO
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (7,'MARINA', 'RJ')
GO
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (8,'EDUARDO', 'RJ')
GO
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (9,'SERGIO', 'RJ')
GO
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (10,'AMANDA', 'RJ')
GO
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 11
--inserindo dados linha a linha, na ordem especificada
insert into test.Cliente (UF, Nome_Cliente, Cod_Cliente)
values ('MG','FABIANA',11)
GO
insert into test.Cliente (UF, Nome_Cliente, Cod_Cliente)
values ('TO','ERICA',12)
GO
--inserindo dados linha a linha, excluindo alguns campos
(nesse exemplo, campo UF)
insert into test.Cliente (Cod_Cliente, Nome_Cliente)
values (13,'JESSICA')
GO
insert into test.Cliente (Cod_Cliente, Nome_Cliente)
values (14,'ADRIANA')
GO
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 12
--inserindo dados linha a linha, expecificando NULL nos
campos onde não haverá dados
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (15,'CRISTINA', NULL)
GO
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (16,'DANIELA', NULL)
GO
EXEMPLOS DE INSERT
13/11/2019 Prof. Rodrigo Saito 13
Exemplo 4 – Inserindo dados em lote (Somente a partir do SQL
Server 2008)
--inserindo dados na tabela de Cliente, EM LOTE
insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF)
values (17,'REGINA', 'AM'),
(18,'AMALIA', 'SP'),
(19,'FELIPE', 'PR'),
(20,'CLAUDIA','RJ'),
(21,'SIMONE', 'RO')
GO
DELETE
13/11/2019 Prof. Rodrigo Saito 14
O comando DELETE é utilizado para excluir registros nas
tabelas já definidas no banco de dados. Assim como o
SELECT, é necessário sempre especificar a tabela em que
os dados deverão ser excluídos;
O comando pode ser utilizado para excluir um registro
ou um conjunto de registros;
Não é obrigatório, mas sempre recomendado utilizar o
campos com a cláusula WHERE para exclusão dos
registros;
DELETE
13/11/2019 Prof. Rodrigo Saito 15
Quando não especificados cláusula WHERE, todos os
registros são excluídos da tabela, desde que não tenha
relacionamento com outras tabelas;
Pode-se utilizar todas as condições possíveis na cláusula
WHERE, praticamente igual a utilizada na cláusula
SELECT;
Não é necessário especificar os campos que serão
excluídos, pois o DELETE exclui registros das tabelas;
DELETE
13/11/2019 Prof. Rodrigo Saito 16
Também é possível utilizar na cláusula WHERE
condições envolvendo o comando SELECT (dependendo
do retorno do resultado do SELECT);
Temos os seguintes exemplos:
EXEMPLOS DE DELETE
13/11/2019 Prof. Rodrigo Saito 17
DELETE Pedidos.PaisDeDestino
FROM Pedidos
WHERE Pedidos.paisDeDestino = 'ALEMANHA'
Exemplo2: Utilização do DELETE utilizando condição
WHERE somente para países igual a ALEMANHA
DELETE
FROM Pedidos
WHERE Pedidos.paisDeDestino = 'ALEMANHA'
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 18
Exemplo3: Especificando um registro por chave primário (o mais indicado)
Criando a tabela de produtos, pedidos e Itens de pedidos para o teste
--visualizando os dados
select * from test.Cliente
--criando a tabela de produtos
CREATE TABLE test.Produto (
Cod_Prod int not null identity(1,1),
Desc_Prod varchar(30) not null,
Valor_Compra money,
Valor_Venda money,
Constraint pk_Produto Primary key(Cod_Prod),
Constraint ck_VrCompra Check (Valor_Compra > 0),
Constraint ck_VrVenda Check (Valor_Venda > Valor_Compra)
)
go
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 19
--inserindo dados na tabela de produtos
INSERT INTO test.Produto (Desc_Prod, Valor_Compra,
Valor_Venda)
values ('SABONETE', 1.50, 2.50),
('SABAO EM PO', 4.25, 5.80),
('TOMATE', 2.50, 4.50),
('DETERGENTE', 3.75, 6.80),
('TOALHA', 10.50, 15.40),
('ALCOOL EM GEL', 4.50, 6.50),
('ALFINETE', 0.25, 1.98)
GO
--visualizando os produtos
select * from test.Produto
go
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 20
--criando a tabela de pedidos
CREATE TABLE test.Pedido (
Cod_Pedido int not null identity(1,1),
Data_Pedido datetime not null constraint df_Data_Pedido
default getdate(),
Cod_Cliente int,
constraint pk_Pedido Primary key(cod_Pedido),
constraint ck_Data_Pedido Check (Data_Pedido >=
getdate()),
constraint fk_Pedido_Cliente Foreign Key(Cod_Cliente)
references test.Cliente(Cod_Cliente)
)
go
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 21
--inserindo dados na tabela de pedidos
insert into test.Pedido (Cod_cliente)
values (1),
(1),
(1),
(2),
(2),
(4),
(5),
(5)
GO
--visualizando os dados da tabela de pedido
select * from test.Pedido
go
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 22
--criando a tabela de itens de pedidos
CREATE TABLE test.Itens_Pedido (
Cod_Pedido int not null,
Item tinyint not null,
Cod_Prod integer,
Quantidade integer,
Valor_Venda money,
constraint pk_Itens_Pedido Primary key(Cod_Pedido,Item),
constraint fk_IP_Cod_Pedido Foreign Key(Cod_Pedido)
references test.Pedido(Cod_Pedido),
constraint fk_IP_Cod_Produto Foreign Key(Cod_Prod)
references test.Produto(Cod_Prod)
)
go
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 23
--visualizando os dados da tabela de itens de pedido
select * from test.Itens_Pedido
go
--visualizando os dados da tabela de itens de pedido
select * from test.Itens_Pedido
go
--tentativa de exclusao de um registro com relacionamento
select * from test.Produto
GO
DELETE FROM test.Produto WHERE Cod_Prod = 1
GO
--excluindo um registro com especificacao do campo chave
DELETE FROM test.Produto WHERE Cod_Prod = 13
GO
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 24
--tentantiva de exclusao de registros nao especificado
-- na cláusula where (todos os registros)
-- caso nao tenham relacionamento
DELETE FROM test.Produto
GO
--exclusao de registros utilizando condicionais
DELETE FROM test.Produto
WHERE Cod_Prod between 18 and 21
--exclusao de registro em uma tabela que tenha
--chave primária composta
SELECT * FROM test.Itens_Pedido
WHERE Cod_Pedido = 1
GO
EXEMPLO DE DELETE
13/11/2019 Prof. Rodrigo Saito 25
--excluindo 1 item
DELETE FROM test.Itens_Pedido
WHERE Cod_Pedido = 1 AND Item = 4
GO
--excluindo todos os itens de pedidos de um
--determinado pedido
DELETE FROM test.Itens_Pedido
WHERE Cod_Pedido = 2
GO
UPDATE
13/11/2019 Prof. Rodrigo Saito 26
O comando UPDATE é utilizado para atualizar registros
nas tabelas já definidas no banco de dados. Assim como
o SELECT, é necessário sempre especificar a tabela em
que os dados deverão ser atualizados;
O comando pode ser utilizado para excluir um registro
ou um conjunto de registros;
UPDATE
13/11/2019 Prof. Rodrigo Saito 27
Não é obrigatório, mas sempre recomendado
utilizar o campos com a cláusula WHERE para
atualização dos registros;
Quando não especificados cláusula WHERE,
todos os registros são atualizados da tabela,
desde que o dado não tenha relacionamento
com outras tabelas;
UPDATE
13/11/2019 Prof. Rodrigo Saito 28
Pode-se utilizar todas as condições possíveis na cláusula
WHERE, praticamente igual a utilizada na cláusula
SELECT;
Necessário especificar os campos que serão atualizados,
pois o UPDATE age nos campos dos registros;
Também é possível utilizar na cláusula WHERE
condições envolvendo o comando SELECT (dependendo
do retorno do resultado do SELECT);
UPDATE
13/11/2019 Prof. Rodrigo Saito 29
Cuidado ao atualizar faixas de valores em uma
tabela. Sempre que o UPDATE é aplicado, deve
atualizar a maior faixa para posteriormente
atualizar a menor faixa, para não correr o risco
de um mesmo registro ser atualizado 2 vezes (ou
mais);
Temos os seguintes exemplos:
UPDATE
13/11/2019 Prof. Rodrigo Saito 30
Exemplo1: Utilização do UPDATE com condição WHERE,
especificando a chave da tabela
UPDATE test.Cliente
SET Cidade = 'JUNDIAI'
WHERE Cod_Cliente = 1
GO
UPDATE
13/11/2019 Prof. Rodrigo Saito 31
Exemplo2: Utilização do UPDATE com condição WHERE,
especificando uma condição de um campo a ser
atualizado (não chave primária)
--atualizando registros na tabela, nao
especificando
--na clausula where o campo chave
SELECT * from test.Produto
WHERE Valor_Compra <= 1
UPDATE test.Produto
SET Valor_Venda = 5
WHERE Valor_Compra <= 1
UPDATE
13/11/2019 Prof. Rodrigo Saito 32
Exemplo3: Utilização do UPDATE com condição WHERE,
especificando faixas a serem aplicadas:
--atualizando faixas de valores
--exemplo: todos os produtos com valor de compra entre
-- 1 e 5 devem ter valor de venda reajustados 20%
-- todos os produtos com valor de compra entre
-- 6 e 15 devem ter valor de venda reajustados para 30%
--primeira atualizacao
select * from test.Produto
WHERE Valor_Compra between 6 AND 15
UPDATE test.Produto
SET Valor_Venda = Valor_Venda * 1.2
WHERE Valor_Compra between 6 AND 15
UPDATE
13/11/2019 Prof. Rodrigo Saito 33
Exemplo3: Utilização do UPDATE com condição WHERE,
especificando faixas a serem aplicadas:
--segunda atualizacao
select * from test.Produto
WHERE Valor_Compra between 1 AND 5
GO
UPDATE test.Produto
SET Valor_Venda = Valor_Venda * 1.10
WHERE Valor_Compra between 1 AND 5
UPDATE
13/11/2019 Prof. Rodrigo Saito 34
Exemplo 4: Utilização do UPDATE sem condição WHERE
(atualização de todas as linhas da tabela)
--atualizando um campo sem condicao where
select * from test.Cliente
GO
UPDATE test.Cliente SET Cidade = 'DOURADOS'
TRUNCATE
13/11/2019 Prof. Rodrigo Saito 35
A instrução TRUNCATE deleta todos os registros de uma tabela
alvo.
Não é possível fazer filtros como a instrução truncate.
Truncate tende a ser substancialmente mais rápido, pois não
armazena no log de transação no log de transações comparado ao
comando Delete.
Truncate requer permissão de ALTER para ser executado em uma
tabela;
A sintaxe do comando Truncate é:
TRUNCATE TABLE <Schema>.<Tabela>

BD I - Aula 15 A - Comandos DML

  • 1.
    Comandos DML 13/11/2019 Prof.Rodrigo Saito 1 Utilizamos DML para efetuar inserção, alteração e exclusão de dados nas tabelas de um banco de dados, respectivamente através dos comandos INSERT, UPDATE e DELETE. Alguns autores consideram que o comando de consulta (SELECT) também faz parte da linguagem DML, porém, como o SELECT possui uma grande extensão de formas, a seleção dos dados é considerada outra subdivisão, chamada DQL (Data Query Language).
  • 2.
    INSERT 13/11/2019 Prof. RodrigoSaito 2 O comando INSERT é utilizado para inserir registros nas tabelas já definidas dos banco de dados. É considerado um comando simples por não obter muitas formas de utilizá-lo. Assim como o SELECT, é necessário sempre especificar a tabela em que os dados deverão ser inseridos; Quando não especificados os campos que serão inseridos os dados, o comando deve obedecer sempre a sequencia de campos que a tabela foi criada
  • 3.
    INSERT 13/11/2019 Prof. RodrigoSaito 3 No SQL Server, quando o usuário não estiver no seu SCHEMA padrão, também é necessário especificar o SCHEMA antes da tabela a ser inserido o dado. Quando especificadas as colunas, a ordem da inserção dos dados deve ser a ordem da especificação dada; Quando uma tabela não depende de outra (relacionamento entre tabelas), é possível fazer a inserção diretamente na tabela indicada pelo comando INSERT. Caso não, é necessário respeitar a ordem de dependência dos dados;
  • 4.
    INSERT 13/11/2019 Prof. RodrigoSaito 4 É necessário também sempre observar os tipos de dados que serão inseridos na tabela, pois cada tipo de dado possui formatos e especificações; (Campos datas no formato mm/dd/aaaa entre aspas; campos do tipo caractere, como char, varchar, nvarchar entre aspas, tipos de campos numéricos sem aspas; campos com casas decimais separadas por ponto (exemplo: 10.22, 334.98, 1254.09))
  • 5.
    INSERT 13/11/2019 Prof. RodrigoSaito 5 Em caso de dados que ultrapassem a quantidade de caracteres suportadas dos campos, o SQL Server irá retornar um erro, não completando a operação; Em uma tabela com um dos campos IDENTITY ativo será necessário especificar todos os campos, pois o IDENTITY ativo não permitirá que o campos tenha um valor imposto; Em tabelas que estiverem especificações de campos NOT NULL, o campo deverá ser respeitado;
  • 6.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 6 Exemplo 1 – Comando de inserção em uma tabela, especificando as colunas INSERT INTO Funcionarios (Nome, Sobrenome, Cargo) VALUES ('Paulo','Braga','Estagiario')
  • 7.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 7 Exemplo 2 – Inserindo na tabela de Funcionários todos os dados retornados da SELECT INSERT INTO Funcionarios SELECT Estagiarios.* FROM Estagiarios WHERE DataDaContratacao < GetDatete() – 30
  • 8.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 8 Exemplo 3 – Inserindo dados linha a linha, com especificação de campos USE MASTER GO -- criacao do banco de dados CREATE DATABASE CORP_PEDIDOS ON PRIMARY ( NAME = N'CORP_PEDIDOS', FILENAME = N'C:TESTCORP_PEDIDOS.MDF', SIZE = 4 MB, MAXSIZE = 10 MB, FILEGROWTH = 2 MB ) LOG ON ( NAME = N'CORP_PEDIDOS_LOG', FILENAME = N'C:TESTCORP_PEDIDOS_LOG.LDF', SIZE = 2 MB, MAXSIZE = 10 MB, FILEGROWTH = 2 MB ) GO
  • 9.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 9 --alterando a conexao para o banco de dados criado use CORP_PEDIDOS GO --criação do schema CREATE SCHEMA test AUTHORIZATION dbo go --criando tabelas CREATE TABLE test.Cliente ( Cod_Cliente int not null, Nome_Cliente varchar(30) not null, UF char(02), constraint pk_Cliente Primary Key(cod_Cliente) ) go
  • 10.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 10 --inserindo dados linha a linha, na ordem da tabela insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (6,'FERNANDA', 'SP') GO insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (7,'MARINA', 'RJ') GO insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (8,'EDUARDO', 'RJ') GO insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (9,'SERGIO', 'RJ') GO insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (10,'AMANDA', 'RJ') GO
  • 11.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 11 --inserindo dados linha a linha, na ordem especificada insert into test.Cliente (UF, Nome_Cliente, Cod_Cliente) values ('MG','FABIANA',11) GO insert into test.Cliente (UF, Nome_Cliente, Cod_Cliente) values ('TO','ERICA',12) GO --inserindo dados linha a linha, excluindo alguns campos (nesse exemplo, campo UF) insert into test.Cliente (Cod_Cliente, Nome_Cliente) values (13,'JESSICA') GO insert into test.Cliente (Cod_Cliente, Nome_Cliente) values (14,'ADRIANA') GO
  • 12.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 12 --inserindo dados linha a linha, expecificando NULL nos campos onde não haverá dados insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (15,'CRISTINA', NULL) GO insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (16,'DANIELA', NULL) GO
  • 13.
    EXEMPLOS DE INSERT 13/11/2019Prof. Rodrigo Saito 13 Exemplo 4 – Inserindo dados em lote (Somente a partir do SQL Server 2008) --inserindo dados na tabela de Cliente, EM LOTE insert into test.Cliente (Cod_Cliente, Nome_Cliente, UF) values (17,'REGINA', 'AM'), (18,'AMALIA', 'SP'), (19,'FELIPE', 'PR'), (20,'CLAUDIA','RJ'), (21,'SIMONE', 'RO') GO
  • 14.
    DELETE 13/11/2019 Prof. RodrigoSaito 14 O comando DELETE é utilizado para excluir registros nas tabelas já definidas no banco de dados. Assim como o SELECT, é necessário sempre especificar a tabela em que os dados deverão ser excluídos; O comando pode ser utilizado para excluir um registro ou um conjunto de registros; Não é obrigatório, mas sempre recomendado utilizar o campos com a cláusula WHERE para exclusão dos registros;
  • 15.
    DELETE 13/11/2019 Prof. RodrigoSaito 15 Quando não especificados cláusula WHERE, todos os registros são excluídos da tabela, desde que não tenha relacionamento com outras tabelas; Pode-se utilizar todas as condições possíveis na cláusula WHERE, praticamente igual a utilizada na cláusula SELECT; Não é necessário especificar os campos que serão excluídos, pois o DELETE exclui registros das tabelas;
  • 16.
    DELETE 13/11/2019 Prof. RodrigoSaito 16 Também é possível utilizar na cláusula WHERE condições envolvendo o comando SELECT (dependendo do retorno do resultado do SELECT); Temos os seguintes exemplos:
  • 17.
    EXEMPLOS DE DELETE 13/11/2019Prof. Rodrigo Saito 17 DELETE Pedidos.PaisDeDestino FROM Pedidos WHERE Pedidos.paisDeDestino = 'ALEMANHA' Exemplo2: Utilização do DELETE utilizando condição WHERE somente para países igual a ALEMANHA DELETE FROM Pedidos WHERE Pedidos.paisDeDestino = 'ALEMANHA'
  • 18.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 18 Exemplo3: Especificando um registro por chave primário (o mais indicado) Criando a tabela de produtos, pedidos e Itens de pedidos para o teste --visualizando os dados select * from test.Cliente --criando a tabela de produtos CREATE TABLE test.Produto ( Cod_Prod int not null identity(1,1), Desc_Prod varchar(30) not null, Valor_Compra money, Valor_Venda money, Constraint pk_Produto Primary key(Cod_Prod), Constraint ck_VrCompra Check (Valor_Compra > 0), Constraint ck_VrVenda Check (Valor_Venda > Valor_Compra) ) go
  • 19.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 19 --inserindo dados na tabela de produtos INSERT INTO test.Produto (Desc_Prod, Valor_Compra, Valor_Venda) values ('SABONETE', 1.50, 2.50), ('SABAO EM PO', 4.25, 5.80), ('TOMATE', 2.50, 4.50), ('DETERGENTE', 3.75, 6.80), ('TOALHA', 10.50, 15.40), ('ALCOOL EM GEL', 4.50, 6.50), ('ALFINETE', 0.25, 1.98) GO --visualizando os produtos select * from test.Produto go
  • 20.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 20 --criando a tabela de pedidos CREATE TABLE test.Pedido ( Cod_Pedido int not null identity(1,1), Data_Pedido datetime not null constraint df_Data_Pedido default getdate(), Cod_Cliente int, constraint pk_Pedido Primary key(cod_Pedido), constraint ck_Data_Pedido Check (Data_Pedido >= getdate()), constraint fk_Pedido_Cliente Foreign Key(Cod_Cliente) references test.Cliente(Cod_Cliente) ) go
  • 21.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 21 --inserindo dados na tabela de pedidos insert into test.Pedido (Cod_cliente) values (1), (1), (1), (2), (2), (4), (5), (5) GO --visualizando os dados da tabela de pedido select * from test.Pedido go
  • 22.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 22 --criando a tabela de itens de pedidos CREATE TABLE test.Itens_Pedido ( Cod_Pedido int not null, Item tinyint not null, Cod_Prod integer, Quantidade integer, Valor_Venda money, constraint pk_Itens_Pedido Primary key(Cod_Pedido,Item), constraint fk_IP_Cod_Pedido Foreign Key(Cod_Pedido) references test.Pedido(Cod_Pedido), constraint fk_IP_Cod_Produto Foreign Key(Cod_Prod) references test.Produto(Cod_Prod) ) go
  • 23.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 23 --visualizando os dados da tabela de itens de pedido select * from test.Itens_Pedido go --visualizando os dados da tabela de itens de pedido select * from test.Itens_Pedido go --tentativa de exclusao de um registro com relacionamento select * from test.Produto GO DELETE FROM test.Produto WHERE Cod_Prod = 1 GO --excluindo um registro com especificacao do campo chave DELETE FROM test.Produto WHERE Cod_Prod = 13 GO
  • 24.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 24 --tentantiva de exclusao de registros nao especificado -- na cláusula where (todos os registros) -- caso nao tenham relacionamento DELETE FROM test.Produto GO --exclusao de registros utilizando condicionais DELETE FROM test.Produto WHERE Cod_Prod between 18 and 21 --exclusao de registro em uma tabela que tenha --chave primária composta SELECT * FROM test.Itens_Pedido WHERE Cod_Pedido = 1 GO
  • 25.
    EXEMPLO DE DELETE 13/11/2019Prof. Rodrigo Saito 25 --excluindo 1 item DELETE FROM test.Itens_Pedido WHERE Cod_Pedido = 1 AND Item = 4 GO --excluindo todos os itens de pedidos de um --determinado pedido DELETE FROM test.Itens_Pedido WHERE Cod_Pedido = 2 GO
  • 26.
    UPDATE 13/11/2019 Prof. RodrigoSaito 26 O comando UPDATE é utilizado para atualizar registros nas tabelas já definidas no banco de dados. Assim como o SELECT, é necessário sempre especificar a tabela em que os dados deverão ser atualizados; O comando pode ser utilizado para excluir um registro ou um conjunto de registros;
  • 27.
    UPDATE 13/11/2019 Prof. RodrigoSaito 27 Não é obrigatório, mas sempre recomendado utilizar o campos com a cláusula WHERE para atualização dos registros; Quando não especificados cláusula WHERE, todos os registros são atualizados da tabela, desde que o dado não tenha relacionamento com outras tabelas;
  • 28.
    UPDATE 13/11/2019 Prof. RodrigoSaito 28 Pode-se utilizar todas as condições possíveis na cláusula WHERE, praticamente igual a utilizada na cláusula SELECT; Necessário especificar os campos que serão atualizados, pois o UPDATE age nos campos dos registros; Também é possível utilizar na cláusula WHERE condições envolvendo o comando SELECT (dependendo do retorno do resultado do SELECT);
  • 29.
    UPDATE 13/11/2019 Prof. RodrigoSaito 29 Cuidado ao atualizar faixas de valores em uma tabela. Sempre que o UPDATE é aplicado, deve atualizar a maior faixa para posteriormente atualizar a menor faixa, para não correr o risco de um mesmo registro ser atualizado 2 vezes (ou mais); Temos os seguintes exemplos:
  • 30.
    UPDATE 13/11/2019 Prof. RodrigoSaito 30 Exemplo1: Utilização do UPDATE com condição WHERE, especificando a chave da tabela UPDATE test.Cliente SET Cidade = 'JUNDIAI' WHERE Cod_Cliente = 1 GO
  • 31.
    UPDATE 13/11/2019 Prof. RodrigoSaito 31 Exemplo2: Utilização do UPDATE com condição WHERE, especificando uma condição de um campo a ser atualizado (não chave primária) --atualizando registros na tabela, nao especificando --na clausula where o campo chave SELECT * from test.Produto WHERE Valor_Compra <= 1 UPDATE test.Produto SET Valor_Venda = 5 WHERE Valor_Compra <= 1
  • 32.
    UPDATE 13/11/2019 Prof. RodrigoSaito 32 Exemplo3: Utilização do UPDATE com condição WHERE, especificando faixas a serem aplicadas: --atualizando faixas de valores --exemplo: todos os produtos com valor de compra entre -- 1 e 5 devem ter valor de venda reajustados 20% -- todos os produtos com valor de compra entre -- 6 e 15 devem ter valor de venda reajustados para 30% --primeira atualizacao select * from test.Produto WHERE Valor_Compra between 6 AND 15 UPDATE test.Produto SET Valor_Venda = Valor_Venda * 1.2 WHERE Valor_Compra between 6 AND 15
  • 33.
    UPDATE 13/11/2019 Prof. RodrigoSaito 33 Exemplo3: Utilização do UPDATE com condição WHERE, especificando faixas a serem aplicadas: --segunda atualizacao select * from test.Produto WHERE Valor_Compra between 1 AND 5 GO UPDATE test.Produto SET Valor_Venda = Valor_Venda * 1.10 WHERE Valor_Compra between 1 AND 5
  • 34.
    UPDATE 13/11/2019 Prof. RodrigoSaito 34 Exemplo 4: Utilização do UPDATE sem condição WHERE (atualização de todas as linhas da tabela) --atualizando um campo sem condicao where select * from test.Cliente GO UPDATE test.Cliente SET Cidade = 'DOURADOS'
  • 35.
    TRUNCATE 13/11/2019 Prof. RodrigoSaito 35 A instrução TRUNCATE deleta todos os registros de uma tabela alvo. Não é possível fazer filtros como a instrução truncate. Truncate tende a ser substancialmente mais rápido, pois não armazena no log de transação no log de transações comparado ao comando Delete. Truncate requer permissão de ALTER para ser executado em uma tabela; A sintaxe do comando Truncate é: TRUNCATE TABLE <Schema>.<Tabela>