Tabla de contenidos
En este artículo os vamos a mostrar cuántas maneras hay de ejecutar la instrucción INSERT SQL, en la que vamos a mostrar tablas, ejemplos y casos de uso. ¡Vamos a ello!
INSERT SQL: Introducción
La función INSERT nos servirá para poder insertar uno o miles registros o datos a una base de datos. En esta instancia, podemos añadir datos directamente usando herramientas como puede ser SSMS (SQL Server Management Studio), Azure Data Studio o por cualquier otra aplicación de terceros. Por esta razón en SQL, la instrucción que vamos a usar para insertar registros es: SQL INSERT INTO.
Supongamos que, tenemos una tabla ALUMNOS con los siguientes campos:
ID | Nombre | Apellidos | Telefono | |
1 | Alfredo | Martín | [email protected] | 987654321 |
2 | Lucas | Santos | [email protected] | 987654320 |
3 | Thor | Pérez | [email protected] | 987654319 |
4 | Spike | Rodríguez | [email protected] | 654987318 |
Añadir alumnos indicando las columnas
Para poder añadir nuevos registros a la base de datos lo explicaremos por puntos:
- Utilizamos la sentencia INSERT INTO.
- Mostramos en qué tabla queremos realizar los registros.
- Indicamos qué columnas de la estructura de la tabla vamos a utilizar.
- Añadimos los datos respetando el orden de las columnas, previamente con VALUES.
Ahora lo ponemos en práctica:
INSERT INTO alumnos (Nombre, Apellidos, Email)
VALUES ('Antonio','Fernández','[email protected]');
ID | Nombre | Apellidos | Telefono | |
1 | Alfredo | Martín | [email protected] | 987654321 |
2 | Lucas | Santos | [email protected] | 987654320 |
3 | Thor | Pérez | [email protected] | 987654319 |
4 | Spike | Rodríguez | [email protected] | 654987318 |
5 | Antonio | Fernández | [email protected] | NULL |
Se ha añadido los datos del registro número 6, que está en color azul. Estos son los cambios que previamente se harán con el INSERT
Añadir alumnos sin indicar las columnas
En este tipo de inserción de datos, no es necesario indicar qué columnas vamos a utilizar, ya que vamos a tener que introducir todas las columnas que tenga la tabla. (En este caso ID, Nombre, Apellidos, Email y Teléfono).
INSERT INTO alumnos
VALUES ('Virginia','Martínez',NULL,NULL);
ID | Nombre | Apellidos | Telefono | |
1 | Alfredo | Martín | [email protected] | 987654321 |
2 | Lucas | Santos | [email protected] | 987654320 |
3 | Thor | Pérez | [email protected] | 987654319 |
4 | Spike | Rodríguez | [email protected] | 654987318 |
5 | Antonio | Fernández | [email protected] | NULL |
6 | Virginia | Martínez | NULL | NULL |
Añadir alumnos indicando las columnas de otra consulta
A diferencia de los dos ejemplos de arriba, vamos a añadir registros utilizando las columnas «nombre», «apellidos», «email», «telefono» de la tabla ALUMNOS de TODOS los registros que tiene la tabla ALUMNOSANTIGUOS con las columnas de «nombreAlumno», «apellidoAlumno», «emailAlumno» y «telefonoAlumno».
Es útil cuando tenemos que añadir bastantes registros y no tenemos que repetir varias sentencias como las de arriba.
INSERT INTO alumnos (nombre, apellidos, email, telefono)
SELECT nombreAlumno, apellidoAlumno, emailAlumno, telefonoAlumno
FROM alumnosAntiguos
ID | Nombre | Apellidos | País | Telefono | |
7 | Amanda | López | España | [email protected] | 654654654 |
8 | Irene | González | México | [email protected] | 653653653 |
9 | Yoselin | García | Honduras | [email protected] | 652652652 |
En la tabla inferior, veremos cómo se han añadido todos los registros de ALUMNOSANTIGUOS a ALUMNOS, sin utilizar todas las columnas.
ID | Nombre | Apellidos | Telefono | |
1 | Alfredo | Martín | [email protected] | 987654321 |
2 | Lucas | Santos | [email protected] | 987654320 |
3 | Thor | Pérez | [email protected] | 987654319 |
4 | Spike | Rodríguez | [email protected] | 654987318 |
5 | Antonio | Fernández | [email protected] | NULL |
6 | Virginia | Martínez | NULL | NULL |
7 | Amanda | López | [email protected] | 654654654 |
8 | Irene | González | [email protected] | 653653653 |
9 | Yoselin | García | [email protected] | 652652652 |
Añadir alumnos sin indicar las columnas de otra consulta
Sucede el mismo caso que en el segundo ejemplo, vamos a tener que añadir todas las columnas de la tabla ALUMNOSANTIGUOS a ALUMNOS.
INSERT INTO alumnos
SELECT nombreAlumno, apellidoAlumno, emailAlumno, telefonoAlumno
FROM alumnosAntiguos
ID | Nombre | Apellidos | País | Telefono | |
7 | Amanda | López | España | [email protected] | 654654654 |
8 | Irene | González | México | [email protected] | 653653653 |
9 | Yoselin | García | Honduras | [email protected] | 652652652 |
ID | Nombre | Apellidos | Telefono | |
1 | Alfredo | Martín | [email protected] | 987654321 |
2 | Lucas | Santos | [email protected] | 987654320 |
3 | Thor | Pérez | [email protected] | 987654319 |
4 | Spike | Rodríguez | [email protected] | 654987318 |
5 | Antonio | Fernández | [email protected] | NULL |
6 | Virginia | Martínez | NULL | NULL |
7 | Amanda | López | [email protected] | 654654654 |
8 | Irene | González | [email protected] | 653653653 |
9 | Yoselin | García | [email protected] | 652652652 |
Tip adicional
Cuando tenemos un campo IDENTITY, que es un campo que se autogenera (por ejemplo, un identificador de la tabla), suele ser PRIMARY KEY. Disponemos de 2 opciones:
- Debemos de tener en cuenta que tenemos que omitir ese campo.
- Declarar antes y después de la instrucción INSERT la función:
SET IDENTITY_INSERT alumnos ON
INSERT INTO alumnos
SELECT nombreAlumno, apellidoAlumno, emailAlumno, telefonoAlumno
FROM alumnosAntiguos
SET IDENTITY_INSERT alumnos OFF
Debemos abrir y cerrar la función con ON y OFF.
¿Te ha sido útil este artículo?
Te recomendamos que visites la categoría de SQL, ya que tenemos más utilidades que te podrán servir. También puedes practicar las consultas a través de W3Schools 😉
Este artículo ha sido creado y adaptado por el artículo de SQLShack.