Volver a la lista de artículos Artículos
Lectura de 6 minutos

¿Qué es la sentencia INSERT en SQL?

La sentencia INSERT en SQL se utiliza para añadir nuevos datos a su base de datos. Este artículo le explicará cómo utilizarla y le mostrará ejemplos prácticos a lo largo del camino.

Cuando aprendes SQL, te centras en obtener datos de una base de datos, trabajando principalmente con SELECT. En SQL, también hay sentencias que te permiten modificar datos en una base de datos.

La primera es la sentencia INSERT: añade datos a una tabla. Los datos se añaden como una nueva fila en la tabla.

La sentencia SQL INSERT inserta una o más filas de datos en una tabla. También se puede ver INSERT escrito como INSERT INTO, pero ambos se comportan igual. La inclusión de INTO es opcional en la mayoría de las variantes de SQL.

La sentencia INSERT se considera un comando de manipulación de datos de SQL. Los otros comandos son UPDATE y DELETE, que puedes conocer en este curso accesible de Cómo Insertar, Actualizar o Eliminar Datos en SQL de LearnSQL.es.

Sintaxis de SQL INSERT

La sintaxis de SQL INSERT tiene dos formas:

  1. Usando INSERT con nombres de columnas.
  2. Usando INSERT sin nombres de columnas.

Veamos las sutiles diferencias entre ambas y las reglas que se aplican a cada sintaxis.

Sintaxis SQL INSERT con nombres de columnas

La sintaxis para usar INSERT con nombres de columnas especificados es la siguiente:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Cuando se especifican columnas de este modo, las columnas y los valores deben corresponder en orden, tipo de datos y número. Si se inserta un valor de cadena, debe ir entre comillas. Los valores numéricos no necesitan ir entre comillas.

Por ejemplo, imagine que tiene una tabla con las siguientes columnas:

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Debemos escribir nuestra consulta SQL para tener en cuenta el tipo de datos de cada columna:

INSERT INTO person (name, age, date_of_birth)
VALUES ('John Doe', 25, '1996-02-18');

Al incluir nombres de columnas como este, puede omitir ciertos valores dependiendo de la definición de la tabla. Por ejemplo, si las columnas de la tabla permiten los valores de NULL, o se han configurado con valores por defecto, puede excluir estas columnas de su sentencia INSERT por completo.

Imagínese que se ha creado la siguiente tabla, con un valor DEFAULT para la columna date_of_birth:

CREATE TABLE person (name varchar(255), age int, date_of_birth date DEFAULT ('1900-01-01'));

Ahora, si escribiera la siguiente consulta, excluyendo la columna date_of_birth por completo de nuestra sentencia INSERT INTO, se rellenará con el valor DEFAULT en lugar de con NULL.

INSERT INTO person (name, age)
VALUES ('John Doe', 25);

Vea el resultado de la INSERT seleccionando en su tabla:

SELECT * from person
nameagedate_of_birth
John Doe251900-01-01

Es hora de que veamos cómo cambia la sintaxis cuando se utiliza INSERT sin especificar los nombres de las columnas.

Sintaxis SQL INSERT sin nombres de columnas

La sintaxis para usar INSERT sin nombres de columnas es la siguiente:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Si eliges no listar los nombres de las columnas, debes insertar valores en cada columna de tu tabla, asegurándote de mantener el orden correcto mientras lo haces. Puedes encontrar el orden correcto de las columnas mirando el esquema de información de tu tabla.

Apliquemos esta sintaxis a un ejemplo práctico. Creemos una tabla simple como hicimos antes:

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Esto crea nuestra tabla, pero ¿cómo añadimos varias filas de datos a ella sin especificar los nombres de las columnas? Puede escribir simplemente esta consulta:

INSERT INTO person
VALUES ('John Doe', 25, '1996-02-18'),
VALUES ('Ben Watson', 31, '1990-04-16'),
VALUES ('Lucy Smith', 27, '1993-06-29');

Observe cómo los valores aparecen en el orden de la definición de la tabla: primero, el nombre de la persona, luego la edad y, por último, la fecha de nacimiento. No puede omitir ninguna columna con esta sintaxis; debe proporcionar un valor para cada columna. Tenga en cuenta que las comas se utilizan para separar los valores dentro de cada fila, así como para separar los valores de una fila de los de otra, con un punto y coma para terminar la declaración. Así es como podemos añadir varias filas sin necesidad de utilizar los nombres de las columnas.

Cómo insertar en una tabla existente

Para estos ejemplos, imaginemos que tenemos una tabla existente llamada people. Contiene el nombre, el apellido y la edad de la persona.

people

first_namelast_nameage
JohnSmith23
MaryConway54
PaulJohnson33

Entonces, ¿cómo añadimos una nueva persona a esta tabla? Mire esta consulta SQL a continuación:

INSERT INTO people (first_name, last_name, age)
VALUES ('Sandra', 'Cruz', 28);

Observe nuestra adherencia a las reglas que mencionamos anteriormente. El orden, el tipo de datos y el número de columnas y valores coinciden. Los valores de la cadena también están encerrados entre comillas para first_name y last_name. Si no se incluyen estas comillas, se produciría un error.

Hemos añadido con éxito una persona a nuestra tabla. Pero imagina que tuviéramos que añadir varias personas. Escribir varias sentencias INSERT nos llevaría mucho tiempo. Afortunadamente, hay una manera mejor.

Veamos un ejemplo de adición de múltiples filas de datos a nuestra tabla, donde no especificamos los nombres de las columnas.

INSERT INTO people
VALUES
	('Jacob', 'Ward', 40),
	('Stacey', 'Tuite', 65),
('Thomas', 'Rice', 43);

Puede ver cuánto tiempo puede ahorrar esta sintaxis si planea añadir muchas filas a su tabla a la vez.

Para obtener más ejemplos y una explicación en profundidad, puedes considerar tomar un curso que se centre en el tema. Consulte esta publicación del blog que explica los beneficios de inscribirse en un curso especializado en el tema de los comandos INSERT, UPDATE, y DELETE. Al replicar estos ejemplos, es importante entender cómo los permisos pueden afectar el uso de la sentencia INSERT.

Permisos SQL INSERT

Se necesita un permiso INSERT para insertar datos en una base de datos. Es posible que sólo tengas permiso para seleccionar los datos, especialmente si estás trabajando con una base de datos de la que no eres el administrador. Si este es el caso, no podrás insertar datos en una tabla y es posible que tengas que pedir estos privilegios al administrador de la base de datos.

Añadir nuevos datos a sus tablas con SQL INSERT

Con esto concluye nuestro artículo sobre SQL INSERT. Hemos hablado de las sutiles diferencias entre añadir una o varias filas a su tabla, lo que le permitirá añadir datos de la manera más eficaz. También hemos hablado de los permisos que puedes necesitar si no eres el administrador de tu base de datos. Siéntase libre de marcar esta página para que pueda volver a consultarla fácilmente. Hemos mencionado cómo INSERT es una de las formas de alterar los datos dentro de sus tablas. Los otros comandos que cambian los datos son UPDATE y DELETE. Aprende más sobre ellos en este artículo sobre INSERT, UPDATE y DELETE.