Pular para o conteúdo principal

O que devemos conhecer sobre SQL/Oracle Parte 3: Manipulando dados

Descrevendo cada comando de manipulação e dados (DML)

Comandos DML (Data manipulation language) são utilizados para inserir, atualizar e remover registros do banco. São cinco os principais comandos DML: INSERT, UPDATE, DELETE, SELECT e MERGE:

  • INSERT adiciona registros na tabela;
  • UPDATE altera registros existentes na tabela;
  • DELETE remove registros existentes na tabela;
  • SELECT mostra dados da tabela;
  • MERGE será visto em breve;


Inserindo registros na tabela

O comando para inserir registros é o INSERT, veja a sinaxe:

INSERT INTO nome_da_tabela(coluna_1, coluna_2) VALUES(valor_1, valor_2);

No comando acima duas colunas e dois valores são listados, essa relação sempre deve ser igual, não importa a ordem em que são listadas. É possível omitir colunas durante o INSERT, desde que as restrições da tabela sejam respeitadas. Também é possível inserir sem informar nenhuma coluna, desse modo é obrigatório informar valores para todas as colunas da tabela, na ordem em que elas estiverem na própria tabela. O recomendável é sempre informar todas as colunas.

Resumindo:
  • O comando INSERT insere um ou mais registros no banco;
  • A sintaxe do INSERT consiste nas palavras reservadas INSERT INTO, o nome da tabela, uma lista de colunas (opcional), a palavra reservada VALUES e a lista de valores a serem inseridos;
  • Se o comando INSERT for escrito sem a lista de colunas então a lista de valores a serem inseridos deve possuir um valor para cada coluna da tabela e devem estar na mesma ordem;
  • A lista de valores do INSERT pode conter expressões;
  • Se qualquer valor violar uma restrição da tabela então a execução gera um erro e nada é inserido;

Atualizando registros da tabela

O comando para atualizar registros é o UPDATE, veja a sintaxe:

UPDATE nome_da_tabela SET coluna_1 = valor_1, coluna_2 = valor_2 WHERE coluna_3 = valor_3;

No exemplo acima duas colunas são atualizadas, mas apenas para os registros que estiverem de acordo com a condição WHERE. A condição WHERE não é obrigatória, mas quando não informada todos os registros da tabela são atualizados. Os novos valores devem respeitar as restrições da tabela.

Resumindo:
  • O comando UPDATE atualiza um ou mais registros;
  • A sintaxe do comando UPDATE começa com a palavra reservada UPDATE e o nome da tabela, a palavra reservada SET, uma série de expressões que atribuem valores, onde do lado esquerdo temos as colunas seguidas de um sinal de igual “=” e do lado direito o valor e finalmente a clausula WHERE;
  • Se mais de um valor for alterado basta separa-los por vírgula;
  • Se a clausula WHERE for omitida todos os registros são atualizados;

Removendo registros da tabela

O comando para remover registros é o DELETE, veja a sintaxe:

DELETE FROM nome_da_tabela WHERE coluna_1 = valor_1;

No comando descrito, todos os registros que se enquadrarem na condição WHERE serão apagados. A cláusula FROM não é obrigatória, se omitida nada muda. A cláusula WHERE não é obrigatória, mas se suprimida todos os registros da tabela serão removidos.

Resumindo:
  • O comando DELETE é usado para remover registros;
  • A sintaxe inicia com a palavra reservada DELETE e a opcional FROM, o nome da tabela e a cláusula WHERE;
  • Se a clausula WHERE for omitida todos os registros são removidos;

Controle de transação

O controle de transação (TCL) é responsável por persistir ou desfazer as alterações realizadas pelos comandos DML. Também é possível “marcar posições” entre comandos, para que apenas parte desses comandos seja persistido ou descartado:

  • Comandos TCL incluem COMMIT, ROLLBACK e SAVEPOINT;
  • Existem dois tipos de eventos de COMMIT: explicito e implícito;
  • O explicito ocorre com o comando COMMIT;
  • O implícito ocorre imediatamente após certos eventos como a execução de um comando DDL válido (CREATE, ALTER, DROP, GRANT e REVOKE);
  • Se um comando DDL falha durante sua execução o COMMIT implícito ocorre, o mesmo não vale para erros de sintaxe;
  • O comando ROLLBAK é usado para desfazer alterações do banco;
  • O comando SAVEPOINT é usado para nomear um ponto entre uma série de comandos SQL, de modo que um ROLLBACK possa ocorrer diretamente para esse ponto;
  • Após um COMMIT, todas as marcações de SAVEPOINT são apagadas;
  • Todo ROLLBACK que aponta para um SAVEPOINT inexistente não ocorre;
  • Um ROLLBACK que não aponte para um SAVEPOINT desfaz todas as alterações da seção a partir do ultimo COMMIT;


Comentários

Mais visitadas

Aplicação Flask usando Nginx e Gunicorn

Aplicação Flask usando Nginx e Gunicorn Se você já desenvolveu uma aplicação Flask básica, sabe que o servidor de desenvolvimento embutido não é ideal para produção. Ele não é projetado para lidar com altos volumes de tráfego ou conexões simultâneas. Para tornar sua aplicação Flask mais robusta e pronta para produção, podemos usar o Gunicorn como servidor de aplicação e o Nginx como proxy reverso. Neste artigo, vamos adaptar o exemplo anterior ( Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker ) para incluir o Nginx e o Gunicorn. O que são Nginx e Gunicorn? Gunicorn O Gunicorn (Green Unicorn) é um servidor de aplicação WSGI que roda aplicações Python como o Flask. Ele é eficiente e simples de configurar, lidando com múltiplas requisições ao mesmo tempo, algo que o servidor embutido do Flask não faz bem. Nginx O Nginx é um servidor web que atua como um proxy reverso. Ele recebe requisições HTTP e as encaminha ao Gunicorn. Além disso, o Nginx pode: Servir arquivos ...

Palavra com a primeira letra em Maiúsculo (Delphi)

Para casos onde temos palavras que são armazenadas todas em maiúsculo, geralmente surge a necessidade de utiliza-la de uma maneira mais elegante, como o título sugere, então vamos lá: function Primeira_Letra_Maiuscula(p_texto: string): string; begin IF p_texto <> '' THEN result := UpperCase(Copy(p_texto,1,1))+LowerCase(Copy(p_texto,2,Length(p_texto))); end;

Centralizar Texto em Edit

Como todos sabemos o Edit mantém todo texto digitado a esquerda, o que não fica bem quando o usamos para a entrada de números, pois bem, o exemplo abaixo apresenta uma alternativa para centralizar um determinado valor dentro de um Edit: procedure EditChange(Sender: TObject); var vl_label : TLabel; //variável do tipo Label begin vl_label := TLabel.Create(self); //criamos um label WITH vl_label DO BEGIN Font.Name := TEdit(sender).Font.Name; //pegamos a fonte usada no edit Caption := TEdit(sender).Text; //pegamos o conteúdo do edit SendMessage(TEdit(sender).Handle, EM_SETMARGINS, EC_LEFTMARGIN, (TEdit(sender).Width-vl_label.Width) div 2); //centraliza no label e retorna para o edit END ; vl_label.Free; end ;