A instrução
INSERT
no PostgreSQL permite inserir uma nova linha em uma tabela.
O seguinte ilustra a sintaxe mais básica da instrução INSERT:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …);
Nesta sintaxe:
- Primeiro, especifique o nome da tabela (
table_name
) na qual deseja inserir dados após aspalavras - chave
INSERT INTO
e uma lista de colunas separadas por vírgulas (colum1, column2, ....
). - Segundo, forneça uma lista de valores separados por vírgulas entre parênteses
(value1, value2, ...)
após a palavra – chaveVALUES
. As colunas e os valores nas listas de colunas e valores devem estar na mesma ordem.
A instrução INSERT
retorna uma tag de comando com o seguinte formato:
INSERT oid count
O OID
é um identificador de objeto. O PostgreSQL usa o internamente
OID
como chave primária para suas tabelas de sistema. Normalmente, a instrução
INSERT
retorna OID
com o valor 0. O count
é o número de linhas que a instrução
INSERT
inseriu com êxito.
Cláusula RETURNING
A instrução INSERT
também possui uma cláusula
RETURNING
opcional que retorna as informações da linha inserida.
Se você quiser retornar a linha inteira inserida, use um asterisco ( *
) após a palavra-chave
RETURNING
:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …)
RETURNING *;
Se você deseja retornar apenas algumas informações da linha inserida, você pode especificar uma ou mais colunas após a cláusula
RETURNING
.
Por exemplo, a seguinte instrução retorna o id
da linha inserida:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …)
RETURNING id ;
Para renomear o valor retornado, você usa a palavra-chave AS
seguida pelo nome da saída. Por exemplo:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …)
RETURNING output_expression AS output_name;
Exemplos de instruções INSERT do PostgreSQL
A seguinte declaração cria uma nova tabela chamada links
para a demonstração:
DROP TABLE IF EXISTS links;
CREATE TABLE links (
id SERIAL PRIMARY KEY ,
url VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description VARCHAR (255),
last_update DATE
);
Observe que você aprenderá a criar uma nova tabela no tutorial subsequente. Neste tutorial, você só precisa executá-lo para criar uma nova tabela.
1) PostgreSQL INSERT – Inserindo uma única linha em uma tabela
A seguinte instrução insere uma nova linha na tabela links
:
INSERT INTO links ( url , name )
VALUES ('https://www.postgresqltutorial.com','PostgreSQL Tutorial');
A instrução retorna a seguinte saída:
INSERT 0 1
Para inserir dados de caracteres , coloque-os entre aspas simples (‘), por exemplo 'PostgreSQL Tutorial'
.
Se você omitir as colunas obrigatórias na instrução INSERT
, o PostgreSQL emitirá um erro. Caso você omita uma coluna opcional, o PostgreSQL usará o valor padrão da coluna para inserir.
O PostgreSQL gera automaticamente um número sequencial para a coluna serial para que você não precise fornecer um valor para a coluna serial no comando INSERT
.
A seguinte declaração SELECT
mostra o conteúdo da tabela links
:
SELECT * FROM links;
2) PostgreSQL INSERT – Inserindo string de caracteres que contém aspas simples
Se você deseja inserir uma string que contém uma aspa simples ( '
), como O'Reilly Media
, você deve usar uma aspa simples adicional ( '
) para escapar dela. Por exemplo:
INSERT INTO links ( url , name )
VALUES ('http://www.oreilly.com','O''Reilly Media');
Resultado:
INSERT 0 1
A seguinte declaração verifica a inserção:
3) PostgreSQL INSERT – Inserindo um valor de data
Para inserir um valor de data em uma coluna com o tipo
DATE
, você usa a data no formato 'YYYY-MM-DD'
.
A instrução a seguir insere uma nova linha com uma data especificada na links
tabela:
INSERT INTO links ( url , name , last_update)
VALUES ('https://www.google.com','Google','2013-06-01');
Linguagem de código: SQL (Structured Query Language) ( sql )
Resultado:
INSERT 0 1
4) PostgreSQL INSERT- Obtendo o último id de inserção
Para obter o último id de inserção da linha inserida, você usa a cláusula RETURNING da instrução INSERT
.
Por exemplo, a instrução a seguir insere uma nova linha na tabela links
e retorna o último id de inserção:
INSERT INTO links ( url , name )
VALUES ('http://www.postgresql.org','PostgreSQL')
RETURNING id ;