INSERT (SQL Server Compact)

Agrega filas nuevas a una tabla.

Sintaxis

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

Argumentos

  • [INTO]
    Palabra clave opcional que se puede usar entre INSERT y la tabla de destino.

  • table_name
    Nombre de la tabla que va a recibir los datos.

  • ( column_list )
    Lista de una o varias columnas a las que se va a agregar datos. El argumento column_list debe escribirse entre paréntesis y delimitado por comas.

  • VALUES
    Introduce la lista de valores de datos que se van a insertar. Debe haber un valor de datos por cada columna en column_list, si se especifica, o en la tabla. La lista de valores debe ir entre paréntesis.

  • DEFAULT
    Exige que Microsoft SQL Server Compact use el valor predeterminado definido para una columna.

  • NULL
    Indica que el valor es desconocido. Un valor NULL no es lo mismo que un valor cero o vacío.

  • expression
    Constante, variable o expresión.

  • derived_table
    Cualquier instrucción SELECT válida que devuelva filas de datos para insertarlas en la tabla.

Comentarios

Para reemplazar datos en una tabla, se debe usar la instrucción DELETE para borrar los datos existentes antes de cargar nuevos datos con INSERT. Para modificar los valores de una columna en las filas existentes, use UPDATE.

Si se omite el argumento de inserción column_list, hay implícita una lista de columnas de inserción que identifica todas las columnas de la tabla en secuencia ascendente de las posiciones ordinales.

Cada columna de la tabla solo se puede identificar una vez en column_list*.*

Si una columna no se encuentra en column_list, SQL Server Compact debe poder proporcionar un valor basado en la definición de la columna; de lo contrario, no se podrá cargar la fila. SQL Server Compact proporciona un valor para la columna automáticamente si ésta:

  • Tiene una propiedad IDENTITY. Se usa el valor de identidad incremental siguiente.

  • Tiene un valor predeterminado. Se usa el valor predeterminado de la columna.

  • Aceptar valores NULL. Se usa un valor NULL.

La lista de columnas y la lista VALUES se deben usar al insertar valores explícitos en una columna de identidad. Si los valores de la lista VALUES no están en el mismo orden que las columnas de la tabla o no contienen un valor para cada columna de la tabla, se debe usar column_list para especificar de forma explícita la columna que almacenará cada valor entrante.

Si se usa DEFAULT para especificar un valor de columna, se inserta el valor predeterminado de esa columna. Si no existe un valor predeterminado para la columna y ésta admite valores NULL, se inserta NULL. DEFAULT no es un valor válido para una columna de identidad.

En las columnas creadas con el tipo de datos uniqueidentifier se almacenan valores binarios de 16 bytes con formato especial. A diferencia de lo que ocurre con las columnas de identidad, SQL Server Compact genera automáticamente valores para las columnas ROWGUID con el tipo de datos uniqueidentifier. Durante una operación de inserción, se pueden usar variables con un tipo de datos uniqueidentifier y constantes de cadena con el formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 caracteres incluidos los guiones), donde x es un dígito hexadecimal comprendido en el intervalo 0-9 ó a-f para las columnas uniqueidentifier. Por ejemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF es un valor válido para una variable o columna uniqueidentifier.

Al insertar filas, se aplican las siguientes reglas:

  • Si se carga en las columnas un valor con el tipo de datos nchar, nvarchar o varbinary, el relleno o truncamiento de los espacios vacíos a la derecha (espacios para nchar y nvarchar, ceros para varbinary) se determina como se explica en la siguiente tabla.

    Tipo de datos

    Operación predeterminada

    nchar/binary

    Rellenar el valor original, con espacios en blanco a la derecha para las columnas nchar y con ceros a la derecha para las columnas binary, hasta completar la longitud de la columna.

    nvarchar

    Los espacios en blanco a la derecha en los valores de caracteres insertados en las columnas nvarchar no se recortan. Los valores no se rellenan hasta completar la longitud de la columna.

    varbinary

    Los ceros a la derecha en los valores binarios insertados en las columnas varbinary no se recortan. Los valores no se rellenan hasta completar la longitud de la columna.

  • Si una instrucción INSERT infringe una restricción o regla, o si tiene un valor incompatible con el tipo de datos de la columna, la instrucción produce un error y SQL Server Compact muestra un mensaje de error.

  • Si la instrucción INSERT está cargando varias filas con SELECT, cualquier infracción de una regla o restricción que provoquen los datos que se están cargando hace que se detenga toda la instrucción y no se carga ninguna fila.

Nota

Para ejecutar varias consultas a la vez, debe incluir un punto y coma y un carácter de línea nueva al final de cada instrucción. Todos los comentarios deben comenzar con dos guiones (--).

Ejemplos de código

A. Usar una instrucción INSERT simple

El siguiente ejemplo agrega una compañía a la tabla Customers. Si alguna información no está disponible, se inserta un valor NULL.

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

B. Insertar datos que no están en el mismo orden que las columnas

En el siguiente ejemplo se usa column_list y la lista VALUES para especificar explícitamente los valores que se insertan en cada columna de la tabla Customers.

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

C. Insertar datos con menos valores que columnas

En el ejemplo siguiente, la tabla Employees tiene tres columnas: EmployeeID, LastName y FirstName. La siguiente instrucción agrega Ben Smith a la tabla Employees sin proporcionar un valor para la columna EmployeeID.

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

D. Insertar datos usando una tabla derivada

En el siguiente ejemplo se usa una derived_table para insertar valores.

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

E. Insertar valores de fecha

En el siguiente ejemplo se muestra cómo insertar un valor de fecha.

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