暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

记录|PG-PCA学习笔记-记录sql

chkl 2024-04-27
280

1、时间转换为日期

select now()::date;
select now()::time ;  

2、pg文本类型

char(n),varchar(n),text
ILIKE等价于大小写不敏感的LIKE
“~*”-大小写不敏感
SIMILAER TO 类似于LIKE
lower(),upper()-将字符串 变为小写或大写
length()-返回字符串中字符的个数
character_length()-字符长度
octet_length()-占用空间长度
bit_length()-
lpad,rpad(string,length[,fill])-使用字符串’fill’,在左边或右边填充一个字符串到固定长度"length"
ltrim,rtrim,btrim(string[,characters])-删除字符串左边或右边或两边的characters字符(默认是空格)
position(substring in string)-subtring在string 中的位置。
substring(string[ from start][ for run])-根据指定位置返回字串,start开始位置,run字串几个字符。

select char_length(col1),octet_length(col1) from tb1;

3、PG范围类型(range type)

select int4range(1,5);
[1,5) ;
select daterange('2024-01-01','2024-05-01');
[2024-01-01,2024-05-01) ;
select int4range(10,20) * int4range(15,25);
[15,20) ;
select upper(int8range(15,25));
25 
select lower(int8range(15,25));
15 

4、PG条件表达式CASE

CASE WHER conditon THEN result
CASE expression
WHEN value THEN result
[WHEN …]
[ELSE result]
END
PG中布尔类型可插入null,显示为空。
true:‘t’,‘true’,‘y’,‘yes’,‘1’
false:‘f’,‘false’,‘b’,‘no’,‘0’

5、 PG模式SCHEMA

CASCADE:可看作级联删除模式下的所有对象。如不选,如有对象会报错。
RESTRICT:默认值,删除时模式中如有对象,命令会失败。

create schema schema_name;
drop schema schema_name cascade ;
# 切换模式
set search_path to chema_name ;

6、PG表

create table tb1 ;
insert into tb1 values('1','a');
drop table tb1 cascade ;
select tb1.col1 from tb1 where col1='1' order by 1 ;
delete from tb1 where col1='1' ;
truncat table tb1 ;
# 限定第几行到第几行。
select * from tb1 limit 3 offset 6 ;

distinct 去重

PG 多表链接

交叉连接CROSS JOIN 表中每一行与另一表每一行连接。
内链接 INNER JOIN 返回两表中匹配的数据行。

左连接 LEFT (OUTER)JOIN 返回左表所有数据及右表中匹配的记录。
右连接 RIGHT(OUTER)JOIN 返回右表所有数据及左表中匹配的记录
全外连接 FULL (OUTER) JOIN 返回左表和右表的所有记录。

select ... from tb1
left join tb2 on condition ;

PG 触发器TRIGGER

trigger会在特定的事件(insert、update、delete)发生在指定的表或视图上时自动执行。触发器可以与函数相关联,该函数定义了当触发事件发生时应该执行的操作。
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW EXECUTE FUNCTION function_name(arguments);

drop trigger trigger_name on tb1 ;

PG 索引 INDEXES

B-tree(default)
Hash -只有当where语句包含一个简单的等号(‘=’)时使用(缺点:需要创建的时间长,不如B-tree好)
Index on Expressions -当某个表达式(expression)经常被使用以提高查询速度的时候使用。插入和更新操作会变慢。
Partial Index -只对满足WHERE条件的行进行索引(WHERE语句不能包含索引列)。查询也必须使用partial index使用的那个WHERE语句。

\h create index
create index index_name on tb1(col1) ;
\d+ tb1 
select * from pg_indexes where table_name='tb1';
create index idx_name on tb1(col1,col2) ;
create unique index index_name on tb1(col1) ;

清理归档日志:

# 
vim postgresql.conf
archive_mode = on
archive_command = 'cp %p /usr/local/pgsql/archive/%f'
# 清理000000010000004A00000033之后的归档日志
 pg_archivecleanup /usr/local/pgsql/archive/ 000000010000004A00000033
最后修改时间:2025-07-18 11:49:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论