-- --------------------------------------------------------------------------------------------------------------------
-- Este arquivo contém exemplos de comandos SQL de atualização de dados (Insert , Update e Delete)
-- Este simbolo '--' é o sinal de início de um comentário em SQL. O que está escrito à direita deste simbolo não
-- é executado pelo interpretador de comandos do SGBD.
-- 
-- Os comandos de 'Atualização' não têm representação em AR. Por este motivo apresentam-se os comandos na forma:
-- Sintaxe
-- Exemplo prático
-- Variações do comando
-- --------------------------------------------------------------------------------------------------------------------
-- Inclusão
--   Sintaxe
--   insert into <tab>
--                   [(lista de campos de tab)]
--               values (lista de valores)[,
--                      (lista de valores)];
--   Exemplo prático
insert into pacientes (cppaciente,dtcadpaciente,dtnascpaciente,txnomepaciente)
            values ('1','2024-08-16','1998-04-15','José Felisberto de Athaide'),
                   ('2','2024-08-16','1998-10-05','Ana Maria De Alburque Lins');
--   Variações do comando
-- Eliminando a lista de campos depois do nome da tabela, os valores depois de VALUES devem estar ordem dos campos
-- estão na tabela.
insert into pacientes
            values ('3','2024-08-16','1998-04-15','José Felisberto de Athaide'),
                   ('4','2024-08-16','1998-10-05','Ana Maria De Alburque Lins');
-- Este comando vai apresentar o seguinte erro:
--  invalid input syntax for type date: "José Felisberto de Athaide"
--  LINE 2:             values ('3','2024-08-16','1998-04-15','José Feli...
--  SQL state: 22007
--  Character: 73
-- corrigindo o comando anterior
insert into pacientes
            values ('3','José Felisberto de Athaide','1998-04-15','2024-08-16'),
                   ('4','Ana Maria De Alburque Lins','1998-10-05','2024-08-16');
-- --------------------------------------------------------------------------------------------------------------------
-- Alteração
--  Sintaxe:
--  update <tab> SET <atribuições> [where <condição>];
--  Exemplo prático
update pacientes
       set txnomepaciente='Luiz de Souza',
           dtnascpaciente='1997-03-10'
       where cppaciente=3 and txnomepaciente like '%Ana%';
--  Variações do comando
--   Escrevendo o comando 'dentro' de uma transação
-- INICIANDO uma transação
BEGIN TRANSACTION;
-- Executando o comando de alteração
update pacientes set txnomepaciente='José Felisberto de Athaide' where pacientes.cppaciente='3';
-- Analisando o resultado do comando
select * from pacientes;
-- Cancelando a transação
ROLLBACK;
-- Concluindo a transação
COMMIT;
-- --------------------------------------------------------------------------------------------------------------------
-- Exclusão
-- Sintaxe: delete from <tab> [where <condição>];
-- Exemplos
delete from pacientes; -- Executando a exclusão SEM VERIFICAÇÃO com o WHERE.
-- Executando uma exclusão 'dentro' de uma transação
-- iniciando a transação
BEGIN TRANSACTION;
delete from pacientes where dtnascpaciente between '1995-01-01' and '1995-12-31';
select * from pacientes;
-- concluir (salvando a operação)
commit;
-- cancelando a operação
rollback;
-- ----------------------------------------------------------------------------------------------------------
-- Exercicio de Pratica de CMD
BEGIN TRANSACTION;
-- insert
-- update
-- delete

commit;
rollback;