PgSql 知识库

--分页offset 和limit 位置可以互换 不影响结果
select * from abc.t_student offset 0 limit 2;
select * from abc.t_student limit 2 offset 0;

--表明加别名 用as 不用as 都可以
select * from abc.t_student as a  where a.id<23 limit 2 offset 0;
select * from abc.t_student  a  where a.id<23 limit 2 offset 0;

--列明别名用as 和不用as 都可以 且都是小写
select a.id as D,a.address dizhi from abc.t_student a where a.id<33
and address='beijing'
limit 10;

--查看执行计划
explain
select a.id as D,a.address dizhi from abc.t_student a where
a.id>42
and address like '%张%'
limit 10 offset 0;
--创建索引
create index index_address on abc.t_student(address);

-- 查看索引 直接表名 不用加schemas
select * from pg_indexes where tablename='t_student';

-- 删除索引 必须有schemas
drop index abc.i_address;

pgsql可以在Btree索引上指定操作符:text_pattern_ops、varchar_pattern_ops和 bpchar_pattern_ops,它们分别对应字段类型text、varchar和 char,官方解释为“它们与默认操作符类的区别是值的比较是严格按照字符进行而不是根据区域相关的排序规则。这使得这些操作符类适合于当一个数据库没有使用标准“C”区域时,被使用在涉及模式匹配表达式(LIKE或POSIX正则表达式)的查询中

--创建索引
create index index_address on abc.t_student(address varchar_pattern_ops);

--再查执行计划就会走索引
explain
select a.id as D,a.address dizhi from abc.t_student a where
a.id>42
and address like '张%'
limit 10 offset 0;


-- 年
select to_char(to_timestamp(1608018517000 / 1000),'yyyy');
---月
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM');
----日
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd');
----日 时
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd HH24'); 对应JAVA 的“yyyy-MM-dd HH”
----日 时:分
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd HH24:MI');对应JAVA 的“yyyy-MM-dd HH:mm”
----日 时::秒
select to_char(to_timestamp(1608018517000 / 1000),'yyyy-MM-dd HH24:MI:SS');对应JAVA 的“yyyy-MM-dd HH:mm:ss”

--查询某一天日期 不走索引(字段带函数)
explain
select * from abc.t_student where
to_char(create_time,'yyyy-MM-dd')='2022-08-22';
--当前时间加一天
SELECT now()::timestamp + '1 day';
--某天字符串加一天
SELECT to_timestamp('20220823','yyyyMMdd') + '1 day';
--查询某一天走索引,小于明天大于今天

--查询某一天走索引,小于明天大于等于今天
explain
select * from abc.t_student where
create_time <(to_timestamp('20220822','yyyyMMdd') + '1 day') and
create_time >=to_timestamp('20220822','yyyyMMdd');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA-葵花宝典

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值