Você está na página 1de 12

LPBD / EBD

Manipulando Dados e Transações

Data Manipulation Language

• Uma instrução DML é executada quando você:


– Adiciona novas linhas a uma tabela
– Modifica as linhas existentes de uma tabela
– Remove as linhas existentes de uma tabela

1
Adicionando uma Nova Linha a uma Tabela
Nova
DEPARTMENTS linha

Insira uma nova


linha na tabela
DEPARTMENTS

Sintaxe da Instrução INSERT

• Adicione novas linhas a uma tabela usando a


instrução INSERT:

INSERT INTO table [(column [, column...])]


VALUES (value [, value...]);

• Com esta sintaxe, apenas uma linha é inserida


por vez.

2
Inserindo Novas Linhas

• Insira uma nova linha com valores para cada coluna.


• Liste os valores na ordem default das colunas na
tabela.
• Como alternativa, liste as colunas na cláusula
INSERT.
INSERT INTO departments(department_id,
department_name, manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.

• Delimite os valores de caractere e data com aspas


simples.

Inserindo Linhas com Valores Nulos

• Método implícito: omita a coluna da lista de colunas.


INSERT INTO departments (department_id,
department_name )
VALUES (30, 'Purchasing');
1 row created.

• Método explícito: especifique a palavra-chave NULL


na cláusula VALUES.
INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);
1 row created.

3
Inserindo Valores Especiais

A function CURDATE registra a data atual.

INSERT INTO employees (employee_id,


first_name, last_name,
email, phone_number,
hire_date, job_id, salary,
commission_pct, manager_id,
department_id)
VALUES (113,
'Louis', 'Popp',
'LPOPP', '515.124.4567',
CURDATE(), 'AC_ACCOUNT', 6900,
NULL, 205, 100);
1 row created.

Copiando Linhas de Outra Tabela

• Crie a instrução INSERT com uma subconsulta:


INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';

4 rows created.

• Não use a cláusula VALUES.


• Estabeleça uma correspondência entre o número de
colunas na cláusula INSERT e o número de colunas
na subconsulta.

4
Alterando os Dados de uma Tabela

EMPLOYEES

Atualize as linhas da tabela EMPLOYEES:

Sintaxe da Instrução UPDATE

• Modifique as linhas existentes com a instrução


UPDATE:
•UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];

• Atualize mais de uma linha por vez (se necessário).

5
Atualizando Linhas em uma Tabela

• Uma ou mais linhas específicas são modificadas


quando a cláusula WHERE é especificada:
UPDATE employees
SET department_id = 70
WHERE employee_id = 113;
1 row updated.

• Se você omitir a cláusula WHERE, todas as linhas da


tabela serão modificadas:
UPDATE copy_emp
SET department_id = 110;
22 rows updated.

Atualizando Duas Colunas


com uma Subconsulta

Atualize o cargo e o salário do funcionário 114 para que


correspondam aos do funcionário 205.
UPDATE employees
SET job_id = (SELECT job_id
FROM employees
WHERE employee_id = 205),
salary = (SELECT salary
FROM employees
WHERE employee_id = 205)
WHERE employee_id = 114;
1 row updated.

6
Removendo uma Linha de uma Tabela

DEPARTMENTS

Delete uma linha da tabela DEPARTMENTS:

Instrução DELETE

É possível remover as linhas existentes de uma tabela


com a instrução DELETE:

DELETE [FROM] table


[WHERE condition];

7
Deletando Linhas de uma Tabela

• Se você usar a cláusula WHERE, as linhas específicas


serão deletadas:
DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.

• Se você omitir a cláusula WHERE, todas as linhas da


tabela serão deletadas:
DELETE FROM copy_emp;
22 rows deleted.

Instrução TRUNCATE

• Remove todas as linhas de uma tabela, esvaziando a


tabela e mantendo a estrutura intacta
• É uma instrução DDL (Data Definition Language), e
não DML; não pode ser desfeita facilmente.
• Sintaxe:

TRUNCATE TABLE table_name;

• Exemplo:

TRUNCATE TABLE copy_emp;

8
Transações de Banco de Dados

• Começam quando a primeira instrução SQL DML é


executada
• Terminam com um destes eventos:
– Uma instrução COMMIT ou ROLLBACK é executada.
– Uma instrução DDL é executada (COMMIT automático).
– O usuário sai do SGBD.
– Ocorre uma falha do sistema.

Processamento de Transação Implícita

• Um commit automático ocorre nas seguintes


circunstâncias:
– Uma instrução DDL é executada
– Saída normal do SGBD, sem a execução implícita de
instruções COMMIT ou ROLLBACK
• Um rollback automático ocorre em decorrência do
encerramento anormal do SGBD ou de uma falha do
sistema.

• O MySQL TRABALHA COM O COMMIT AUTOMÁTICO


(AUTOCOMMIT).
– Para desativar esta função:
mysql>SET autocommit = 0;

9
Submetendo Dados a Commit

• Efetue as alterações:
DELETE FROM employees
WHERE employee_id = 99999;
1 row deleted.

INSERT INTO departments


VALUES (290, 'Corporate Tax', NULL, 1700);
1 row created.

• Submeta as alterações a commit:


COMMIT;
Commit complete.

Exemplo
Remova os departamentos 290 e 300 da tabela DEPARTMENTS e
atualize uma linha da tabela EMPLOYEES. Torne a alteração de
dados permanente.
DELETE FROM departments
WHERE department_id IN (290, 300);
1 row deleted.

UPDATE employees
SET department_id = 80
WHERE employee_id = 206;
1 row updated.

COMMIT;
Commit Complete.

10
Instrução ROLLBACK

Descarta todas as alterações pendentes (DML’s –


INSERT, UPDATE e DELETE)
• As alterações de dados são desfeitas.
• O estado anterior dos dados é restaurado.

DELETE FROM copy_emp;


22 rows deleted.
ROLLBACK ;
Rollback complete.

Exemplo:
Ao tentar remover um registro da tabela TEST, você poderá esvaziar a
tabela acidentalmente. É possível corrigir o erro, reexecutar a instrução
correta e tornar a alteração de dados permanente.

DELETE FROM test;


25,000 rows deleted.
ROLLBACK;
Rollback complete.
DELETE FROM test WHERE id = 100;
1 row deleted.
SELECT * FROM test WHERE id = 100;
No rows selected.
COMMIT;
Commit complete.

11
RESUMO:

Function Descrição
INSERT Adiciona uma nova linha à tabela
UPDATE Modifica as linhas existentes da tabela
DELETE Remove as linhas existentes da tabela
COMMIT Torna permanentes todas as alterações pendentes
ROLLBACK Descarta todas as alterações de dados pendentes

12

Você também pode gostar