INSERT (SQL Server Compact)

Adiciona novas linhas a uma tabela.

Sintaxe

INSERT [INTO] 
      table_name  [ ( column_list ) ] 
      { VALUES 
      ( { DEFAULT | NULL | expression } [ ,...n] ) 
| derived_table
       }

Argumentos

  • [INTO]
    Uma palavra-chave opcional que pode ser usada entre INSERT e tabela de destino.
  • table_name
    O nome de uma tabela que está prestes a receber os dados.
  • ( ( column_list )
    Uma lista de uma ou mais colunas para adicionar dados. O argumento column_list deve ser colocado entre parênteses e delimitado por vírgulas.
  • VALUES
    Apresenta a lista de valores de dados a ser inserida. Se for especificado, deve haver um valor para cada coluna em column_list ou na tabela. A lista de valores deve ser colocada entre parênteses.
  • DEFAULT
    Requer que o valor padrão definido para uma coluna deve ser usado por Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5).
  • NULL
    Indica que o valor é desconhecido. Um valor NULL é diferente de um valor vazio ou zero.
  • expression
    Uma constante, uma variável ou uma expressão.
  • derived_table
    Qualquer instrução SELECT válida que retorna linhas de dados a serem inseridas na tabela.

Comentários

Para substituir dados em uma tabela, a instrução DELETE deve ser usada para limpar dados existentes antes de adicionar novos dados com INSERT. Para modificar valores de coluna em linhas existentes, use UPDATE.

Se a column_list de inserção for omitida, uma lista de colunas de inserção que identifica todas as colunas da tabela na seqüência crescente de suas posições ordinais estará implícita.

Uma coluna na tabela pode ser identificada somente uma vez na column_list.

Se uma coluna não estiver na column_list, SQL Server Compact 3.5 deve poder fornecer um valor baseado na definição da coluna. Caso contrário, a linha não pode ser carregada. SQL Server Compact 3.5 fornece automaticamente o valor da coluna se ela:

  • Tiver uma propriedade IDENTITY. O próximo valor de identidade incremental for usado.
  • Tiver um padrão. O valor padrão da coluna for usado.
  • For anulável. Um valor nulo for usado.

A lista de colunas e a lista VALUES deve ser usada se for inserir valores explícitos em uma coluna de identidades. Se os valores na lista VALUES não estiverem na mesma ordem que as colunas da tabela ou não tiverem um valor para cada coluna da tabela, column_list deve ser usada para especificar explicitamente a coluna que armazena cada valor de entrada.

Se DEFAULT for usado para especificar um valor de coluna, o valor padrão dessa coluna é inserido. Se não existir um padrão para a coluna e a coluna permitir valores nulos, NULL será inserido. DEFAULT não é válido para uma coluna de identidade.

As colunas criadas com o tipo de dados uniqueidentifier armazenam valores binários de 16 bytes especialmente formatados. Diferentemente de colunas de identidade, SQL Server Compact 3.5 gera automaticamente valores para ROWGUID com o tipo de dados uniqueidentifier. Durante uma operação de inserção, é possível usar variáveis com um tipo de dados de uniqueidentifier e constantes de cadeias de caracteres no formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, com 36 caracteres, incluindo os hífens, onde x é um dígito hexadecimal no intervalo 0-9 ou a-f para colunas com uniqueidentifier. Por exemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF é um valor válido para uma variável ou coluna com uniqueidentifier.

Quando você insere linhas, as regras a seguir são aplicáveis:

  • Se um valor estiver sendo carregado em colunas com tipos de dados nchar, nvarchar ou varbinary, o enchimento ou truncamento de espaços em branco à direita (espaços para nchar e nvarchar, zeros para varbinary) será determinado conforme definido na tabela a seguir.

    Tipo de dados Operação padrão

    nchar/binary

    Valor original de enchimento, com espaços em branco à esquerda para as colunas nchar e com zeros à esquerda nas colunas binary, para o comprimento da coluna.

    nvarchar

    Os espaços em branco à direita em valores de caractere inseridos nas colunas nvarchar não são aparados. Os valores não são preenchidos no comprimento da coluna.

    varbinary

    Os zeros à direita em valores binários inseridos nas colunas varbinary não são aparados. Os valores não são preenchidos no comprimento da coluna.

  • Se uma instrução INSERT violar uma restrição ou regra, ou se for uma valor incompatível com o tipo de dados da coluna, ocorre uma falha na instrução e o SQL Server Compact 3.5 exibe uma mensagem de erro.

  • Se INSERT estiver carregando várias linhas com SELECT, qualquer violação de uma regra ou restrição por conta do carregamento dos valores interrompe a instrução toda e, conseqüentemente, nenhuma linha é carregada.

Dica

Para executar várias consultas simultaneamente, inclua um ponto-e-vírgula e um caractere de nova linha no final de cada instrução. Todos os comentários devem começar com dois hífens (--).

Exemplos de códigos

A. Usando uma instrução INSERT simples

O exemplo a seguir adiciona uma nova empresa à tabela Clientes. Onde determinadas informações não estão disponíveis, é inserido um valor nulo.

INSERT INTO Customers VALUES ('TPC', 'The Phone Company', 'John Kane', 'Owner', NULL, 'Forks', NULL, NULL, 'USA', NULL, DEFAULT);

B. Inserindo dados que não estão na mesma ordem que as colunas

Os exemplos a seguir usam column_list e a lista VALUES para especificar explicitamente os valores que são inseridos em cada coluna da tabela Clientes.

INSERT INTO Customers ([Customer ID], [Company Name], Country, Phone)
VALUES ('WWI', 'Wide World Importers', 'USA', '206-555-0165');

C. Inserindo dados com menos valores do que colunas

No exemplo a seguir, a tabela Employees tem três colunas: EmployeeID, LastName e FirstName. A instrução a seguir adiciona Ben Smith à tabela Funcionários sem fornecer um valor para EmployeeID.

INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Smith', 'Ben');

D. Inserindo dados usando uma tabela derivada

O exemplo a seguir usa uma derived_table para inserir valores.

INSERT INTO Table1 (col1, col2) SELECT (col1, col2) from Table2;

E. Inserindo valores de data

O exemplo a seguir mostra como inserir um valor de data.

INSERT INTO Orders ([Order ID], [Customer ID], [Order Date])
VALUES (34, 'FRANS', '4/2/2004');