PostgreSQL-实用功能性语句
(2017-06-01 银河统计)本篇文章对工作中使用的Postgres实用语句进行总结,方便查找和复用。
目录概览
6)PostgreSQL中Raise Notice用来输出消息文本的语法格式
SELECT * FROM pg_language;
SELECT lanpltrusted FROM pg_language WHERE lanname LIKE 'c';
SELECT * FROM pg_language WHERE lanname LIKE 'plr';
UPDATE pg_language SET lanpltrusted = true WHERE lanname LIKE 'plr';
1)查询表中重复数据
SELECT * FROM abdata
WHERE "Id"
NOT IN (
SELECT max("Id")
FROM abdata
GROUP BY "Name", "Des", "Price"
);
2)删除表中重复数据
DELETE * FROM abdata
WHERE "Id"
NOT IN (
SELECT max("Id")
FROM abdata
GROUP BY "Name", "Des", "Price"
);
~~ 等效于 LIKE
~~* 对应 ILIKE
!~~ NOT LIKE
!~~* NOT ILIKE
~ 匹配正则表达式,大小写相关 'thomas' ~ '.*thomas.*'
~* 匹配正则表达式,大小写无关 'thomas' ~* '.*Thomas.*'
!~ 不匹配正则表达式,大小写相关 'thomas' !~ '.*Thomas.*'
!~* 不匹配正则表达式,大小写无关 'thomas' !~* '.*vadim.*'
CREATE or replace FUNCTION drop_table() RETURNS void AS $$
DECLARE
tmp VARCHAR(512);
DECLARE names CURSOR FOR
select tablename from pg_tables where schemaname='public';
BEGIN
FOR stmt IN names LOOP
tmp := 'DROP TABLE '|| quote_ident(stmt.tablename) || ' CASCADE;';
RAISE NOTICE 'notice: %', tmp;
-- EXECUTE 'DROP TABLE '|| quote_ident(stmt.tablename) || ' CASCADE;';
EXECUTE 'DROP TABLE '|| quote_ident(stmt.tablename) || ';';
END LOOP;
RAISE NOTICE 'finished .....';
END;
$$ LANGUAGE plpgsql;
select drop_table();
-- 然后对于单独的表,可以采用TRUNCATE TABLE name这样的方法。
select schemaname,tablename,pg_relation_size(schemaname||'.'||tablename) as tabsize from pg_tables order by 3 desc;
select schemaname,tablename,pg_table_size(schemaname||'.'||tablename) as tabsize from pg_tables order by 3 desc;
6)PostgreSQL中Raise Notice用来输出消息文本的语法格式
do language plpgsql
$$
declare
v_msg character varying := 'Hello World!';
begin
raise notice '%', v_msg;
end
$$;

浙公网安备 33010602011771号