Tiempo estimado de lectura: 4 minutos
Después de crear los datos mediante una sentencia create, uno de los siguientes pasos con SQL es introducir los datos para poder gestionarlos y actualizarlos cuando sea necesario.
Hay muchas formas de importar los datos, una de ellas es importar un archivo CSV con una consulta SQL.
Aquí hablamos de algunos de los pasos que hay que dar, y también de la importancia de entender la clave primaria.
Antes de que se produzcan todas las actualizaciones siguientes, la tabla tiene el siguiente aspecto:
--Insertar una fila de datos Insert INTO dbo.CUSTOMER(CUSTOMER_NO,customer_type) VALUES (456789,'web') select * from dbo.CUSTOMER
Insertar una fila en una tabla de la base de datos
En el siguiente código utilizaremos la sentencia INSERT que básicamente indica al SQL que añada una nueva fila a la tabla.
Es importante recordar dos cosas sobre la clave primaria:
- Tiene que ser único.
- No puede haber valores nulos.
Como resultado de la aplicación de esto, permitirá que las tablas se unan asumiendo que tienen la misma información de clave primaria.
La salida nos da lo siguiente:
Inserción de varias filas de datos en una tabla
Siguiendo con lo anterior, podemos tener la necesidad de insertar más de una fila.
Nuevamente se seguirían los mismos pasos, excepto que debemos asegurarnos de que todos los datos insertados siguen la misma estructura y no hay valores duplicados en la columna CUSTOMER_NO.
Cualquier duplicado en esta columna provocaría el siguiente fallo:
Fallaría en 125872 y luego en 456789, ambos deben ser eliminados de la inserción. A continuación se muestra un ejemplo de mensaje de error.
Insert INTO dbo.CUSTOMER(CUSTOMER_NO,customer_type) VALORES (125872,'web'), (333333,'web'), (987981,'web'), (879784,'web'), (654654,'web'), (456789, 'Teléfono') select * from dbo.CUSTOMER
La eliminación de los valores duplicados de la sentencia de inserción, también permite que la actualización se complete con éxito:
Insert INTO dbo.CUSTOMER(CUSTOMER_NO,customer_type) VALORES (333333,'web'), (987981,'web'), (879784,'web'), (654654,'web') select * from dbo.CUSTOMER
Insertar valores en una columna determinada
Habrá un escenario, de vez en cuando, en el que sólo quieras insertar valores en una columna concreta, pero no en todas.
Con esta tabla, como tiene una clave primaria, puede insertar nuevos valores en CUSTOMER_NO, sin necesidad de valores para customer_type, como se muestra a continuación.
Si no existiera una clave primaria, podría utilizar la siguiente sentencia, y en la cláusula where identificar aquellos registros específicos que necesitan ser actualizados.
--Insertar valores en una columna concreta Insertar INTO dbo.CUSTOMER(CUSTOMER_NO) VALORES (25897458), (25898633) select * from dbo.CUSTOMER
Esto dará lugar a la salida:
La siguiente sección le mostrará el error , al intentar insertar en el tipo de cliente, y dejar CUSTOMER_NO en blanco.
Insertar un valor sin actualizar la clave primaria, fallará
Por último, veremos cómo intentar actualizar una tabla con una clave primaria, sin proporcionar el valor de la clave primaria, dará un error.
El código que utilizaremos es:
--Insertar un valor sin actualizar la clave primaria, fallará Insert INTO dbo.CUSTOMER(tipo_cliente) VALUES ('teléfono'), ('web') select * from dbo.CUSTOMER
Pero el esquema de la tabla establece que el CUSTOMER_NO no puede ser nulo:
Como resultado, aparece el siguiente error:
En resumen, le hemos llevado a través de un número de diferentes pasos, y algunas de las advertencias que usted necesita entender antes de insertar los datos.
Lo más importante es que si se tiene una clave primaria en una tabla, al hacer inserciones se necesita un valor suministrado que no sea un duplicado y también que no se suministren valores vacíos para esa columna.