Postgresql数据库中的SQL语句总结

1、数据分页(limit)

select * from 表名 limit 取长度 offset 偏移量(0开始)

select * from tableName limit 10 offset 0

效果图如下:
在这里插入图片描述

2、单一字段分组统计(group by)

SELECT 分组值列, 统计数列 FROM 表名 t GROUP BY 字段一

SELECT  t.field1 as field1, sum(1) as len FROM tableName t GROUP BY t.field1

效果图如下:
在这里插入图片描述

3、 组合字段分组统计(group by 和 having组合)

SELECT 分组值列,过滤字段, 统计数列 FROM table t GROUP BY 字段一,过滤字段 HAVING 过滤字段 = ‘过滤值’

SELECT t.field1 as field1,t.field2 as field2, sum(1) as len FROM tableName t GROUP BY t.field1,t.field2 HAVING t.field2 = '过滤值' 

效果图如下:
在这里插入图片描述

4、 备份语句

pg_dump -h 127.0.0.1 --port 5432 --username "postgres" --role "postgres" --dbname "em"  --format custom --blobs -W --encoding UTF8 --verbose --file "/var/lib/pgsql/11/backups/em_edata.backup" --schema "edata"


// psql 登录
psql -U 用户名 -h ip -p 端口 -d 数据库名
psql -U postgres -h 127.0.0.1 -p 5432 -d em

// 删除模式(登录psql)
DROP SCHEMA 模式名 CASCADE;

// 授权
-- 授予用户user_name对模式schema_name的使用权限
GRANT USAGE ON SCHEMA schema_name TO user_name;
 
-- 授予用户user_name对模式schema_name中所有表的SELECT权限
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO user_name;
 
-- 授予用户user_name对模式schema_name中所有序列的使用权限
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA schema_name TO user_name;
 
-- 授予用户user_name对模式schema_name中所有函数的执行权限
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name TO user_name;
// 数据库备份命令

pg_dump  -U 用户名 -h ip -p 端口 数据库名 > 备份文件名称
pg_dump  -U postgres -h 192.168.0.1 -p 5432 em > em_backup_file_20230613

// 恢复命令
./psql  -U 用户名 -h ip -p 端口 -d pre_gstanze -f  备份文件名称
./psql  -U postgres -h 192.168.0.1 -p 5432 -d em -f  em_backup_file_20230613


--备份schema
pg_dump -U 用户名 -h ip -p 端口 -d pre_gstanze -f  -d 数据库名-n 模式名> 备份文件名称
pg_dump -U postgres -h 192.168.0.1 -p 5432 -d em -n stdb > em_stdb_backup_file_20230613

--恢复schema
./psql em_stdb_backup_file_20230613

-- 自定义导出格式
pg_dump -U 用户名 -h ip -p 端口 -n 模式名 -d 数据库名称 --format custom --blobs  --encoding UTF8 --verbose --file "备份文件路径"
pg_dump -U postgres  -h 127.0.0.1 -p 5432 -n data -d dbname --format custom --blobs  --encoding UTF8 --verbose --file "/home/data.backup"

-- 自定义格式导入
pg_restore  --dbname=postgresql://用户名:密码@ip:端口/数据名 --role "postgres"    --verbose "备份文件路径"  > 日志路径 2>&1
pg_restore  --dbname=postgresql://postgres:postgres@127.0.0.1:5432/dbname --role "postgres"    --verbose "/home/data.backup"  > /var/lib/pgsql/db.log 2>&1

// 修改数据库的账户密码
psql -U postgres
ALTER USER postgres WITH PASSWORD ‘new_password’;

5、 表及字段说明

SELECT T
	.TABLE_NAME 表名,
	T.table_schema 表说明,
	C.COLUMN_NAME 字段名,
	C.table_schema 字段说明 
FROM
	information_schema.tables T,
	INFORMATION_SCHEMA.COLUMNS C 
WHERE
	C.TABLE_NAME = T.TABLE_NAME 
	AND T.table_schema = 'edss_fangxun';
	
SELECT
	relname AS tabname,
	A.attname AS NAME,
	col_description ( A.attrelid, A.attnum ) AS COMMENT,
	format_type ( A.atttypid, A.atttypmod ) AS TYPE,
	A.attnotnull AS NOTNULL 
FROM
	pg_class AS C,
	pg_attribute AS A 
WHERE
	C.relname LIKE'bas%' 
	AND A.attrelid = C.oid 
	AND A.attnum > 0

6、

SELECT
	pac,
	CONCAT ( "level", '_24h' ) AS LEVEL,
	COUNT ( "level" ) AS counts 
FROM
	"tablename" 
WHERE
	time >= NOW( ) - INTERVAL '1 days' 
GROUP BY
	pac,
	CONCAT ( "level", '_24h' ) 
	) UNION ALL
	(
	SELECT
		pac,
		CONCAT ( "level", '_7d' ) AS LEVEL,
		COUNT ( "level" ) AS counts 
	FROM
		"tablename" 
	WHERE
		time >= NOW( ) - INTERVAL '7 days' 
	GROUP BY
		pac,
		CONCAT ( "level", '_7d' ) 
	) UNION ALL
	(
	SELECT
		pac,
		CONCAT ( "level", '_30d' ) AS LEVEL,
		COUNT ( "level" ) AS counts 
	FROM
		"tablename" 
	WHERE
		time >= NOW( ) - INTERVAL '30 days' 
	GROUP BY
		pac,
		CONCAT ( "level", '_30d' ) 
	) UNION ALL
	(
	SELECT
		pac,
		CONCAT ( "level", '_365d' ) AS LEVEL,
		COUNT ( "level" ) AS counts 
	FROM
		"tablename" 
	WHERE
		time >= NOW( ) - INTERVAL '365 days' 
	GROUP BY
	pac,
	CONCAT ( "level", '_365d' )

7、获取类型为20到24的telephone总数,并去重

SELECT
        COUNT(DISTINCT telephone) 
    FROM
        grid_person 
    WHERE
        person_type IN (
            '20','21','22','23','24'
        )
				
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值