DB2 12 - Deleting data from tables


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES, Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 12 - Excluindo dados de tabelas - Deleting data from tables

Você pode excluir dados de uma tabela, excluindo uma ou mais linhas da tabela, excluindo todas as linhas da tabela ou eliminando colunas da tabela.
You can delete data from a table by deleting one or more rows from the table, by deleting all rows from the table, or by dropping columns from the table.

Procedimento - Procedure

Para excluir uma ou mais linhas em uma tabela:
To delete one or more rows in a table:

  • Use a instrução DELETE com uma cláusula WHERE para especificar uma condição de pesquisa. Use the DELETE statement with a WHERE clause to specify a search condition.

    A instrução DELETE remove zero ou mais linhas de uma tabela, dependendo de quantas linhas satisfazem a condição de pesquisa que você especifica na cláusula WHERE.
    The DELETE statement removes zero or more rows of a table, depending on how many rows satisfy the search condition that you specify in the WHERE clause.

    Você pode usar DELETE com uma cláusula WHERE para remover apenas as linhas selecionadas de uma tabela temporária declarada, mas não de uma tabela temporária criada.
    You can use DELETE with a WHERE clause to remove only selected rows from a declared temporary table, but not from a created temporary table.

    A seguinte instrução DELETE exclui cada linha na tabela YEMP que possui um número de funcionário '000060'.
    The following DELETE statement deletes each row in the YEMP table that has an employee number '000060'.

       DELETE FROM YEMP
        WHERE EMPNO = '000060';

    Quando esta instrução é executada, o Db2 exclui qualquer linha da tabela YEMP que atenda à condição de pesquisa.
    When this statement executes, Db2 deletes any row from the YEMP table that meets the search condition.

    Se o Db2 encontrar um erro ao executar sua instrução DELETE, ele interromperá a exclusão de dados e retornará códigos de erro nas variáveis SQLCODE e SQLSTATE ou campos relacionados no SQLCA.
    Os dados da tabela não mudam.
    If Db2 finds an error while executing your DELETE statement, it stops deleting data and returns error codes in the SQLCODE and SQLSTATE variables or related fields in the SQLCA.
    The data in the table does not change.

    Se DELETE for bem-sucedido, SQLERRD (3) no SQLCA conterá o número de linhas excluídas.
    Este número inclui apenas o número de linhas excluídas na tabela que é especificado na instrução DELETE.
    As linhas que são excluídas (em outras tabelas) de acordo com a regra CASCADE não são incluídas em SQLERRD (3).
    If the DELETE is successful, SQLERRD(3) in the SQLCA contains the number of deleted rows.
    This number includes only the number of deleted rows in the table that is specified in the DELETE statement.
    Rows that are deleted (in other tables) according to the CASCADE rule are not included in SQLERRD(3).

Para excluir todas as linhas de uma tabela:
To delete every row in a table:

  • Use a instrução DELETE sem especificar uma cláusula WHERE.
    Use the DELETE statement without specifying a WHERE clause.

    Com espaços de tabela segmentados, a exclusão de todas as linhas de uma tabela é muito rápida. With segmented table spaces, deleting all rows of a table is very fast.

    A seguinte instrução DELETE exclui todas as linhas da tabela YDEPT:
    The following DELETE statement deletes every row in the YDEPT table:

       DELETE FROM YDEPT;

    Se a instrução for executada, a tabela continuará existindo (ou seja, você poderá inserir linhas nela), mas estará vazia.
    Todas as visualizações e autorizações existentes na tabela permanecem intactas ao usar DELETE.
    If the statement executes, the table continues to exist (that is, you can insert rows into it), but it is empty.
    All existing views and authorizations on the table remain intact when using DELETE.


  • Use a instrução TRUNCATE.
    Use the TRUNCATE statement.

    A instrução TRUNCATE pode fornecer as seguintes vantagens sobre uma instrução DELETE:
    The TRUNCATE statement can provide the following advantages over a DELETE statement:

    • A instrução TRUNCATE pode ignorar gatilhos de exclusão
      The TRUNCATE statement can ignore delete triggers
    • A instrução TRUNCATE pode executar um commit imediato
      The TRUNCATE statement can perform an immediate commit
    • A instrução TRUNCATE pode manter o armazenamento alocado para a tabela
      The TRUNCATE statement can keep storage allocated for the table

    A instrução TRUNCATE não redefine a contagem de um valor gerado automaticamente para uma coluna de identidade na tabela.
    Se 14872 fosse o próximo valor da coluna de identidade a ser gerado antes de uma instrução TRUNCATE, 14872 seria o próximo valor gerado após a instrução TRUNCATE.
    The TRUNCATE statement does not, however, reset the count for an automatically generated value for an identity column on the table.
    If 14872 was the next identity column value to be generated before a TRUNCATE statement, 14872 would be the next value generated after the TRUNCATE statement.

    Suponha que você precise esvaziar os dados de uma tabela de inventário antiga, independentemente de quaisquer gatilhos de exclusão existentes, e que você precise tornar o espaço alocado para a tabela disponível para outros usos.
    Use a seguinte instrução TRUNCATE.
    Suppose that you need to empty the data from an old inventory table, regardless of any existing delete triggers, and you need to make the space that is allocated for the table available for other uses.
    Use the following TRUNCATE statement.

       TRUNCATE INVENTORY_TABLE
         IGNORE DELETE TRIGGERS
           DROP STORAGE;

    Suponha que você precise esvaziar os dados de uma tabela de inventário antiga permanentemente, independentemente de quaisquer gatilhos de exclusão existentes, e você precise preservar o espaço alocado para a tabela.
    Você precisa que os dados esvaziados estejam completamente indisponíveis, de forma que uma instrução ROLLBACK não possa retornar os dados.
    Use a seguinte instrução TRUNCATE.

    Suppose that you need to empty the data from an old inventory table permanently, regardless of any existing delete triggers, and you need to preserve the space that is allocated for the table.
    You need the emptied data to be completely unavailable, so that a ROLLBACK statement cannot return the data.
    Use the following TRUNCATE statement.

       TRUNCATE INVENTORY_TABLE
          REUSE STORAGE
         IGNORE DELETE TRIGGERS
         IMMEDIATE;
  • Use a instrução DROP TABLE.
    Use the DROP TABLE statement.

    DROP TABLE elimina a tabela especificada e todas as visualizações e autorizações relacionadas, que podem invalidar planos e pacotes.
    DROP TABLE drops the specified table and all related views and authorizations, which can invalidate plans and packages.

Para eliminar colunas de uma tabela:
To drop columns from a table:

  • Use a instrução ALTER TABLE com a cláusula DROP COLUMN.
    Use the ALTER TABLE statement with the DROP COLUMN clause.

    Como eliminar uma coluna de uma tabela é uma alteração pendente na definição da tabela, o espaço de tabela é colocado no status REORG de aconselhamento pendente (AREOR).
    Quando a alteração pendente é aplicada (executando o utilitário REORG com as opções SHRLEVEL CHANGE ou REFERENCE), a coluna é eliminada da tabela e quaisquer pacotes e instruções dependentes no cache de instrução dinâmica são invalidados.
    Because dropping a column from a table is a pending change to the definition of the table, the table space is placed in advisory REORG-pending status (AREOR).
    When the pending change is applied (by running the REORG utility with the SHRLEVEL CHANGE or REFERENCE options), the column is dropped from the table, and any dependent packages and statements in the dynamic statement cache are invalidated.

  • Selecionando valores ao excluir dados - Selecting values while deleting data
    Ao excluir linhas de uma tabela, você pode selecionar os valores dessas linhas ao mesmo tempo. When you delete rows from a table, you can select the values from those rows at the same time.

Parent topic: Adding and modifying data from application programs



© Copyright IBM Corp.