Pular para o conteúdo principal

Usando o Oracle II

Olá a todos, peço primeiramente desculpas a todos pela ausência e principalmente pela demora na continuidade de alguns assuntos, como o Oracle, o fato é que em novembro meu tempo ficou meio apertado devido a assuntos profissionais (ainda bem, fechamos o ano com muito trabalho) e pessoais (reservei parte do meu tempo livre para estudar SQL e PL/SQL para o exame de certificação da Prometric que no dia 17/12/2008 o fiz e passei).
Desculpas a parte iremos retomar aqui a série “Usando o Oracle”, e no episódio de hoje mostraremos como manipular as informações (inserir, alterar, apagar e consultar).

 

SELECT

Com o SELECT realizamos a seleção das informações, devemos informar as informações desejadas, de onde elas serão buscadas e, se for o caso, restringir, agrupar ou ordenar o resultado.
Sintaxe:
SELECT coluna_01, coluna_02
FROM      tebla_x
WHERE  coluna_03 = 1;
O SELECT tem como objetivo, projeção (escolha das colunas de uma tabela), seleção (restringir os registros a serem retornados) e junção (reunir informações contidas em mais de uma tabela).
OBS.:
Pode ser utilizado o caracter coringa * no lugar do nome das colunas, com isso todas as colunas da tabela serão retornadas. Para casos onde existam valores repetidos pode-se eliminar os duplicados utilizando o DISTINCT logo após o SELECT.

 

 

INSERT

O INSERT é responsável por inserir dados nas tabelas, pode ser inserido um registro por vez ou vários quando utilizado uma consulta.
Sintaxe:
INSERT INTO tabela_x(coluna_01
                                         ,coluna_02
                                         ,coluna_03)
                          VALUES(1
                                          ,’ABC’
                                          ,3);
É recomendável que se coloque todas as colunas que receberão dados dentro da instrução, pois caso os nomes sejam suprimidos, se por algum motivo uma nova coluna for inserida na tabela o código INSERT deixará de funcionar até que o novo valor seja adicionado na cláusula VALUES.
OBS.:
Para casos onde se deseja inserir em uma tabela dados contidos em outra podemos fazer da seguinte maneira (lembrando que nesse caso a cláusula VALUES não é utilizada e deve-se sempre respeitar o tipo de dados e o número de colunas do INSERT e do SELECT):
INSERT INTO tabela_x
SELECT col_1, col_2, col_3
FROM     tab_y;

 

UPDATE

Para atualizar registros já existentes devemos utilizar o UPDATE.
Sintaxe:
UPDATE tabela_x
SET          coluna_02 = ‘NOVO_VALOR’
WHERE  coluna_01 = 1;
No exemplo utilizado para a sintaxe o que ocorre é o seguinte, a coluna_02 recebe o novo valor apenas para o registro que possua o valor 1 na coluna_01, se houverem mais de um registro nesta situação todos serão atualizados, do mesmo modo se a cláusula WHERE não for indicada todos os registros da tabela serão alterados.

 

DELETE

O DELETE é responsável por remover registros (todos ou um determinado número) de uma tabela.
Sintaxe:
DELETE FROM tabela_x
WHERE              coluna_01 = 1;
Lembrando que a exemplo do UPDATE, quando a cláusula WHERE não é fornecida todos os registros da tabela são apagados.

 

MERGE

Por fim falaremos do MERGE que possibilita atualizar ou inserir dados em uma tabela condicionalmente, onde sempre ocorre um UPDATE quando o registro existe e um INSERT caso seja um novo registro.
Sintaxe:
MERGE INTO tabela_x a
USING             tab_y       b
ON                   (a.coluna_01 = b.col_1)
WHEN MATCHED THEN
UPDATE SET
  a.coluna_02 = b.col_2
WHEN NOT MATCHED THEN
INSERT VALUES(b.col_1, b.col_2, b.col_3);
Como foi possível perceber as alterações irão ocorrer na tabela_x, quando existirem registros com o mesmo valor da condição ON ocorre a atualização, caso contrário ocorre a inserção.
Por enquanto é só, no próximo artigo falaremos de junções e agrupamento.

Comentários

Mais visitadas

Funções de data Oracle

  Com o Oracle é possível obter uma série de resultados a partir de uma ou mais datas, como por exemplo verificar o último dia do mês ou verificar a quantidade de meses entre duas datas, então vamos a alguns exemplos:   Data atual do sistema: SYSDATE Remover meses de uma data: ADD_MONTHS(SYSDATE, -1) Adicionar meses de uma data: ADD_MONTHS(SYSDATE, +1) Buscar o último dia do mês: LAST_DAY(SYSDATE) Primeiro dia do mês: TRUNC(SYSDATE, ‘MONTH’) Quantidade de meses entre duas datas: MONTHS_BETWEEN(SYSDATE, ‘27/07/1982’) Primeiro dia do ano: TRUNC(SYSDATE, ‘YEAR’) Dias da semana: DECODE( TO_NUMBER( TO_CHAR          (SYSDATE, ‘D’) ) ,1, ‘domingo’ ,2, ‘segunda-feira’ ,3, ‘terça-feira’ ,4, ‘quarta-feira’ ,5, ‘quinta-feira’ ,6, ‘sexta-feira’ ,7,’sábado’ )

Funções de Data e Hora (Delphi)

É muito comum nos depararmos no dia a dia com a necessidade de manipular datas e horas, seja para um calculo de permanência, dias de atraso enfim, é praticamente escapar de alguma situação que necessite desse tipo de controle. Assim como a necessidade e se utilizar algum recurso para manipular as datas e horas de alguma maneira e freqüente, as duvidas de como o faze-lo também é, basta um breve olhar em qualquer fórum especializado e lá está, alguma duvida relacionada, por isso decidi falar um pouco sobre uma unit muito poderosa chamada DateUtils para a manipulação de data e hora, com um grande numero de métodos e classes que facilitam a vida de qualquer um. Alguns exemplos: CompareDate(constA, B: TDateTime): TValueRelationship; Compara apenas a data de dois valores (do tipo TDateTime) retornando: LessThanValue O primeiro valor é menor que o segundo EqualsValue Os valores são iguais GreaterThanValue O primeiro valor é maior que o segundo CompareDateTime(const A, B: TD

Como Verificar se um Objeto Existe (Delphi)

Em alguns momentos surge a necessidade de verificar se um determinado objeto existe, ou seja se já foi criado, principalmente quando se trabalha com criação dinâmica em tempo de execução, então vamos ao exemplo: - Vamos criar uma variável, um vetor do tipo caixa de texto: var Minha_caixa : array of TEdit; - Em seguida definir o tamanho desse vetor, no caso será dez: setLength(Minha_caixa, 10) - Agora iremos criar nossa caixa de texto: // lembrando que o vetor inicia em zero // logo o índice final é o tamanho total - 1 for vl_i := 0 to Length(Minha_caixa) -1 do begin Minha_caixa[vl_i] := TEdit.Create(self); with Minha_caixa[vl_i] do begin Parent := Self; Name := 'Caixa_N'+IntToStr(vl_i); Text := 'Esta é a '+IntToStr(vl_i)+' º caixa !'; ReadOnly := true; Height := 21; Width :=