Você já utilizou a cláusula SET em um comando INSERT? No postgresql, com certeza, não, pois a mesma não está implementada até a versão atual, a 9.3. Esta sintaxe pode ser descrita conforme aparece abaixo:
INSERT INTO nome_tabela SET coluna1 = expressão1, coluna2 = expressão2, .... ;
O fato é que esta sintaxe pouco acrescentaria em termos de valor. É pouco conhecida e pouco utilizada, embora eu acredite que esteja implementada em outros SGBDs. Sua funcionalidade seria idêntica à do comando INSERT já implementado, agregando possivelmente um pouco em termos de compatibilidade, embora não me recorde de ferramentas ou sistemas que utilizem esta sintaxe nas minhas andanças.
Então porque estou comentando o fato do postgresql não implementar esta sintaxe?
Bom, justifico esta postagem por ter encontrado esta sintaxe em provas de concursos públicos, como nos exemplos abaixo. Não sei se a cláusula SET no INSERT faz parte do padrão ISO, mas não deixa de ser uma limitação, ainda que bem pequena.
Exemplos:
Prova:
FCC - 2012 - MPE-PE - Analista Ministerial - Informática
Disciplina:
Banco de Dados | Assuntos: SQL;
Após
a execução dos seguintes comandos SQL:
CREATE
TABLE livros (id INT, nome TEXT);
INSERT
INTO livros VALUES(1,'livro 1');
INSERT
INTO livros (2,'livro 2');
INSERT
INTO livros SET id=3,nome='livro 3';
SELECT
id FROM livros;
O
resultado da consulta para a coluna id será
a)
3, apenas. b) 1, apenas. c) 1, 2 e 3. d) 2 e 3, apenas. e) 1 e 3,
apenas.
Prova:
FCC - 2012 - MPE-PE - Técnico Ministerial - Informática
Disciplina:
Banco de Dados | Assuntos: SQL;
Analise
os seguintes comandos em SQL:
CREATE
TABLE nota (id INT PRIMARY KEY,data TEXT,valor REAL);
INSERT
INTO nota SET id=1,data='01012012',valor=15.5;
INSERT
INTO nota SET id=1,data='03022012',valor=11.5;
INSERT
INTO nota SET id=2,data='01042012',valor=25.5;
INSERT
INTO nota SET id=20,data='10062012',valor=12.5;
SELECT
COUNT(*) FROM nota WHERE valor < 20;
O
resultado para a consulta efetuada será:
a)
12.5 b) 3 c) 11.5, 12.5 e 15.5 d) 2 e) 12.5 e 15.5