SQL_2017 1_manipulando_dados
36 pág.

SQL_2017 1_manipulando_dados


DisciplinaBanco de Dados I5.941 materiais57.375 seguidores
Pré-visualização2 páginas
PÓS-GRADUAÇÃOPÓS-GRADUAÇÃO
Manipulação de Dados
Criado em junho de 2017 Docente: Gil Jader \u2013 gil.jader@gmail.com
Disciplina: Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
\u2022 Aprender a usar as seguintes instruções:
Adiciona uma nova linha à tabelaINSERT
Modifica as linhas existentes da tabelaUPDATE
Remove as linhas existentes da tabelaDELETE
Torna permanentes todas as alterações pendentesCOMMIT
Descarta todas as alterações de dados pendentesROLLBACK
Usada para efetuar rollback até o marcador de ponto de 
salvamento
SAVEPOINT
DescriçãoFunction
Objetivos
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Adicionando uma Nova Linha a uma Tabela
DEPARTMENTS
Nova 
linha
Insira uma nova
linha na tabela 
DEPARTMENTS
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Sintaxe da Instrução INSERT
\uf097 Adicione novas linhas a uma tabela usando a instrução 
INSERT:
\uf097 Com esta sintaxe, apenas uma linha é inserida
por vez.
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Inserindo Novas Linhas
\uf097 Insira uma nova linha com valores para cada
coluna.
\uf097 Liste os valores na ordem default das colunas na
tabela. 
\uf097 Delimite os valores de caractere e data com aspas
simples.
INSERT INTO departments(department_id, 
department_name, manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
\uf097 Método implícito: omita a coluna da lista de colunas.
\uf097 Método explícito: especifique a palavra-chave NULL na 
cláusula VALUES.
INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);
1 row created.
INSERT INTO departments (department_id, 
department_name )
VALUES (30, 'Purchasing');
1 row created.
Inserindo Linhas com Valores Nulos
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Erros comuns que podem ocorrer : 
Docente: Gil Jader \u2013 gil.jader@gmail.com
\u2022 Valor obrigatório ausente para uma coluna NOT NULL
\u2022 Constraint de exclusividade violada por valor duplicado
\u2022 Constraint de chave estrangeira violada
\u2022 Incompatibilidade de tipo de dados
\u2022 Valor muito extenso para caber na coluna
PÓS-GRADUAÇÃO
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', 
SYSDATE, 'AC_ACCOUNT', 6900, 
NULL, 205, 100);
1 row created.
Inserindo Valores Especiais
\uf097 A function SYSDATE registra a data e o horário atuais.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Inserindo Valores de Data Específicos
\u2013 Adicione um novo funcionário.
\u2013 Verifique a adição.
INSERT INTO employees
VALUES (114, 
'Den', 'Raphealy', 
'DRAPHEAL', '515.127.4561',
TO_DATE('FEB 3, 1999', 'MON DD, YYYY'),
'AC_ACCOUNT', 11000, NULL, 100, 30);
1 row created.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
INSERT INTO departments 
(department_id, department_name, location_id)
VALUES (&department_id, '&department_name',&location);
Criando um Script 
\uf097 Use a variável de substituição & em uma instrução SQL 
para solicitar valores.
\uf097 & é um marcador de espaço para o valor da variável.
1 row created.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Copiando Linhas de Outra Tabela
\uf097 Crie a instrução INSERT com uma subconsulta:
\uf097
\uf097 Não use a cláusula VALUES.
\uf097 Estabeleça uma correspondência entre o número de 
colunas na cláusula INSERT e o número de colunas na
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.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Alterando os Dados de uma Tabela
EMPLOYEES
Atualize as linhas da tabela EMPLOYEES:
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Sintaxe da Instrução UPDATE
\uf097 Modifique as linhas existentes com a instrução 
UPDATE:
\uf097
\uf097 Atualize mais de uma linha por vez (se necessário).
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Atualizando Linhas em uma Tabela
\uf097 Uma ou mais linhas específicas são modificadas
quando a cláusula WHERE é especificada:
\uf097 Se você omitir a cláusula WHERE, todas as linhas da 
tabela serão modificadas:
UPDATE employees
SET department_id = 70
WHERE employee_id = 113;
1 row updated.
UPDATE copy_emp
SET department_id = 110;
22 rows updated.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
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.
Como fazer esta instrução SQL?
\uf097 Atualize o cargo e o salário do funcionário 114 para que 
correspondam aos do funcionário 205.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
UPDATE copy_emp
SET department_id = (SELECT department_id
FROM employees
WHERE employee_id = 100)
WHERE job_id = (SELECT job_id
FROM employees
WHERE employee_id = 200);
1 row updated.
Atualizando Linhas com Base em Outra Tabela
\uf097 Use subconsultas em instruções UPDATE para atualizar as 
linhas de uma tabela com base nos valores de outra tabela:
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Delete uma linha da tabela DEPARTMENTS:
Removendo uma Linha de uma Tabela
DEPARTMENTS
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Instrução DELETE
\uf097 É possível remover as linhas existentes de uma tabela com a 
instrução DELETE:
DELETE [FROM] table
[WHERE condition];
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Deletando Linhas de uma Tabela
\uf097 Se você usar a cláusula WHERE, as linhas específicas 
serão deletadas:
\uf097 Se você omitir a cláusula WHERE, todas as linhas da 
tabela serão deletadas:
DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.
DELETE FROM copy_emp;
22 rows deleted.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Deletando Linhas com Base em Outra Tabela
\uf097 Use subconsultas em instruções DELETE para remover linhas 
de uma tabela com base nos valores de outra tabela:
DELETE FROM employees
WHERE department_id =
(SELECT department_id
FROM departments
WHERE department_name 
LIKE '%Public%');
1 row deleted.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Instrução TRUNCATE
\uf097 Remove todas as linhas de uma tabela, esvaziando 
a tabela e mantendo a estrutura intacta
\uf097 É uma instrução DDL (Data Definition Language), e 
não DML; não pode ser desfeita facilmente
\uf097 Sintaxe:
\uf097 Exemplo:
TRUNCATE TABLE table_name;
TRUNCATE TABLE copy_emp;
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Usando uma Subconsulta
em uma Instrução INSERT
INSERT INTO
(SELECT employee_id, last_name,
email, hire_date, job_id, salary, 
department_id
FROM employees
WHERE department_id = 50) 
VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-JUN-99', 'DD-MON-RR'),
'ST_CLERK', 5000, 50);
1 row created.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Usando uma Subconsulta em uma Instrução
INSERT
\u2022 Verifique os resultados:
SELECT employee_id, last_name, email, hire_date, 
job_id, salary, department_id
FROM employees
WHERE department_id = 50;
Docente: