Unidad 7. Actualización de datos (II)


7.4. Insertar una fila de valores

Para insertar una fila de valores utilizamos la sintaxis:


INSERT [INTO] <destino> [(lista_columnas)] 

    VALUES ({DEFAULT|NULL|expresion}[ ,...n ]) [;] 

La palabra reservada INTO es opcional y no añade funcionalidad a la instrucción, originalmente era obligatoria.

Después de indicar que queremos insertar, debemos indicar dónde, mediante <destino>.
<destino> es el nombre de la tabla donde queremos insertar, puede ser un nombre de tabla o un nombre de vista.
Si utilizamos una vista, y ésta tiene un origen basado en varias tablas, en su lista de selección deberán aparecer columnas de una sola tabla (no podemos insertar datos en varias tablas a la vez).
Con la cláusula VALUES indicamos entre paréntesis los valores a insertar, separados por comas.
Cada valor se puede indicar mediante:

  • una expresión que normalmente será una constante,
  • mediante la palabra reservada DEFAULT que indica ‘valor por defecto’ en este caso la columna se rellenará con el valor predeterminado de la columna, si la columna no tiene  DEFAULT se sustituirá por el valor nulo NULL. 
  • Mediante la palabra reservada NULL valor nulo.

Delante de VALUES, de forma opcional podemos indicar una lista de columnas entre paréntesis. Las columnas son columnas del destino.
 
Cuando indicamos nombres de columnas, esas columnas serán las que reciban los valores a insertar, la asignación de valores se realiza por posición, la primera columna recibe el primer valor, la segunda columna el segundo, y así sucesivamente.

En la lista, las columnas pueden estar en cualquier orden y también se pueden omitir algunas columnas.
Una columna que no aparezca en la lista de columnas se rellenará de acuerdo a su definición:

  • con su valor por defecto si está definida con la cláusula DEFAULT
  • con el valor de identidad incremental siguiente  si tiene la propiedad IDENTITY.
  • con el valor calculado si es una columna calculada.
  • con el valor NULL , en cualquier otro caso y si la columna lo admite.

Cuando no se indica una lista de columnas el sistema asume por defecto todas las columnas de la tabla y en el mismo orden que aparecen en la definición de la tabla, en este caso, los valores se tienen que especificar en el mismo orden que las columnas en la definición de la tabla, y se tiene que especificar un valor por cada columna ya que los valores se rellenan por posición, la primera columna recibe el primer valor, la segunda columna el segundo, y así sucesivamente.

En cualquier caso, el número de valores debe coincidir con el número de columnas y los tipos de dato de los valores deben ser compatibles con las columnas.

Aunque pueda parecer más engorroso escribir la lista de columnas, es un hábito recomendable, hace que la sentencia sea más fácil de leer y mantener (cuando leemos la sentencia sabemos en qué columnas asignamos los valores sin necesidad de consultar la definición de la tabla) y evita que se tenga que cambiar la sentencia si se modifica el esquema de la tabla (si el orden de las columnas dentro de la tabla cambia).

Los registros se agregan al final de la tabla.

Cuando se insertan nuevas filas en una tabla, el sistema comprobará que la nueva fila no infrinja ninguna regla de integridad, por ejemplo no podremos asignar a una columna PRIMARY KEY un valor nulo o que ya exista en la tabla, a una columna UNIQUE un valor que ya exista en la tabla, a una columna NOT NULL un valor NULL, a una clave ajena (FOREIGN KEY) un valor que no exista en la tabla de referencia.
De producirse alguna de las situaciones anterior, la instrucción genera un mensaje de error y la fila no se inserta.

Ejemplos.


INSERT INTO oficinas (oficina,  ciudad) VALUES (26, 'Elx');

En este caso hemos indicado sólo dos columnas y dos valores, las demás columnas se rellenan con el valor por defecto si lo tiene (DEFAULT) o con NULL. Si alguna columna no nombrada no admite nulos ni tiene cláusula DEFAULT definida, la instrucción dará error.


INSERT INTO oficinas 

VALUES (27,'Móstoles','Centro',default ,null,  default) 

Aquí no hemos indicado una lista de columnas luego los valores se tienen que indicar en el mismo orden que las columnas dentro de la tabla, si nos equivocamos de orden, el valor se guardará en una columna errónea (si los tipos son compatibles) o generará un mensaje de error y la fila no se insertará (si los tipos no son compatibles).

Para practicar puedes realizar este Ejercicio Insertar una fila de valores.

Febrero-2010
Pág. 7.2

Atrás  Inicio  Adelante






.