Aula 06
Aula 06
Aula 06
1. Nesta Aula
Metas de Compreensão
Conhecer como altera as tabelas existentes. Aprender os comandos para criar pontos de
referência e desfazer alterações. Conhecer como você pode inserir, alterar, excluir e recuperar
dados no SGBD.
Apresentação
O objetivo nesta aula é aprender a alterar tabelas que já existem no banco de dados. Você
deve entender como inserir, alterar e excluir registros utilizando o SQL. Conhecer os comandos
COMMIT e ROLLBACK vai lhe ajudar desfazer algumas operações que podem ocorrer.
Também você iniciará o comando SELECT que retorna dados que foram armazenados em
tabelas. Por fim, você vai ver como testar as restrições que você criou e aprender a utilizar os
operadores do SQL.
Para entender estes conceitos, esta unidade está organizada da seguinte forma:
• a seção 2 apresenta como alterar tabelas existente num banco de dados;
• a seção 3 mostra o comando INSERT e apresentar os conceitos da SELECT
• a seção 4 apresenta e expressões aritméticas e os operadores BETWEEN, IN, LIKE
e IS NULL;
• a seção 5 apresenta UPDATE e DELETE;
Não deixe de utilizar as bibliografias associadas à unidade. Bom estudo!
Nesta aula você vai aprender como alterar estruturas de tabelas mudando características de
atributos e adicionando colunas. Todas as alterações na estrutura de uma tabela são feitas
utilizando o comando ALTER TABLE, seguido por uma palavra que informa o tipo de alteração
que se deseja. Existem três opções diferentes para alterar. A opção ADD adiciona uma coluna
ou restrição, MODIFY altera as características de uma coluna e DROP exclui uma coluna ou
restrição da tabela. Se a tabela estiver vazia todas as operações serão executadas sem
problemas, mas se a tabela tiver registro, o SGBD vai verificar se a ação é possível de ocorrer
sem perda de dados, se não for uma mensagem negando a operação será exibida. Assim
operações como DROP em uma coluna com registros será sempre negada. A sintaxe básica
para alterar uma tabela inserindo é:
Para exemplificar imagine que você tenha criado a tabela TB_PROVA como o seguinte código:
Observe que para modificar um campo que não estava como obrigatório para obrigatório basta
utilizar o código:
Note que você pode aumentar o tamanho mesmo existindo registro na tabela, contudo a
redução só é possível se todos os registros não utilizam o tamanho especificado. No exemplo o
campo st_prova tinha a possibilidade de ter até 20 caracteres, a redução para 10 só será
efetivada após o SGBD verificar se nenhum dado será perdido com a solicitação. Uma
utilização muito comum é utilizar o comando ALTER TABLE para adicionar as restrições ao se
criar uma tabela. Isso se dá para facilitar encontrar erros ao criar as tabelas. Para ilustrar
imagine que você agora vai acrescentar as tabelas apresentadas na figura 01 na base de
dados.
Data_nascimento
Código_Equipe
Nome_Equipe
Código_Equipe
Código_Piloto
Código_Pais
Nome_Piloto
Código_Pais
(0,1) (0,2)
Equipe tem Piloto
Observe que no exemplo você não informou qual é a chave primária, qual é a chave
estrangeira, se terá campos obrigatórios ou qualquer outra restrição. Você vai utilizar o
comando ALTER TABLE para definir cada uma dessas restrições. Assim se você errar ao
declarar uma delas, será mais fácil encontrar o erro e corrigi-lo. Segue como fica o restante do
código:
ALTER TABLE TB_EQUIPE
ADD CONSTRAINT tb_equipe_id_equipe_pk
PRIMARY KEY (id_equipe);
Observe que neste caso ficou faltando uma coluna id_equipe, assim altere com o código:
Também é possível utilizar o comando ALTER TABLE para remover uma coluna ou restrição. A
sintaxe seria a seguinte:
Observe que para remover uma restrição você deve informar o nome da restrição. Por isso,
uma boa prática é sempre criar restrições com nome e não deixar que o SGBD crie de forma
automática. Se acontecer de você deixar o SGBDR Oracle criar e precisar consultar o nome
atribuído, utilize o comando SELECT apresentado a seguir.
Onde aparece o TB_EQUIPE você poderá substituir pelo nome de qualquer tabela que desejar
consultar. Outro comendo semelhante é:
O comando vai apagar a coluna hr_prova da tabela. Para validar a alteração, utilize o
comando:
DESC TB_PROVA;
Observe que como não definimos o nome da CONSTRAINT quando solicitamos que o SGBD
alterasse a TB_PROVA tornando o campo dt_prova obrigatório o SGBD atribuiu o nome de
forma automática. No seu sistema pode ter criado outro nome, assim verifique com a instrução
SELECT anterior. Como você percebeu não é bom deixar nomes estranhos, assim utilize o
comando para corrigir:
Para finalizar o comando ALTER TABLE vale ressaltar que em alguns momentos você pode
precisar desabilitar algumas restrições criadas no banco de dados. São momentos em que
você vai ter uma grande carga de processamento, normalmente de balanço ou exportação de
dados para uma base de estatística, onde não necessidade de normalização. Se você tiver
certeza que não ocorrerá modificação na base de dados, você pode acelerar o processo
desabilitando algumas restrições ou todas. O comando a segui desabilita uma restrição:
Se você desativar uma restrição de chave única ou primária que esteja usando um índice
exclusivo, a Oracle descartará o índice exclusivo. Quando você habilitar a chave primária o
SGBD vai criar o índice automaticamente. Através do comando ALTER TABLE você consegue
mudar a tabela do modo gravação para consulta.
Este comando não muda a tabela para somente leitura, impedindo que alterações com
comandos DML e DDL ocorram. Para voltar a tabela para o modo gravação utilize o comando
apresentado a seguir.
ALTER TABLE TB_EQUIPE READ WRITE;
A tabela volta ao modo gravação, permitindo que se insira, altere, apague sua estrutura e
dados.
Para inserir uma linha em uma tabela SQL exige a utilização do comando INSERT. A sintaxe
básica do INSERT é:
No exemplo foi informado o nome_da_tabela como TB_PAIS. Observe que não foi atribuído as
informações de quais colunas e em qual ordem seriam enviados os dados no VALUES. Assim,
o SGBD assume que serão enviados todos os dados na ordem que foram informados quando
se criou a tabela. A instrução VALUES passa a informar os valores, sendo a ordem id_pais,
nm_pais, nr_populacao. O id_pais é a chave primária, isso quer dizer que ele não pode ser
nulo ou ser um valor repetido na tabela. Ele é do tipo NUMBER o que dispensa o uso de aspas
simples. Todos os dados do tipo VARCHAR2 devem ser informados com as aspas simples e
não podem ultrapassar o limite ou tamanho que foi definido na estrutura da tabela. Veja uma
variação que você pode utilizar.
Neste caso foi escolhido que seriam enviados todos os dados na ordem em que se criou a
tabela, mas no VALUES o usuário optou por deixar o valor do atributo nr_populacao nulo
utilizando a instrução NULL para esse fim. Outra forma de inserir seria:
Você pode mudar a ordem em que os dados serão informados, como segue no próximo
comando.
Observe que o valor nulo só será aceito se no momento em que você definiu as CONSTRAINT
você não criou uma restrição de campo obrigatório ou NOT NULL. Para inserir múltiplas linhas
utilize o comando INSERT ALL.
INSERT ALL
INTO TB_PAIS (id_pais, nm_pais) VALUES (7,'Espanha')
INTO TB_PAIS (id_pais, nm_pais) VALUES (8,'Reino Unido')
INTO TB_PAIS (id_pais, nm_pais) VALUES (9,'Austrália')
SELECT * FROM DUAL;
O comando INSERT ALL é usado para adicionar várias linhas com uma única instrução
INSERT. As linhas podem ser inseridas em uma tabela ou em várias tabelas usando apenas
um comando SQL. No exemplo inserimos três linhas ou tuplas na TB_PAIS. Observe que no
final do comando INSERT ALL existe uma SELECT da tabela DUAL. Está tabela apresenta
uma única coluna chamada DUMMY e um único registro. Ela foi criada no usuário SYS e sua
função é auxiliar em operações como a do comando INSERT ALL. Mais adiante você verá
outras operações que a tabela DUAL pode auxiliar. Outra forma de utilizar o INSERT ALL é
utilizar a ordem padrão da tabela.
INSERT ALL
INTO TB_PAIS VALUES (10,'Países Baixos',NULL)
INTO TB_PAIS VALUES (11,'Suécia',NULL)
INTO TB_PAIS VALUES (12,'Canadá',NULL)
INTO TB_PAIS VALUES (13,'Itália',NULL)
INTO TB_PAIS VALUES (14,'Rússia',NULL)
SELECT * FROM DUAL;
Para verificar como os dados, ou o conteúdo que está na tabela você deve utilizar o comando
SELECT. Este é principal comando da SQL e será necessárias diversas interações com o
bando de dados para absorver todas as possibilidades e combinações implementadas nesta
instrução. Para iniciar observe uma descrição simplificada de sua sintaxe.
Está é uma sintaxe bem simplificada que introduz a SELECT onde a lista_de_colunas
representa um ou mais atributos que devem ser exibidos. Se você optar por solicitar mais de
uma coluna, você deve separar as colunas utilizando uma vírgula. Também é permitido utilizar
o caractere asterisco como coringa, ou seja, todas as colunas da tabela na ordem de criação
participaram da consulta. Por exemplo se você deseja ver todos os países que cadastrou na
TB_PAIS pode utilizar:
Muitas vezes não é aceitável exibir o nome do atributo ou o retorno como título da coluna. Para
alterar o nome da coluna é possível criar um apelido para a coluna ou ALIAS. O ALIAS irá
substituir o nome da coluna, protegendo a estrutura do SGBD e facilitando a exibição em
relatórios gerados pelos usuários. A sintaxe do ALIAS é bem simples, você poderá optar por
utilizar o comando AS ou não. Se você quiser substituir o nome da coluna por apenas uma
palavra simples basta digitar após o nome da coluna, mas, caso queira utilizar uma sentença
ou caracteres especiais deverá utilizar aspas-duplas para indicar que o nome deve ser
substituído pela sentença. Veja a sintaxe do comando ALIAS:
Onde:
Todas as variações apresentadas acima são aceitáveis e você deve estar preparado para
utilizar a definida como padrão para o SGBD. Além do uso do ALIAS em uma SELECT é
possível utilizar os operadores aritméticos em um atributo, quer seja numérico ou data. Para
exemplificar você vai inserir na TB_PILOTO o piloto Nico Hülkenberg. Para inserir o atributo
dt_nascimento será necessário utilizar a instrução TO_DATE que converte uma sequência de
caracteres de texto para o formato data. Digite a instrução:
Observe a única instrução nova é o TO_DATE que é responsável por converter a string para o
formato date. A sintaxe do TO_DATE é:
Onde:
A máscara pode apresentar uma combinação de valores como apresentado na tabela 01.
Após ter inserido o piloto você pode experimentar fazer cálculos com operadores aritméticos na
SELECT. É possível utilizar operadores aritméticos nos atributos ou em uma expressão
condicional. Expressões Aritméticas podem conter nome de colunas, valores numéricos
constantes e operadores aritméticos. Os operadores são apresentados na tabela 02.
Você pode experimentar utilizar outra operação, por exemplo, para atual idade do piloto.
SELECT (sysdate-dt_nascimento)/365.2425 AS "Idade" FROM TB_PILOTO;
Neste exemplo o SGBD irá pegar a data atual do servidor e subtrair a data de nascimento
apresentado o resultado em dias. Após a operação que estava entre parênteses o SGBD irá
calcular a idade em anos, por realizar a divisão dos dias vividos por 365.2425 para obter a
idade em anos. Além das operações aritméticas é possível concatenas colunas com outras
colunas ou com strings utilizando ||. A sintaxe é:
Agora que você tem uma noção básica do funcionamento da SELECT você pode conhecer a
sintaxe da instrução. O comando SELECT apresenta a seguinte sintaxe:
Não se preocupe que você vai estudar e ver cada um dos comandos apresentados na sintaxe
do SELECT. A Cláusula WHERE indica qual condição de execução o SELECT deve retornar.
Ela funciona com os operadores apresentados na tabela 04.
Tabela 04. Operadores para clausula WHERE
Operador Descrição
= Igual
<> Diferente
> Maior
< Menor
>= Maior ou igual
<= Menor ou igual
Para exemplificar você pode solicitar que seja exibido todos os países que tenha o nome Brasil
cadastrado na tabela.
Observe que nas condições os dados alfanuméricos e datas presentes na cláusula WHERE
devem estar entre aspas simples. Também é importante salientar que no mundo real, a busca
de dados normalmente vai envolver diversas condições. Por exemplo você pode querer saber
quais pilotos nasceram em um determinado pais e tem mais que 25 anos. Para isso será
necessário utilizar operadores lógicos. Os operadores AND e OR devem ser usados para fazer
composições de expressões lógicas. O predicado AND esperará que ambas as condições
sejam verdadeiras enquanto o predicado OR esperará uma das condições seja verdadeira.
Você pode combinar AND e OR na mesma expressão lógica. Quando AND e OR aparecer na
mesma cláusula WHERE, todos os ANDs serão feitos primeiros e posteriormente todos os ORs
serão feitos. O SQL tem três operadores lógicos que são apresentados na tabela 05.
Tabela 05. Operadores Lógicos
Operadores Descrição
AND E
OR OU
NOT NÃO
Caso queira garantir uma determinada condição seja realizada utilize os parênteses. Os
parênteses especificam, a ordem na qual os operadores devem ser avaliados (prioridade).
Sempre que você estiver em dúvida sobre qual dos dois operadores será feito primeiro quando
a expressão é avaliada, use sempre parênteses para definir a prioridade das expressões.
Operadores Especiais
No SQL existem cinco operadores que operam, com todos tipos de dados. A tabela 06
apresenta esses operadores.
Tabela 06. Operadores especiais para todos os tipos de dados
Operador Significado
BETWEEN [vl_inicial] AND [vl_final] Entre dois valores (inclusive)
IN (lista) Comparar uma lista de valores
LIKE Compara um parâmetro alfanumérico
IS NULL É um valor nulo
EXISTS Utilizado para verificar se uma
subconsulta retorna alguma linha
O operador BETWEEN pode ser utilizado para verificar se um valor está dentro de uma faixa
de valores. Por exemplo se você quiser listar todos os países que tenham a chave primária
entre 2 e 8 utilize:
Por via de regra o menor valor na clausula BETWEEN deve ser sempre listado primeiro e o
maior valor deve ser listado após o AND. Outro operador IS NULL verifica quais campos em
uma tabela estão com valores nulos. Assim a SELECT vai retornar apenas as linhas ou tuplas
com o atributo nulo. Por exemplo se quiser solicitar a lista de países que não apresentam
número da população.
O operador especial LIKE é utilizado como coringa para encontrar padrões ou strings em um
atributo. Algumas vezes você precisa procurar valores que você não conhece exatamente.
Usando o operador LIKE é possível selecionar linhas combinando parâmetros alfanuméricos. O
caractere de porcentagem ou % é utilizado como coringa nas pesquisas de strings. Também é
possível utilizar o underscore ou simplesmente _ para criar o coringa de um caractere.
Experimente o comando:
SELECT nm_pais
FROM TB_PAIS
WHERE nm_pais LIKE 'A%';
No exemplo todos os países que começam com a letra A em seu nome, serão listados. Você
pode pedir que se procure uma parte da string, como apresentado a seguir:
SELECT nm_pais
FROM TB_PAIS
WHERE nm_pais LIKE 'Br%';
Ou pode solicitar que tenha o final de acordo com a regra da consulta. O comando a seguir
utiliza o coringa na frente da string fazendo que o final seja observado e esteja de acordo com
a condição.
SELECT nm_pais
FROM TB_PAIS
WHERE nm_pais LIKE '%ia';
Outra opção é colocar o coringa antes e depois de uma sequência de caracteres fazendo que
apenas as tuplas que tiverem parte da string no meio dela sejam retornadas. O comando a
seguir apresenta um caso semelhante de uso.
SELECT nm_pais
FROM TB_PAIS
WHERE nm_pais LIKE '%ema%';
SELECT nm_pais
FROM TB_PAIS
WHERE nm_pais LIKE '_rasil';
Lembre-se que você pode utilizar combinações livremente, apresentando em um único LIKE _
e % simultaneamente.
SELECT nm_pais
FROM TB_PAIS
WHERE nm_pais LIKE '%a_ca';
Lembre-se que a maioria dos SGBDs implementa o SQL como não sensitive-case mas
diferenciam os caracteres dos dados armazenados. Isso quer dizer que BRASIL, Brasil e brasil
tem caracteres ASCII diferentes e retornem valores diferentes. Para evitar problemas você
pode criar uma regra de restrição que pode exigir uma determinada forma ao inserir os dados.
Em outra aula você verá uma outra forma de solucionar este problema, transformando
momentaneamente a cadeia de caracteres em maiúsculas ou minúsculas. O operador especial
IN cria uma lista de valores. Seu uso é semelhante ao operador OR, sendo que todos os
valores contidos na lista do operador IN devem ser do mesmo tipo de dados. Cada um dos
valores da lista será testado e comparado ao atributo, se o valor corresponder a qualquer valor
da lista a tupla é selecionada.
O operador especial IN receberá maior atenção quando você for aprender exclusivamente
sobre as subconsultas. Por fim, o operador especial EXISTS é útil para criar condições onde se
deseja saber se existe dados em uma outra consulta. Ou seja, se a subconsulta retornar
qualquer tupla então a consulta principal será executada.
A subconsulta será executada primeira e como ela retorna uma tupla ou linha, a consulta
principal pode ser executada. Como o operador IN o operador EXISTS é utilizado com
subconsultas que serão vistos em outra aula.
Retornando a sintaxe do SELECT você notará que falta ver a cláusula ORDER BY. Ela serve
para ordenar uma lista de forma ordenada. Normalmente a ordem das linhas retornadas de
uma pesquisa é indefinida. A cláusula ORDER BY pode ser usada para ordenar as linhas. Se
você for usar o comando ORDER BY lembre-se que ele deve ser sempre a última instrução da
cláusula de declaração de uma SELECT. Por padrão a ordem da instrução ORDER BY é
sempre crescente, mas você pode solicitar a ordem decrescente utilizando DESC. Não é
necessário definir a ordem crescente, mas se você quiser a instrução ASC declara de forma
explicita. Para testar a instrução digite:
Para avaliar a ordenação de múltiplas colunas você deve inserir mais alguns pilotos. Assim
digite:
Agora com três pilotos você pode avaliar ordenação de múltiplas colunas. É possível utilizar
mais de uma coluna na cláusula ORDER BY. O limite de colunas é o número de colunas da
tabela. Na cláusula ORDER BY especifica-se as colunas que serão ordenadas, separando as
por vírgula. Se algumas ou todas serão invertidas especifique DESC depois de cada uma das
colunas. Para ordenar por duas colunas digite o com o comando:
Neste caso o id_equipe será o primeiro campo ordenado e quando ocorrer repetição de dados
a segunda coluna será ordenada. Como no exemplo existem dois pilotos na mesma equipe
será ordenado primeiro as equipes e depois os nomes dos pilotos. Outra forma de escrever o
mesmo comando é substituir o nome das colunas que devem ser ordenadas pelo número ou
ordem em que aparecem no retorno de dados. Veja a instrução equivalente a anterior:
A figura 04 apresenta o resultado da SELECT. Está notação é bem útil quando a definição das
colunas é muito extensa ou apresenta formulas e cálculos complexos.
A cláusula ORDER BY é usada na pesquisa quando você quer mostrar as linhas em uma
ordem específica. Sem a cláusula ORDER BY as linhas são retornadas na ordem conveniente
para o SGBD. Lembre-se que esse comando não altera a ordem dos dados que estão
armazenados no banco de dados.
Além da ordenação o comando SELECT pode solicitar dados distintos ou diferentes. A clausula
DISTINCT produz uma lista de valores distintos, ou seja, sem repetições. Por exemplo:
SELECT id_equipe
FROM TB_PILOTO;
Finalizando a sessão no SQL todas as expressões podem ser negativas com o uso do
comando NOT. Com ele você pode criar expressões como NOT BETWEEN para indicar tudo
que estiver fora da faixa, NOT IN para indicar tudo que não estiver na lista, NOT LIKE para
indicar tudo que não conter a linha de caracteres e IS NOT NULL indicando tudo que não for
nulo.
5. UPDATE e DELETE
Para atualizar, alterar ou modificar os dados em uma tabela você irá utilizar o comando
UPDATE. A sintaxe desse comando é:
UPDATE nome_da_tabela
SET nome_da_coluna = novo_valor [, nome_da_coluna = novo_valor]
[WHERE lista_de_condição];
Por exemplo, você pode inserir os dados de alguns pilotos com o código SQL abaixo:
Após a inserção dos dados notar que o país de origem está errado. Assim para corrigir:
UPDATE TB_PILOTO
SET id_pais = 3
WHERE id_piloto = 4;
UPDATE TB_PILOTO
SET dt_nascimento = TO_DATE('26/03/1992', 'dd/mm/yyyy'),
id_pais = 6
WHERE id_piloto = 5;
Observe que é importante definir muito bem a clausula WHERE, pois a ausência desta clausula
provocaria alterações em todos os dados armazenados na tabela TB_PILOTO. Portanto tome
cuidado e sempre especifique a clausula WHERE quando for utilizar o comando UPDATE para
não alterar sem querer todas as linhas da tabela especificada. Sempre confirme as correções
utilizando o comando SELECT. Para verificar se o comando UPDATE não afetou todas as
linhas da tabela TB_PILOTO, digite:
É fácil excluir uma linha ou tupla da tabela. Para apagar os dados em uma tabela você utiliza o
comando DELETE que apresenta a seguinte sintaxe:
Para exemplificar você pode inserir dados na TB_PROVA para apagar em seguida. Utilize o
comando:
Agora que existe duas linhas você poderá apagar uma com o comando:
O comando DELETE irá apagar a prova de 26 de março de 2017. É importante você identificar
corretamente qual tupla deseja apagar, pois se mais de uma tupla satisfazer a condição, está
também será apagada. Por isso no exemplo foi utilizado a chave primária, para identificar de
forma inequívoca, ou seja, sem erros a tupla desejada. Caso você queira apagar todas as
linhas de uma tabela, mas manter sua estrutura, digite:
Este comando deve ser utilizado com cuidado, pois apaga todas as linhas da tabela. Antes de
utilizar o comando DELETE, confirme a operação visualização as linhas que seram atualizadas
com o comando SELECT, pois ambos apresentam a mesma condição WHERE. Nunca omita a
cláusula WHERE. No caso da omissão, todos os registros da tabela serão eliminados.
O comando CREATE TABLE AS SELECT cria uma tabela com sua estrutura e dados tendo
como baseado em um comando SELECT.
CREATE TABLE TB_PAIS
AS SELECT * FROM TB_TEMP;
Outro comando que você pode precisar é o RENAME. Este comando é utilizado nos casos de
alteração de nome das tabelas. Sua sintaxe é bem simples:
Para exemplificar
COMMIT;
Quando você cria uma sessão todas as suas alterações só estão visíveis para você enquanto
estiver utilizando a interface. Se você quer tornar perene suas alterações ou visíveis para
outros usuários você deve utilizar o comando COMMIT. É interessante notar que quando você
sai de uma sessão e a mesma é encerrada sem problemas, ocorre um COMMIT implícito. Se
sua sessão finaliza por qualquer outro problema, ocorre um ROLLBACK implícito. Além disso,
todo comando DDL tal como CREATE, ALTER e DROP e DCL como GRANT e REVOKE
provocam o fim da transação corrente, havendo um COMMIT implícito.
Se o comando COMMIT não foi utilizado para armazenar de forma perene as alerações é
possível restaurar o banco de dados até seu último ponto de COMMIT ou ROOLBACK. O
comando ROLLBACK desfaz quaisquer alterações desde o último COMMIT e retorna os dados
aos valores existentes antes das alterações. A sintaxe para o comando ROOLBACK é bem
simples:
ROOLBACK;
Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo
fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das
relações existentes entre as tabelas e seus índices. Alguns SGBD aplicam COMMIT implícito a
diversos comandos, de forma que você deve consultar no manual do SGBD quais são os
comandos. Para exemplificar experimente os seguintes comandos;
Para avaliar a capacidade de desfazer comandos DML utilize o código para inserir um novo
piloto.
INSERT INTO TB_PILOTO VALUES (
7,'FELIPE MASSA',TO_DATE('25/04/1981','dd/mm/yyyy'),1,'M',4
);
Observe como sai o resultado da consulta após a inserção realizada com sucesso na figura 06.
Em seguida digite:
ROOLBACK;
Observe os dados que a seleção retorna após o comando ROOLBACK na figura 07.
COMMIT;
ROOLBACK;
Os comandos COMMIT e ROLLBACK são capazes de efetivar ou cancelar tudo ou nada, não
existe meio termo nestes comandos. Se for escrever um bloco com várias instruções a serem
executadas, a série inteira pode ser salva ou desfeita como um grande grupo de comandos. A
declaração SAVEPOINT faz parte dos comandos COMMIT e ROLLBACK. Este comando
estabelece demarcações ou pontos dentro de uma transação. Seu objetivo é permitir que os
comandos COMMIT ou ROLLBACK possam ser subdividir e que alguns pontos possam ser
salvos ou ter a transação desfeita. Existem algumas regras para se utilizar o SAVEPOINT. A
primeira é que todas as declarações SAVEPOINT deve incluir um nome. Cuidado para não
duplicar os nomes dos SAVEPOINT, pois se você utilizar o mesmo nome a marcação, não
acontece um erro e sim uma mudança do SAVEPOINT anterior para a nova posição, o que
tornaria impossível recuperar e apagar aquele ponto. A terceira regra é que uma vez
confirmada com COMMIT um grupo de transações todos os pontos de salvamento existentes
serão apagados da memória e quaisquer referências a eles após o COMMIT implicará em erro.
A sintaxe do comando é simples e segue a estrutura:
SAVEPOINT nome_ponto;
SAVEPOINT sp_1;
SAVEPOINT sp_2;
ROOLBACK TO sp_2;
Atividade
1. Com base na tabela gere o script que insere os dados da TB_EQUIPE
Equipe
Ferrari Itália
Force India-Mercedes Índia
Haas-Ferrari Estados
Unidos
McLaren-Honda Reino Unido
Mercedes Alemanha
Red Bull-TAG Heuer Austria
Renault França
Sauber-Ferrari Suíça
Toro Rosso[26] Itália
Williams-Mercedes Reino Unido
-------------------------------------------------------------------------------------------------------------------------------
Glossário
ALTER TABLE – comando SQL que permite alterações na estrutura de uma tabela;
ADD – adiciona colunas ou restrições em uma tabela;
MODIFY – altera as características de uma tabela;
DROP – exclui colunas ou restrições em uma tabela;
DESC – descreve a estrutura de uma tabela;
INSERT INTO – comando SQL para inserir dados em uma tabela;
VALUES – apresenta os valores ;
NULL – instrução para informar valor nulo ;
INSERT ALL – inserção de múltiplas linhas;
AS – apelido que pode ser atribuído a uma coluna ou ao nome de uma tabela;
TO_DATE – instrução que converte string em data;
AND – operador E, utilizado em operações lógicas
OR – operador OU, utilizado em operações lógicas
BETWEEN – entre dois valores
IN – indica uma lista de valores
LIKE – compara um parâmetro alfanumérico
IS NULL – valida se é nulo
EXISTS – valida se existe
ORDER BY – coloca ou ordena uma lista
DISTINCT – retorna dados distintos
UPDATE – comando para atualizar dados
DELETE – comando para apagar dados
CREATE TABLE AS – cria uma tabela com base em uma consulta
RENAME – permite trocar o nome de uma tabela
COMMIT – grava todas as alterações
ROLLBACK – desfaz quaisquer alterações
SAVEPOINT – pontos ou marcações dentro de uma transação