domingo, 22 de dezembro de 2019

SQL - Inserções, Alterações e Exclusões


SQL - Inserções, Alterações e Exclusões 

Uma linguagem direcionada a extração de informações de um conjunto de dados, em tese não deveria incorporar comandos de manipulação dos dados. 

Devemos observar contudo que a mera existência de uma linguagem padronizada para acesso aos dados "convidava" os desenvolvedores a aderirem a uma linguagem "padrão" de manipulação de tabelas. 

Naturalmente cada desenvolvedor coloca "um algo mais" em seu SQL (SQL PLUS, SQL *, ISQL, e toda sorte de nomenclaturas), por um lado desvirtuando os objetivos da linguagem (padronização absoluta), mas em contrapartida otimiza os acessos ao seu banco de dados e por maior que sejam estas mudanças, jamais são tão importantes que impeçam que um programador versado em SQL tenha grandes dificuldades em se adaptar ao padrão de determinada implementação. 

De fato as diferenças entre o SQL da Sybase, Oracle, Microsoft, são muito menores dos que as existentes entre o C, o BASIC e o Pascal, que são chamadas de linguagens "irmãs", pois todas originam-se conceitualmente no FORTRAN. 

Podemos observar que todas as três linguagens mencionadas possuem estruturas de controle tipo "para" (for), "enquanto" (while) e repita (do..while, repeat..until). 

Todas trabalham com blocos de instrução, todas tem regras semelhantes para declaração de variáveis e todas usam comandos de tomada decisão baseadas em instruções do tipo "se" ou "caso", porém apesar de tantas semelhanças (sic), é praticamente impossível que um programador excelente em uma linguagem consiga rapidamente ser excelente em outra linguagem do grupo. 

Poderíamos arriscar a dizer que um excelente programador C que utilize a implementação da Symantech terá que passar por um breve período de adaptação para adaptar-se ao C da Microsoft. 

O que ocorreria então se este programador tiver que adaptar-se ao Delphi (Pascal) da Borland? 

De forma alguma o mesmo ocorrerá com o especialista em SQL ao ter que migrar do Banco de Dados X para o Banco de Dados Y. 

Naturalmente existirá a necessidade de aprendizado, mas este programador poderá ir adaptando-se aos poucos sem precisar ser retreinado, o que é um aspecto extremamente vantajoso para as empresas. 

===============================================

SQL - Inserir registros (Insert): 
INSERT INTO [] [VALUES

Exemplo: INSERT INTO DEPT; 
Possibilita a inserção de registros de forma interativa. 

INSERT INTO DEPT (DEPNUME,DEPNOME,DEPLOCA) VALUES (70,"PRODUCAO","RIO DE JANEIRO"); 
Possibilita a inserção de registros em tabelas sem digitação dos dados. 

Exemplo: Inserindo Dados em uma tabela: 
inser into curso_sql (id,nome,endereço,email) 
value (1,’Rogerio’,’Rua Bela Cintra’,rogerio@nrsystem.com);

===============================================

SQL - Atualizar registros (Update): 
Sintaxe: UPDATE SET = [WHERE ]; 
Sintaxe: UPDATE Tabela SET Campo = Valor;

Exemplo: UPDATE EMP SET EMPSALA = EMPSALA* 1.2 WHERE EMPSALA< 1000; 

===============================================

ALTER DATABASE
Para alterar o banco de dados é utilizado o comando ALTER seguido do seu nome e propriedade a ser alterada. 
Sua sintaxe é: ALTER DATABASE Nome Propriedade

================================================

DROP DATABASE
A exclusão definitiva (irreversível) é possibilitada pelo comando DROP.  Sua sintaxe é: DROP DATABASE Propriedade Nome, e a exclusão de tabelas que são referenciadas em outras tabelas pode gerar problemas de inconsistência nas mesmas. 

===============================================

ALTER TABLE
Para deletar colunas de uma tabela usamos a sintaxe:  
ALTER TABLE Tabela DROP Campo

================================================

SQL - Excluir registros (Delete) 
Sintaxe: DELETE FROM [WHERE ]; 
Sintaxe: DELETE FROM Tabela;

Ex: DELETE FROM emp WHERE EMPSALA > 5000; 

Transações Muitas vezes gostaríamos que determinado processo, caso fosse abortado por qualquer motivo, pudesse ser inteiramente cancelado. 

Imaginemos por exemplo um usuário digitando um pedido. 

Imaginemos ainda que o sistema possa reservar cada item solicitado de maneira "on line", ou seja ao mesmo tempo em que estou digitando a quantidade o sistema já "empenhe" uma quantidade equivalente no estoque. 

Imaginemos ainda que o sistema deve cancelar todas as operações se apenas um dos itens não puder ser atendido. 

Grande problema, caso não pudéssemos anular todos os processos a partir de determinada condição. 

Vamos simular tal ocorrência com nosso banco de dados EMP. Imaginemos que ao invés de digitarmos: 
DELETE FROM emp WHERE salario > 5000; 

nós tivéssemos digitado: 
DELETE FROM emp WHERE salario > 500; 

Ao invés de eliminarmos 2 registros, praticamente teríamos eliminado o banco de dados todo. 

Para evitarmos que um erro de digitação, ou um processo iniciado porém sem condição de ser completado integralmente comprometa todos nossos dados podemos criar uma transação que nos assegurará que nossos testes sejam bem sucedidos ou cancelados sem comprometer nossos dados. 

begin transaction; 
delete from emp where salario > 500; 
IF SQL_RECORDCOUNT > 20 THEN; 
ROLLBACK TRASACTION; 
else COMMIT; 
endif; 
end transaction; 


Visões:  Uma visão consiste basicamente de uma tabela derivada de outras tabelas. 

Considerando o exemplo TRABALHO, poderíamos criar uma visão baseada na Tabela de Empregados (EMP) e na Tabela de Departamentos (DEPT) onde tivéssemos somente os Nomes dos Funcionários e os Departamentos nos quais estes trabalhassem.  Teríamos algo assemelhado ao abaixo representado: 

CREATE VIEW EMP_DEP AS SELECT E.EMPNOME, D.DEPNOME FROM EMP E, DEPT D WHERE E.DEPNUME = D.DEPNUME; 

Devemos observar que: 

1- Uma visão definida sobre uma única tabela somente será atualizável se os atributos da tal visão contiverem a chave primária de tal tabela. 

2- Visões sobre várias tabelas não são passíveis de atualizações. 

3- Visões que se utilizam de funções de agrupamentos, também não poderão ser atualizadas.


Nenhum comentário: