【PostgreSQL】PostgreSQL hstore型別資料增刪改查
1、登陸資料庫
psql -U postgres -d postgres
2、建立資料庫hstore,並安裝extension
create database hstore;
create extension hstore;
3、建表
create table users(
id serial,
info hstore
);
4、插入資料
insert into users values(1,'"name"=>"zhangsan","age"=>"20"');
5、查詢資料
select info from users;
6、增加資料
update users set info = info || '"company"=>"Qunar"' :: hstore;
7、刪除資料
update users set info = delete(info, 'company');
8、將key值轉為set輸出。
select skeys(info) from users;
9、將key值轉為array輸出。
select akeys(info) from users;
10、將value值轉為set輸出。
select svals(info) from users;
11、將value值轉為array輸出。
select avals(info) from users;
12、將hstore值轉為array輸出。
select avals(info) from users;
13、查詢age為20的所有記錄。
查詢之前再入兩條資料
insert into users values(1,'"name"=>"lisi","age"=>"20"');
insert into users values(1,'"name"=>"wangwu","age"=>"21"');
查詢
select * from users where info@'age=>20';
文件參考:http://www.postgresql.org/docs/current/static/hstore.html
PostgreSQL HSTORE型別
提要:在本教程中,我們將向您展示如何使用 PostgreSQL HSTORE 資料型別。
hstore 模組實現了將鍵/值對
儲存到單個值的 HSTORE
資料型別。注意,HSTORE
中的 鍵
和 值
都只能是字串。
啟用 hstore 模組
使用 HSTORE
資料型別之前,需要先啟用 hstore 模組:
CREATE EXTENSION hstore;
建立包含 HSTORE
資料型別的表
CREATE TABLE books ( id serial primary key, title VARCHAR (255), attr hstore );
插入資料
INSERT INTO books (title, attr) VALUES ( 'PostgreSQL 輕鬆學', '"paperback" => "685", "publisher" => "sjk66.com", "language" => "簡體中文", "ISBN-13" => "1234567890123", "weight" => "412 克"' );
查詢指定鍵的資料
SELECT attr -> 'ISBN-13' AS isbn FROM books;
在 WHERE 中使用鍵
SELECT attr -> 'weight' AS weight FROM books WHERE attr -> 'ISBN-13' = '1234567890123'
給已存在的資料新增鍵值對
UPDATE books SET attr = attr || '"freeshipping"=>"yes"' :: hstore;
更新鍵值對
UPDATE books SET attr = attr || '"freeshipping"=>"no"' :: hstore;
刪除鍵值對
UPDATE books SET attr = delete(attr, 'freeshipping');
判斷 HSTORE
欄位是否包含某個鍵
SELECT title, attr->'publisher' as publisher, attr FROM books WHERE attr ? 'publisher';
判斷是否含有某鍵值對
SELECT title FROM books WHERE attr @> '"weight"=>"412 克"' :: hstore;
判斷是否包含多個鍵
SELECT title FROM books WHERE attr ?& ARRAY [ 'language', 'weight' ];
獲取所有鍵
SELECT akeys (attr) FROM books;
或
SELECT skeys (attr) FROM books;
獲取所有值
SELECT avals (attr) FROM books;
或
SELECT svals (attr) FROM books;
轉換成 JSON
SELECT title, hstore_to_json (attr) json FROM books;
轉換成記錄集
SELECT title, (EACH(attr) ).* FROM books;
不知道能不能當h