La sentencia INSERT
de PostgreSQL permite insertar una nueva fila en una tabla.
Esta es la sintaxis básica de la sentencia INSERT
:
INSERT INTO table1(column1, column2, …)
VALUES (value1, value2, …);
En esta sintaxis:
- En primer lugar, especifique el nombre de la tabla
(table1
) en la que desea insertar datos después de las palabras claveINSERT INTO
y una lista de columnas separadas por comas (colum1, column2, ....)
. - En segundo lugar, proporcione una lista de valores separados por comas entre paréntesis (
valor1, valor2, ...)
después de la palabra claveVALUES
. Las listas de columnas y valores deben estar en el mismo orden.
La sentencia INSERT
devuelve una etiqueta de comando con la siguiente forma:
INSERT oid count
En esta sintaxis:
- El
OID
es un identificador de objeto. PostgreSQL utiliza elOID
internamente como clave primaria para sus tablas de sistema. Típicamente, la sentenciaINSERT
devuelve elOID
con un valor de 0. - El
count
es el número de filas que la sentenciaINSERT
ha insertado con éxito.
Si inserta una nueva fila en una tabla con éxito, el retorno típicamente se verá como:
INSERT 0 1
Cláusula RETURN¶
La sentencia INSERT
tiene una cláusula RETURNING
opcional que devuelve la información de la fila insertada.
Si desea devolver toda la fila insertada, utilice un asterisco(*
) después de la palabra clave RETURNING
:
INSERT INTO table1(column1, column2, …)
VALUES (value1, value2, …)
RETURNING *;
Si desea devolver alguna información sobre la fila insertada, puede especificar una o más columnas después de la cláusula RETURNING
.
Por ejemplo, la siguiente sentencia devuelve el id
de la fila insertada:
INSERT INTO table1(column1, column2, …)
VALUES (value1, value2, …)
RETURNING id;
Para renombrar el valor devuelto, se utiliza la palabra clave AS
seguida del nombre de la salida. Por ejemplo:
INSERT INTO table1(column1, column2, …)
VALUES (value1, value2, …)
RETURNING output_expression AS output_name;
Para insertar varias filas en una tabla simultáneamente, puede utilizar la sentencia INSERT multiple rows.
Ejemplos de sentencias INSERT de PostgreSQL¶
La siguiente sentencia crea una nueva tabla llamada enlaces
para la demostración:
CREATE TABLE links (
id SERIAL PRIMARY KEY,
url VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description VARCHAR (255),
last_update DATE
);
Tenga en cuenta que aprenderá a crear una nueva tabla en el tutorial siguiente. En este tutorial, sólo necesita ejecutarlo para crear una nueva tabla.
Ejemplo básico de sentencia INSERT de PostgreSQL¶
El siguiente ejemplo utiliza la sentencia INSERT
para insertar una nueva fila en la tabla links
:
INSERT INTO links (url, name)
VALUES('https://www.postgresqltutorial.com','PostgreSQL Tutorial');
La sentencia devuelve el siguiente resultado:
INSERT 0 1
Para insertar datos de caracteres, debe encerrarlos entre comillas simples ('), por ejemplo 'Tutorial PostgreSQL'.
Si omite las columnas no nulas en la sentencia INSERT
, PostgreSQL emitirá un error. Pero si omite la columna nula, PostgreSQL utilizará el valor por defecto de la columna para la inserción.
En este ejemplo, la descripción
es una columna anulable porque no tiene una restricción NOT NULL
. Por lo tanto, PostgreSQL utiliza NULL
para insertar en la columna description
.
PostgreSQL genera automáticamente un número secuencial para la columna serial, por lo que no es necesario proporcionar un valor para la columna serial en la sentencia INSERT
.
La siguiente sentencia SELECT
muestra el contenido de la tabla de enlaces
:
SELECT * FROM links;
Salida:
id | url | name | description | last_update
----+------------------------------------+---------------------+-------------+-------------
1 | https://www.postgresqltutorial.com | PostgreSQL Tutorial | null | null
(1 row)
Inserción de una cadena de caracteres que contiene una comilla simple¶
Si desea insertar una cadena de caracteres que contenga una comilla simple (')
, como O'Reilly Media
, deberá utilizar una comilla simple adicional (')
para escaparla. Por ejemplo
INSERT INTO links (url, name)
VALUES('http://www.oreilly.com','O''Reilly Media');
Salida:
INSERT 0 1
La siguiente sentencia verifica la inserción:
SELECT * FROM links;
Salida:
id | url | name | description | last_update
----+------------------------------------+---------------------+-------------+-------------
1 | https://www.postgresqltutorial.com | PostgreSQL Tutorial | null | null
2 | http://www.oreilly.com | O'Reilly Media | null | null
(2 rows)
Insertar un valor de fecha¶
Para insertar una fecha en una columna DATE
, utilice la fecha en el formato 'AAAA-MM-DD'.
Por ejemplo, la siguiente sentencia inserta una nueva fila con una fecha especificada en la tabla de enlaces
:
INSERT INTO links (url, name, last_update)
VALUES('https://www.google.com','Google','2013-06-01');
Salida:
INSERT 0 1
La siguiente sentencia recupera todos los datos de la tabla de enlaces para verificar la inserción:
id | url | name | description | last_update
----+------------------------------------+---------------------+-------------+-------------
1 | https://www.postgresqltutorial.com | PostgreSQL Tutorial | null | null
2 | http://www.oreilly.com | O'Reilly Media | null | null
3 | https://www.google.com | Google | null | 2013-06-01
(3 rows)
Obtener el último ID insertado¶
Para obtener el último ID insertado de la fila insertada, utilice la cláusula RETURNING
de la sentencia INSERT
.
Por ejemplo, la siguiente sentencia inserta una nueva fila en la tabla de enlaces
y devuelve el último ID insertado:
INSERT INTO links (url, name)
VALUES('https://www.postgresql.org','PostgreSQL')
RETURNING id;
Salida:
id
----
4
(1 row)
Resumen¶
- Utilice la sentencia
INSERT
de PostgreSQL para insertar una nueva fila en una tabla. - Utilice la cláusula
RETURNING
para obtener las filas insertadas.