mrapp=# select 1 as a union select 2 as a union select 3 as a;
a
---
1
2
3
(3 行记录)
mrapp=# select array_agg(t.a) from (select 1 as a union select 2 as a union sele
ct 3 as a) as t;
array_agg
-----------
{1,2,3}
(1 行记录)
3. PG中有时候会碰到一个父表下面带了一堆的字表或者关联表,要删除的话 需要一个一个先将字表或关系先删除掉,可以在删除的时候加上关键字: cascade 可以将和当前关联的东西一起删除掉
drop table XX cascade ;
drop server XX cascade;
drop extension XX cascade;
4、统计一个库中的所有表的行数和表大小
SELECT CASE
WHEN t.row_total = t.row_seq THEN
REPLACE(sql_content, ' union all ', ') a order by 2 desc;')
WHEN t.row_seq = 1 THEN
'select * from(' || sql_content
ELSE
sql_content
END sql_content
FROM (SELECT COUNT(*) over() row_total,
row_number() over() row_seq,
'SELECT ''' || tablename ||
''' 表名, count(*) 表行数,pg_size_pretty(pg_total_relation_size(''' ||
tablename || '''::regclass)) 表总大小 from ' || tablename ||
' union all ' sql_content
FROM pg_tables
WHERE schemaname = 'public') t
ORDER BY t.row_seq;