DB2 12 - Inserting rows by using the INSERT statement


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 - Inserindo linhas usando a instrução - INSERT Inserting rows by using the INSERT statement

Uma maneira de inserir dados em tabelas é usar a instrução SQL INSERT.
Este método é útil para inserir pequenas quantidades de dados ou inserir dados de outra tabela ou exibição.
One way to insert data into tables is to use the SQL INSERT statement.
This method is useful for inserting small amounts of data or inserting data from another table or view.

Sobre esta tarefa - About this task

Use uma instrução INSERT para adicionar novas linhas a uma tabela ou exibição.
Usando uma instrução INSERT, você pode realizar as seguintes ações:
Use an INSERT statement to add new rows to a table or view.
Using an INSERT statement, you can do the following actions:

  • Especifique os valores da coluna para inserir uma única linha.
    Você pode especificar constantes, variáveis ??de host, expressões, DEFAULT ou NULL usando a cláusula VALUES.
    Specify the column values to insert a single row.
    You can specify constants, host variables, expressions, DEFAULT, or NULL by using the VALUES clause.

  • Em um programa de aplicativo, especifique matrizes de valores de coluna para inserir várias linhas em uma tabela.
    Use matrizes de variáveis ??de host na cláusula VALUES da instrução INSERT FOR n ROWS para adicionar várias linhas de valores de coluna a uma tabela.
    In an application program, specify arrays of column values to insert multiple rows into a table.
    Use host variable arrays in the VALUES clause of the INSERT FOR n ROWS statement to add multiple rows of column values to a table.

  • Inclua uma instrução SELECT na instrução INSERT para informar ao Db2 que outra tabela ou exibição contém os dados para a nova linha ou linhas. Include a SELECT statement in the INSERT statement to tell Db2 that another table or view contains the data for the new row or rows.

Em cada caso, para cada linha inserida, você deve fornecer um valor para qualquer coluna que não tenha um valor padrão.
Para uma coluna que atende a uma das seguintes condições, especifique DEFAULT para dizer ao Db2 para inserir o valor padrão para essa coluna:
In each case, for every row that you insert, you must provide a value for any column that does not have a default value.
For a column that meets one of the following conditions, specify DEFAULT to tell Db2 to insert the default value for that column:

  • A coluna pode ser anulada.
    The column is nullable.
  • A coluna é definida com um valor padrão.
    The column is defined with a default value.
  • A coluna possui tipo de dados ROWID.
    As colunas ROWID sempre têm valores padrão.
    The column has data type ROWID.
    ROWID columns always have default values.
  • A coluna é uma coluna de identidade.
    As colunas de identidade sempre têm valores padrão.
    The column is an identity column.
    Identity columns always have default values.
  • A coluna é uma coluna de registro de data e hora de alteração de linha.
    The column is a row change timestamp column.

Os valores que você pode inserir em uma coluna ROWID, uma coluna de identidade ou uma coluna de registro de data e hora de alteração de linha dependem de a coluna ser definida com GENERATED ALWAYS ou GENERATED BY DEFAULT.
The values that you can insert into a ROWID column, an identity column, or a row change timestamp column depend on whether the column is defined with GENERATED ALWAYS or GENERATED BY DEFAULT.

Inserindo uma única linha: - Inserting a single row:

Você pode usar a cláusula VALUES da instrução INSERT para inserir uma única linha de valores de coluna em uma tabela.
Você pode nomear todas as colunas para as quais está fornecendo valores ou pode omitir a lista de nomes de coluna.
Se você omitir a lista de nomes de coluna, deverá especificar valores para todas as colunas.
You can use the VALUES clause of the INSERT statement to insert a single row of column values into a table.
You can either name all of the columns for which you are providing values, or you can omit the list of column names.
If you omit the column name list, you must specify values for all of the columns.

Recomendação: - Recommendation:

Para instruções INSERT estáticas, nomeie todas as colunas para as quais você está fornecendo valores pelos seguintes motivos:
For static INSERT statements, name all of the columns for which you are providing values for the following reasons:

  • Sua instrução INSERT é independente do formato da tabela.
    (Por exemplo, você não precisa alterar a instrução quando uma coluna é adicionada à tabela.)
    Your INSERT statement is independent of the table format.
    (For example, you do not need to change the statement when a column is added to the table.)
  • Você pode verificar se está especificando os valores em ordem.
    You can verify that you are specifying the values in order.
  • Suas declarações de origem são mais autodescritivas.
    Your source statements are more self-descriptive.

Se você não nomear as colunas em uma instrução INSERT estática e uma coluna for adicionada à tabela, poderá ocorrer um erro se a instrução INSERT for religada.
Ocorrerá um erro após qualquer religação da instrução INSERT, a menos que você altere a instrução INSERT para incluir um valor para a nova coluna.
Isso é verdadeiro mesmo se a nova coluna tiver um valor padrão.
If you do not name the columns in a static INSERT statement, and a column is added to the table, an error can occur if the INSERT statement is rebound.
An error will occur after any rebind of the INSERT statement unless you change the INSERT statement to include a value for the new column.
This is true even if the new column has a default value.

Ao listar os nomes das colunas, você deve especificar seus valores correspondentes na mesma ordem da lista de nomes das colunas.
When you list the column names, you must specify their corresponding values in the same order as in the list of column names.

Example:

A instrução a seguir insere informações sobre um novo departamento na tabela YDEPT.
The following statement inserts information about a new department into the YDEPT table.

   INSERT INTO YDEPT (DEPTNO
                   ,  DEPTNAME
                   ,  MGRNO
                   ,  ADMRDEPT
                   ,  LOCATION)
        VALUES       ('E31'
                   , 'DOCUMENTATION'
                   , '000010' 
                   , 'E01'
                   ,  ' ');

Depois de inserir uma nova linha de departamento em sua tabela YDEPT, você pode usar uma instrução SELECT para ver o que carregou na tabela.
A seguinte instrução SQL mostra todas as novas linhas de departamento que você inseriu:
After inserting a new department row into your YDEPT table, you can use a SELECT statement to see what you have loaded into the table.
The following SQL statement shows you all of the new department rows that you have inserted:

   SELECT *
   FROM   YDEPT
   WHERE  DEPTNO LIKE 'E%'
   ORDER  BY DEPTNO;

A tabela de resultados é semelhante à seguinte saída:
The result table looks similar to the following output:

   DEPTNO  DEPTNAME                              MGRNO   ADMRDEPT  LOCATION
   ======  ====================================  ======  ========  ===========
   E01     SUPPORT SERVICES                      000050  A00       -----------
   E11     OPERATIONS                            000090  E01       -----------
   E21     SOFTWARE SUPPORT                      000100  E01       -----------
   E31     DOCUMENTATION                         000010  E01       -----------

Exemplo: - Example:

A instrução a seguir insere informações sobre um novo funcionário na tabela YEMP.
Como a coluna WORKDEPT é uma chave estrangeira, o valor inserido para essa coluna (E31) deve ser um valor na coluna da chave primária, que é DEPTNO na tabela YDEPT.
The following statement inserts information about a new employee into the YEMP table.
Because the WORKDEPT column is a foreign key, the value that is inserted for that column (E31) must be a value in the primary key column, which is DEPTNO in the YDEPT table.


   INSERT INTO YEMP
        VALUES       ('000400'
                  ,   'RUTHERFORD'
                  ,   'B'
                  ,   'HAYES'
                  ,   'E31'
                  ,   '5678'
                  ,   '1998-01-01'
                  ,   'MANAGER'
                  ,    16
                  ,   'M'
                  ,   '1970-07-10' 
                  ,    24000
                  ,    500
                  ,    1900);

Exemplo: - Example:

A instrução a seguir também insere uma linha na tabela YEMP.
Como as colunas não especificadas permitem valores nulos, o Db2 insere valores nulos nas colunas que você não especificar.
The following statement also inserts a row into the YEMP table.
Because the unspecified columns allow null values, Db2 inserts null values into the columns that you do not specify.

   INSERT INTO YEMP (EMPNO
                  ,  FIRSTNME
                  ,  MIDINIT
                  ,  LASTNAME
                  ,  WORKDEPT
                  ,  PHONENO
                  ,  JOB)
        VALUES      ('000410'
                  ,  'MILLARD'
                  ,  'K'
                  ,  'FILLMORE'
                  ,  'D11'
                  ,  '4888'
                  , 'MANAGER');
  • Inserindo linhas em uma tabela de outra tabela - Inserting rows into a table from another table
    Você pode copiar uma ou mais linhas de uma tabela para outra.
    You can copy one or more rows from one table into another table.

  • Regras para inserir dados em uma coluna ROWID - Rules for inserting data into a ROWID column
    Uma coluna ROWID contém valores exclusivos que identificam cada linha em uma tabela.
    Se você pode inserir dados em uma coluna ROWID e como esses dados são inseridos depende de como a coluna é definida.
    A ROWID column contains unique values that identify each row in a table.
    Whether you can insert data into a ROWID column and how that data gets inserted depends on how the column is defined.

  • Regras para inserir dados em uma coluna de identidade - Rules for inserting data into an identity column
    Uma coluna de identidade contém um valor numérico exclusivo para cada linha da tabela.
    Se você pode inserir dados em uma coluna de identidade e como esses dados são inseridos depende de como a coluna é definida.
    An identity column contains a unique numeric value for each row in the table.
    Whether you can insert data into an identity column and how that data gets inserted depends on how the column is defined.

  • Restrições ao atribuir valores a colunas com tipos distintos - Restrictions when assigning values to columns with distinct types
    Certas condições são necessárias quando você atribui um valor de coluna a outra coluna ou quando atribui uma constante a uma coluna de um tipo distinto.
    Se as condições não forem atendidas, você não poderá atribuir o valor.
    Certain conditions are required when you assign a column value to another column or when you assign a constant to a column of a distinct type.
    If the conditions are not met, you cannot assign the value.


© Copyright IBM Corp.