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

Listar arquivos existentes em diretório (Delphi)

Mostraremos uma maneira simples e prática para listar o conteúdo de um diretório com a opção de incluir nessa listagem os arquivos de seus subdiretórios. No exemplo abaixo temos um Edit para receber o diretório a ser pesquisado um CheckBox para indicar se os subdiretórios entrarão na pesquisa um botão para efetuar a pesquisa e um Memo para listar os arquivos encontrados, no final um Edit que receberá o cálculo final (em bytes) da soma do tamanho dos arquivos. procedure TForm1.Button1Click(Sender: TObject); begin   tamanhoTotal := 0;   memLista.Lines.Clear;   ListarArquivos(edtDiretorio.Text, chkSub.Checked);   Edit1.Text := IntToStr( tamanhoTotal ); end; procedure TForm1.ListarArquivos(Diretorio: string; Sub:Boolean); var   F: TSearchRec;   Ret: Integer;   TempNome: string; begin   Ret := FindFirst(Diretorio+'\*.*', faAnyFile, F);   try     while Ret = 0 do ...

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...

Ler de um arquivo de configuração (.INI no Delphi)

Em muitos casos precisamos tornar nossas aplicações customizáveis, disponibilizando parâmetros que possam ser alterados, sejam eles informações a respeito de uma conexão com o banco de dados, uma senha, ou mesmo possibilitar a alteração do layout do sistema, tudo depende da necessidade e de como o programador pensa em termos de mobilidade para o usuário final. Exemplo de arquivo INI [PARAMETRO] SENHA=12345 Lendo um arquivo INI var // variável que irá conter o arquivo config : TIniFile; // variável que irá armazenar parâmetro a ser lido do arquivo param : string; begin // associa o arquivo de configuração a variável config := TIniFile.Create('C:\Aplicacao\config.ini'); //variável param recebe 12345 param := config.readstring('PARAMETRO','SENHA',''); end;