ATUALIZAÇÃO SQL
A instrução SQL UPDATE é utilizada para atualizar e modificar os registros presentes em um banco de dados . É utilizado para alterar os registros já existentes armazenados nas tabelas do banco de dados. Este comando é trabalhado junto com WHERE cláusula. A condição especificada na instrução UPDATE é usada para decidir quais colunas ou linhas da tabela serão afetadas ou modificadas.
O comando UPDATE também pode ser usado para atualizar uma tabela por outra tabela. Ele também pode ser usado para atualizar a data e a hora de uma consulta SQL.
SQL UPDATE JOIN
A instrução SQL UPDATE também pode ser utilizada para atualizar uma tabela usando outra tabela conectada por uma junção. Isso é conhecido como a instrução SQL UPDATE JOIN.
UPDATE table1, table2, INNER JOIN table1 ON table1.column1 = table2.column1 SET table1.column1 = table2.column2 WHERE condition
A seguir está a sintaxe básica da instrução UPDATE usando a cláusula JOIN:
Exemplo:
CREATE TABLE TAE1 (Col1 INT, Col2 INT, Col3 VARCHAR (100)) INSERT INTO TAE1 (Col1, Col2, Col3) SELECT 1, 11, 'FIRST' UNION ALL SELECT 11,12, 'SECOND' UNION ALL SELECT 21, 13, 'THIRD' UNION ALL SELECT 31, 14, 'FOURTH'
Vamos primeiro criar a primeira tabela TAE1.
CREATE TABLE TAE2 (Col1 INT, Col2 INT, Col3 VARCHAR (100)) INSERT INTO TAE2 (Col1, Col2, Col3) SELECT 1, 21, 'TWO-ONE' UNION ALL SELECT 11,22, 'TWO-TWO' UNION ALL SELECT 21, 23, 'TWO-THREE' UNION ALL SELECT 31, 24, 'TWO-FOUR'
Agora, vamos criar a segunda tabela TAE2.
SELECT * FROM TAE1
Col1 | Col2 | Col3 |
1 | 11 | Primeiro |
11 | 12 | Segundo |
21 | 13 | Terceiro |
31 | 14 | Quarto |
Saída:
Agora vamos ver o conteúdo da tabela TAE2.
SELECT * FROM TAE2
Saída:
Col1 | Col2 | Col3 |
1 | 21 | Dois-um |
11 | 22 | Dois e dois |
21 | 23 | Dois e três |
31 | 24 | Dois e quatro |
Agora a seguinte consulta irá atualizar as linhas de TAE1 onde o valor de Col1 é 21 e 31 usando a tabela TAE2 onde existem linhas semelhantes e onde Col1 é 21 e 31. Somente os registros correspondentes de Col2 e Col3 da tabela TAE1 serão atualizados .
UPDATE TAE1 SET Col2 = TAE2.Col2, Col3 = TAE2.Col3 FROM TAE1 INNER JOIN TAE2 ON TAE1.Col1 = TAE2.Col1 WHERE TAE1.Col1 IN (21, 31);
Saída:
Col1 | Col2 | Col3 |
1 | 11 | Primeiro |
11 | 12 | Segundo |
21 | 13 | Dois e três |
31 | 14 | Dois e quatro |
Agora, se o conteúdo da tabela TAE1 for verificado, a seguinte saída será obtida.
No entanto, o conteúdo do TAE2 permanece inalterado.
Col1 | Col2 | Col3 |
1 | 21 | Dois-um |
11 | 22 | Dois e dois |
21 | 23 | Dois e três |
31 | 24 | Dois e quatro |
Este é um exemplo de uso da cláusula JOIN com a instrução UPDATE. Ele fundiu as duas tabelas acima.
DATA DE ATUALIZAÇÃO DO SQL
A instrução SQL UPDATE DATE é usada para atualizar o campo de data e hora no SQL.
UPDATE table_name SET data_field = ‘data_value’ WHERE conditions;
Veja a seguir a sintaxe geral de atualizar o campo de data e hora em SQL :
UPDATE table_name SET data_field = getdate();
A seguir está a sintaxe de atualizar a data com a data atual em SQL :
UPDATE table_name SET data_field = CURRENT_TIMESTAMP;
A seguir está a sintaxe de atualizar a data e hora com a data e hora atuais no SQL:
UPDATE table_name SET data_field = ‘YYYY-MM-DD HH:MM:SS’;
A seguir está a sintaxe de atualizar a data e hora com uma data e hora específicas no SQL:
UPDATE table_name SET data_field = CAST(‘date_value’ AS DATETIME);
A seguir está a sintaxe de atualizar a data com um valor específico quando o formato da data não é conhecido:
Exemplo:
UPDATE Employee SET DOJ = ‘2021-07-05’ WHERE Dept_ID = 10;
Veja a seguir um exemplo de atualização da data em várias linhas no determinado Funcionário tabela.
Emp_ID | Emp_Name | Designação | Manager_ID | DOJ | Salário | Dept_ID |
1 | Empre1 | Diretor | 2021-07-11 | 45.000 | 10 | |
2 | Emp2 | Diretor | 2021-07-11 | 40.000 | 20 | |
3 | Emp3 | Gerente | Empre1 | 2021-07-11 | 27.000 | 10 |
4 | Emp4 | Gerente | Emp2 | 2021-10-08 | 25.000 | 20 |
5 | Emp5 | Analista | Emp3 | 2021-07-11 | 20.000 | 10 |
6 | Emp6 | Analista | Emp3 | 2021-10-08 | 18000 | 10 |
7 | Emp7 | Escriturário | Emp3 | 2021-07-11 | 15.000 | 10 |
8 | Emp8 | Vendedor | Emp4 | 2021-09-09 | 14.000 | 20 |
9 | Emp9 | Vendedor | Emp4 | 2021-10-08 | 13.000 | 20 |
Consulta:
Saída:
Emp_ID | Emp_Name | Designação | Manager_ID | DOJ | Salário | Dept_ID |
1 | Empre1 | Diretor | 2021-07-05 | 45.000 | 10 | |
3 | Emp3 | Gerente | Empre1 | 2021-07-05 | 27.000 | 10 |
5 | Emp5 | Analista | Emp3 | 2021-07-05 | 20.000 | 10 |
6 | Emp6 | Analista | Emp3 | 2021-07-05 | 18000 | 10 |
7 | Emp7 | Escriturário | Emp3 | 2021-07-05 | 15.000 | 10 |
Assim, a coluna DOJ para todos os funcionários com Dept_ID 10 foi atualizada.
Veja a seguir o exemplo de atualização da data de admissão em uma tabela de alunos usando a função CAST:
UPDATE student
SET admission_date = CAST(‘2021-04-10’ AS DATETIME)
WHERE id = 42;