pgsql笔记

建表

> 在public下建父表

DROP TABLE IF EXISTS "public"."a_test";
CREATE TABLE "public"."a_test" (
  "value" varchar(255) COLLATE "pg_catalog"."default"
);
ALTER TABLE "public"."a_test" OWNER TO "postgres";

> 在租户schema下建子表

DROP TABLE IF EXISTS "t201630688032706560"."a_test";
CREATE TABLE "t201630688032706560"."a_test" (
  "value" varchar(255) COLLATE "pg_catalog"."default"
)
INHERITS (yqcloud_new."public"."a_test") -- 这里设置继承关系
;
ALTER TABLE "t201630688032706560"."a_test" OWNER TO "postgres";
DROP TABLE IF EXISTS "t201058255663910912"."a_test";
CREATE TABLE "t201058255663910912"."a_test" (
  "value" varchar(255) COLLATE "pg_catalog"."default"
)
INHERITS (yqcloud_new."public"."a_test") -- 这里设置继承关系
;
ALTER TABLE "t201058255663910912"."a_test" OWNER TO "postgres";

特性

  • 父表插入记录,子表不可查
  • 子表插入记录,父表可查
  • 父表增加字段,子表增加字段

1.向public.a_test插入两条记录

value
1001
1002

此时,查询没有记录
t201630688032706560.a_test
t201058255663910912.a_test

value

2.向t201630688032706560.a_test插入两条记录11,22

value
11
12

此时,查询public.a_test

value
1001
1002
11
12

同理向t201058255663910912.a_test插入两条记录21,22
此时,查询public.a_test

value
1001
1002
11
12
21
22

3.对public.a_test增加字段value1

valuevalue1
1001NULL
1002NULL
11NULL
12NULL
21NULL
22NULL

此时查询t201630688032706560.a_test

valuevalue1
11NULL
12NULL

此时查询t201058255663910912.a_test

valuevalue1
21NULL
22NULL

SQL特性之json

1.单层json SQL读取

json处理sc_req_var_value表

ref_idref_values
221960307189223424{“input_syyntepj”: “1001”, “input_cdxrtboz”: “Tom”, “date_mmoisvtl”: “2021-10-24 10:24:00”, “upload_cahrrpvj”: “221960307189223424”}
SELECT 
		ref_id,
-- 		员工编号
		ref_values::json->>'input_syyntepj' as employee_num,
-- 		员工姓名
		ref_values::json->'input_cdxrtboz' as employee_name,
-- 		交通车迟到日期
		ref_values::json->'date_mmoisvtl' as bus_late_date,
-- 		附件
		ref_values::json->>'upload_cahrrpvj' as file
	FROM sc_req_var_value
	WHERE ref_id  = '221960307189223424'

查询结果

employee_numemployee_namebus_late_datefile
1001”Tom"“2021-10-24 10:24:00”221960307189223424

注意
::json-> 保留引号
::json->> 去除引号

2.多层json SQL读取

idnamejson_datatypeerror_message
221960307189223424公交车验证{“equalsConfig”: { “name”: “Tom”, “value”: 150, “ruleType”: “Single”}}mts验证不通过
SELECT 
	s1.id,
	s1.name bus_name,
	s1.json_data::json#>>'{equalsConfig, name}' as rule_name,
	s1.json_data::json#>>'{equalsConfig, value}' as rule_value,
	s1.json_data::json#>'{equalsConfig, ruleType}' as value_rule,
	s1.error_message
FROM lc_object_validation_rule s1
WHERE s1.id = '240413298825101312';

查询结果

idbus_namerule_typerule_namerule_valuevalue_ruleerror_message
221960307189223424公交车验证Tom150“Single”验证不通过

如果对您有用,一分一块都是爱❤️

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中的参考链接提供了关于PostgreSQL中的UNION ALL的性能方面的信息。UNION ALL是一种用于合并多个查询结果集的操作符。它将多个查询的结果集按照列和数据类型进行合并,并保留重复的行。 引用的源码片段解释了在PostgreSQL中处理UNION ALL的过程。当遇到简单的子查询时,PostgreSQL会将其扁平化并追加到"append relation"中。这个过程会创建一个包含多个同级索引扫描的Append节点。 引用是一个示例,展示了如何使用UNION ALL将两个表的结果集合并在一起。这个示例使用了INNER JOIN和LEFT OUTER JOIN两种连接方式。 综上所述,UNION ALL是PostgreSQL中用于合并多个查询结果集的操作符。它能够将多个查询的结果按列和数据类型进行合并,并保留重复的行。在处理UNION ALL时,PostgreSQL会将简单的子查询扁平化并追加到"append relation"中。您可以使用UNION ALL来合并多个表的查询结果集。123 #### 引用[.reference_title] - *1* *2* [Postgresql中使用union all数据类型不一致导致的查询性能问题](https://blog.csdn.net/dazuiba008/article/details/128398922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [PgSQL——学习笔记12:UNION 操作符 & UNION ALL 操作符](https://blog.csdn.net/qq_41361442/article/details/124850048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值