202102-02 PostgreSql 的hash_code函数的用法说明 PostgreSql实现的hash_code函数与javahash_code方法一致CREATEFUNCTIONhash_code(text)RETURNSintegerLANGUAGEplpgsqlAS$$DECLAREiinteger:=0;DECLAREhbigint:=0;BEGINFORiIN1..length($1)LOOPh=(h*31+ascii(substring($1,i,1)))&4294967295;ENDLOOP;RETURNcast(cast(hASbit(32))ASint4);END;$$;补充:PGSQL的某些常用函数一、COALESCE(col,value);COALESCE函数的作用... 继续阅读 >
202102-02 postgresql 索引之 hash的使用详解 os:ubuntu16.04postgresql:9.6.8ip规划192.168.56.102node2postgresqlhelpcreateindexpostgres=#\hcreateindexCommand:CREATEINDEXDescription:defineanewindexSyntax:CREATE[UNIQUE]INDEX[CONCURRENTLY][[IFNOTEXISTS]name]ONtable_name[USINGmethod]({column_name|(expression)}[COLLATEcollation][opclass][ASC|DESC][NULLS{FIRST|LAST}][,...])[W... 继续阅读 >
202102-02 PostgreSQL Sequence序列的使用详解 PostgreSQL是一种关系型数据库,和Oracle、MySQL一样被广泛使用。平时工作主要使用的是PostgreSQL,所以有必要对其相关知识做一下总结和掌握,先总结下序列。一、Sequence序列Sequence是一种自动增加的数字序列,一般作为行或者表的唯一标识,用作代理主键。1、Sequence的创建例子:创建一个seq_commodity,最小值为1,最大值为9223372036854775807,从1开始,增量的步长为1,缓存为1的循环排序Sequence。SQL语句如下:CREATESE... 继续阅读 >
202102-02 PostgreSQL之INDEX 索引详解 之前总结了PostgreSQL的序列相关知识,今天总结下索引。我们都知道,数据库索引最主要的作用是可以提高检索数据的速度,但是索引也不是越多越好。因为索引会增加数据库的存储空间,查询数据是要花较多的时间。1、创建索引SQL语句如下:CREATEINDEXidx_commodityONcommodity//表名USINGbtree//用B树实现(commodity_id);//作用的具体列2、删除索引DROPindexidx_commodity;3、增加索引的优势:创建索引可以大大提高系... 继续阅读 >
202102-02 PostgreSql 重建索引的操作 PostgreSql数据库的重建索引时通过REINDEX命令来实现的,如reindexindex_name;其语法是:REINDEX{INDEX|TABLE|DATABASE|SYSTEM}name[FORCE];下面解释下说明情况下需要:1、当由于软件bug或者硬件原因导致的索引不再可用,索引的数据不再可用;2、当索引包含许多空的或者近似于空的页,这个在b-tree索引会发生。Reindex会腾出空间释放哪些无用的页(页就是存放数据的一个单位,类似于block)。3、PostgreSql数据库系统... 继续阅读 >
202102-02 Postgresql 查询表引用或被引用的外键操作 今天更新两个SQL。是用来查询PG中,主表被子表引用的外键,或子表引用了哪个主表的主键。废话不多说,直接上实验!CentOS7+PG10创建两个实验表,test01为主表,test02为子表,test02引用test01中的id列。test=#createtabletest01(test(#idintprimarykey,test(#col1varchar(20)test(#);CREATETABLEtest=#createtabletest02(test(#idintprimarykey,test(#test01_idintreferencestest01(id),test(#col1v... 继续阅读 >
202102-02 PostgreSQL 删除check约束的实现 删除check约束:1.\dtable_name查找约束名称\ddm_alarms_fct_20170613"dm_alarms_fct_20170613_dm_transct_date_key_check"2.altertable..dropconstraint..ALTERTABLE"dm_alarms_fct_20170613"Dropconstraint"dm_alarms_fct_20170613_dm_transct_date_key_check";补充:PostgreSQL查询约束和创建删除约束查询约束constraintSELECTtc.constraint_name,tc.table_name,kcu.column_name,ccu.table_nameA... 继续阅读 >
202102-02 PostgreSQL 添加各种约束语法的操作 1.添加主键altertablegoodsaddprimarykey(sid);2.添加外键altertableordersaddforeignkey(goods_id)referencesgoods(sid)onupdatecascadeondeletecascade;onupdatecascade:被引用行更新时,引用行自动更新;onupdaterestrict:被引用的行禁止更新;ondeletecascade:被引用行删除时,引用行也一起删除;ondelleterestrict:被引用的行禁止删除;3.删除外键altertableordersdropconstraintorder... 继续阅读 >
202102-02 PostgreSQL ROW_NUMBER() OVER()的用法说明 语法:ROW_NUMBER()OVER([PRITITIONBYcol1]ORDERBYcol2[DESC])解释:ROW_NUMBER()为返回的记录定义个行编号,PARTITIONBYcol1是根据col1分组,ORDERBYcol2[DESC]是根据col2进行排序。举例:postgres=#createtablestudent(idserial,namecharactervarying,coursecharactervarying,scoreinteger);CREATETABLEpostgres=#postgres=#\dstudentTable"public.student"Column|Type|Modifiers... 继续阅读 >
202102-02 postgresql 中的序列nextval详解 一、postgresql中的序列1.1场景需求需要向下图一样,需要对产品编码编码设置一个序列。编码规则SKU+序列号:1.2序列序列是基于bigint算法的,因此范围是不能超过一个八字节整数的范围(-9223372036854775808到9223372036854775807)。由于nextval和setval调用绝不会回滚,如果需要序数的"无间隙"分配,则不能使用序列对象。可以通过在一个只包含一个计数器的表上使用排他锁来构建无间隙的分配,但是这种方案比序列对象... 继续阅读 >
202102-02 PostgreSQL 序列绑定字段与不绑定字段的区别说明 序列绑定字段与不绑定字段的区别绑定字段构造数据dropsequenceifexiststest_id_seq;createsequencetest_id_seq;droptableifexiststest;createtabletest(idintdefaultnextval('test_id_seq'),nametext);altersequencetest_id_seqownedbytest.id;测试test=#droptabletest;DROPTABLEtest=#\dDidnotfindanyrelations.test=#不绑定字段构造数据dropsequenceifexiststest_id_seq;createsequencete... 继续阅读 >
202102-02 PostgreSQL物理备份恢复之 pg_rman的用法说明 简介类似oracle的rman,用于postgres的备份与恢复下载https://github.com/ossc-db/pg_rman/tree/V1.3.9安装tarzxvfpg_rman*.tar.gzchownpostgres.postgres-Rpg_rman*su-postgrescdxxx/pg_rman*make&&makeinstall使用开启归档[postgres@node_206/postgresql/pgsql/archive_log]$tail-3/postgresql/pgsql/data/postgresql.conf#forpg_Rmanarchive_mode=on#enablesarchiving;off,on,oralwaysarchive_com... 继续阅读 >
202102-02 PostGreSql 判断字符串中是否有中文的案例 我就废话不多说了,大家还是直接看代码吧~实例imos=#select'hello'~'[\u2e80-\ua4cf]|[\uf900-\ufaff]|[\ufe30-\ufe4f]';?column?----------f(1row)imos=#imos=#select'hello中国'~'[\u2e80-\ua4cf]|[\uf900-\ufaff]|[\ufe30-\ufe4f]';?column?----------t(1row)补充:PostgreSQL判断字符串包含的几种方法判断字符串包含的几种方法:1.position(substringinstring):postgres=#selectposition(... 继续阅读 >
202102-02 postgresql 实现16进制字符串转10进制数字 我就废话不多说了,大家还是直接看代码吧~CAST(CAST((‘x'||‘47868E22')ASbit(32))ASint)补充:Postgresql中时间戳与日期的相互转换(同样适用于GreenPlum)--日期转时间戳SELECTEXTRACT(epochFROMNOW());SELECTEXTRACT(epochFROMCAST('2017-12-0600:17:10'ASTIMESTAMP));--时间戳转日期SELECTTO_TIMESTAMP(1512490630)补充:postgresql时间戳转换成普通时间Unix时间戳(Unixtimestamp),或称Unix时间(Unixtime)... 继续阅读 >
202102-02 postgresql 中position函数的性能详解 起因:postgresql中position函数提供从头查找返回第一个匹配到字符串的下标。而我需要返回从后向前查找第一个匹配到的坐标,但是postgressql并未提供相关函数,所以自己写了如下代码提供相关功能:CREATEORREPLACEFUNCTIONlastindexof(text,character)RETURNSintegerAS$BODY$beginif$1isnullthenreturnNULL;endif;foriinreverselength($1)..1loopifsubstr($1,i,1)=$2thenreturni;endif;e... 继续阅读 >
202102-02 postgresql 中的to_char()常用操作 postgresql中的to_char()用法和Oracle相比,多了一个参数。to_char(待转换值,转换格式);常用转换格式有2种:一个是写若干个0,如果待转换的值位数少于于你定义的转换格式位数,输出值会自动在左边补0,位数补齐到转换格式的长度;如果待转换的值位数多于你定义的转换格式位数,输出值为:##(长度跟你定义的转换格式一样);另一个是写若干个9,如果待转换的值位数少于你定义的转换格式位数,正常输出;如果待转换的值位数多于于... 继续阅读 >