Hstore

O tipo de dados hstore no PostgreSQL é usado para armazenar pares de chave-valor onde tanto as chaves quanto os valores são strings. É uma forma eficiente de armazenar dados semiestruturados onde você precisa de flexibilidade, especialmente quando os tipos de dados dos valores podem variar.

Para começar a usar o tipo de dados hstore, você precisa garantir que a extensão hstore esteja habilitada em seu banco de dados. Você pode habilitá-la usando o seguinte comando:

CREATE EXTENSION IF NOT EXISTS hstore;

Aqui estão alguns exemplos básicos de como trabalhar com o tipo de dados hstore:

1. Criar uma tabela com um campo do tipo hstore:

CREATE TABLE produtos (
    id SERIAL PRIMARY KEY,
    propriedades HSTORE
);

Neste exemplo, propriedades é um campo do tipo hstore que armazenará pares de chave-valor.

2. Inserir dados na tabela com campos hstore:

INSERT INTO produtos (propriedades)
VALUES ('"nome"=>"Produto 1", "preco"=>"100.00"'),
       ('"nome"=>"Produto 2", "preco"=>"150.00"');

3. Consultar dados hstore:

-- Selecionar todos os produtos
SELECT * FROM produtos;

-- Selecionar produtos com um determinado nome
SELECT * FROM produtos WHERE propriedades->'nome' = 'Produto 1';

4. Atualizar dados hstore:

-- Atualizar o preço de um produto
UPDATE produtos
SET propriedades = propriedades || '"preco"=>"120.00"'
WHERE propriedades->'nome' = 'Produto 1';

5. Consultar chaves e valores específicos:

-- Selecionar todas as chaves de propriedades
SELECT skeys(propriedades) FROM produtos;

-- Selecionar todos os valores de propriedades
SELECT svals(propriedades) FROM produtos;

Estes são exemplos básicos de como usar o tipo de dados hstore no PostgreSQL. O tipo hstore oferece flexibilidade para armazenar dados semiestruturados e é útil em cenários onde você precisa de um formato de dados dinâmico.