pgSQL笔记03-函数和索引

【PostgreSQL函数】数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数

《一、数学函数》

pgSQL笔记03-函数和索引

6.2.1-绝对值函数ABS(x) 和 圆周率函数PI()

select ABS(2),ABS(-3.3),pi();

pgSQL笔记03-函数和索引

6.2.2-平方根函数SQRT(x) 和 求余函数MOD(x,y)

pgSQL笔记03-函数和索引

select sqrt(9),sqrt(40),mod(31,8),mod(45.5,6);

pgSQL笔记03-函数和索引

6.2.3-获取整数的函数 CEIL(x)、CEILING(x)、FLOOR(x)

pgSQL笔记03-函数和索引

select ceil(-3.35),ceiling (3.35),floor(-3.35),floor(3.35);

pgSQL笔记03-函数和索引

6.2.4-四舍五入函数 ROUND(x) 和 ROUND(x,y)

pgSQL笔记03-函数和索引

select round(-1.14),round(-1.67),round(1.14),round(1.66),round(1.38,1),round(1.38,0),round(232.38,-1),round(232.38,-2);

pgSQL笔记03-函数和索引

6.2.5-符号函数 SIGN(x)

pgSQL笔记03-函数和索引

select sign(-21),sign(0),sign(21);

pgSQL笔记03-函数和索引

6.2.6-幂运算函数 POW(x,y) 、 POWER(x,y) 、 EXP(x)

pgSQL笔记03-函数和索引

select pow(2,2),power(2,2),pow(2,-2),power(2,-2),exp(3),exp(-3),exp(0);

pgSQL笔记03-函数和索引

6.2.7-对数运算函数 LOG(x)

pgSQL笔记03-函数和索引

select log(3);

pgSQL笔记03-函数和索引

6.2.8-角度与弧度相互转换的函数 RADIANS(x) 和 DEGREES(x)

pgSQL笔记03-函数和索引

select radians(90),radians(180),degrees(pi()),degrees(pi()/2);

pgSQL笔记03-函数和索引

6.2.9-正弦函数 SIN(x) 和反正弦函数 ASIN(x)

pgSQL笔记03-函数和索引

select sin(1),round(sin(pi())),asin(0.841470984807897);

pgSQL笔记03-函数和索引

select asin(3); /*会报错*/

pgSQL笔记03-函数和索引

6.2.10-余弦函数 COS(x) 和 反余弦函数 ACOS(x)

pgSQL笔记03-函数和索引

select cos(0),cos(pi()),cos(1),acos(1),acos(0),acos(0.54030230586814);

pgSQL笔记03-函数和索引

6.2.11-正切函数 TAN(x)、反正切函数 ATAN(x)、余切 函数 COT(x)

pgSQL笔记03-函数和索引

select tan(0.3),round(tan(pi()/4)),atan(0.309336249609623),atan(1),cot(0.3),1/tan(0.3),cot(pi()/4);

pgSQL笔记03-函数和索引

《二、字符串函数》

pgSQL笔记03-函数和索引

6.3.1-计算字符串字符数 char_lenth(str) 和字符串长度 length(str)

pgSQL笔记03-函数和索引

select char_length('date1'),char_length('汉字'),length('date1'),length('汉字');

pgSQL笔记03-函数和索引

(为毛我测试的汉字的length也是2?不解!!)

6.3.2-合并字符串函数 concat(s1,s2,...) 和 concat_ws(x,s1,s2,...)

pgSQL笔记03-函数和索引

select concat('PostgreSQL','9.15'),concat('Postgre',NULL,'SQL');

pgSQL笔记03-函数和索引

select concat_ws('-','1st','2nd','3rd'),concat_ws('*','1st',NULL,'3rd');

pgSQL笔记03-函数和索引

6.3.3-获取指定长度的字符串 left(s,n) 和 right(s,n)

pgSQL笔记03-函数和索引

s

select left('football',5),right('football',4);

pgSQL笔记03-函数和索引

6.3.4-填充字符串的函数 lpad(s1,len,s2) 和 rpad(s1,len,s2)

pgSQL笔记03-函数和索引

select lpad('hello',4,'?'),lpad('hello',10,'?'),rpad('hello',4,'?'),rpad('hello',10,'?');

pgSQL笔记03-函数和索引

6.3.5-删除空格的函数 ltrim(s) 、 rtrim(s) 和 trim(s)

pgSQL笔记03-函数和索引

select ltrim(' book '),rtrim(' book '),trim(' book ');

 

6.3.6-删除指定字符串的函数 trim(s1 FROM s)

pgSQL笔记03-函数和索引

select trim('xy' from 'xyboxyokxyxy');

pgSQL笔记03-函数和索引

6.3.7-重复生成字符串的函数 repeat(s,n)

pgSQL笔记03-函数和索引

select repeat('cd-',3),repeat('cd-',-2),repeat('cd-',NULL);

pgSQL笔记03-函数和索引

6.3.8-字符串替换函数 replace(s,s1,s2)

pgSQL笔记03-函数和索引

select replace('xxx.baidu.com','x','w');

pgSQL笔记03-函数和索引

6.3.9-获取子串的函数 substring(s,n,len)

pgSQL笔记03-函数和索引

select substring('breakfast',5),substring('breakfast',5,3),substring('breakfast',-3);

pgSQL笔记03-函数和索引

6.3.10-匹配子串开始位置的函数 position(str1 IN str)

pgSQL笔记03-函数和索引

select position('ball' in 'football');

pgSQL笔记03-函数和索引

6.3.11-字符串反转的函数 reverse(s)

pgSQL笔记03-函数和索引

select reverse('abcde');

pgSQL笔记03-函数和索引

 

《三、日期和时间函数》

pgSQL笔记03-函数和索引

6.4.1-获取当前日期current_date和获取当前时间current_time、localtime

pgSQL笔记03-函数和索引

select current_date,current_time,localtime;

pgSQL笔记03-函数和索引

6.4.2-获取当前日期和时间的函数current_timestamp、localtimestamp和now()

pgSQL笔记03-函数和索引

select current_timestamp,localtimestamp,now();

pgSQL笔记03-函数和索引

6.4.3-获取日期指定值extract(type FROM d)

pgSQL笔记03-函数和索引

/*提取年份、月份、日期*/

select extract(year from timestamp '2015-12-20 10:23:49'),extract(month from now()),extract(day from now());

pgSQL笔记03-函数和索引

/*一年中的第几天、一周中的星期几(0-6)、一年中的第几季度(1-4)*/

select extract(doy from now()),extract(dow from now()),extract(quarter from now());

pgSQL笔记03-函数和索引

6.4.4-日期和时间的运算操作(加减乘除)

pgSQL笔记03-函数和索引

select date '2012-09-28' + integer '10';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select date '2012-09-28' + interval '3 hour';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select date '2012-09-28' + time '06:00';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select timestamp '2012-09-28 02:00:00' + interval '10 hours';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select date '2012-11-01' - date '2012-09-10';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select date '2012-09-28' - integer '10';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select 15 * interval '2 day';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select 50 * interval '2 second';

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select interval '1 hour' / integer '2';

pgSQL笔记03-函数和索引

 

《四、条件判断函数》

又叫:控制流程函数。CASE...WHEN...THEN...END

pgSQL笔记03-函数和索引

select case 2 when 1 then 'one' when 2 then 'two' else 'more' end;

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

select case when 1<0 then '正确' else '错误' end;

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

 

《五、系统信息函数》

pgSQL笔记03-函数和索引

6.6.1-获取PostgreSQL版本号 VERSION()

pgSQL笔记03-函数和索引

select version();

pgSQL笔记03-函数和索引

6.6.2-获取用户名 USER和CURRENT_USER

pgSQL笔记03-函数和索引

select user,current_user;

pgSQL笔记03-函数和索引

 

《六、加密函数》

6.7.1-加密函数 MD5(str)

pgSQL笔记03-函数和索引

select md5('mypwd');

pgSQL笔记03-函数和索引

6.7.2-加密函数 ENCODE(str,pswd_str)

pgSQL笔记03-函数和索引

select encode('secret','hex'),length(encode('secret','hex'));

pgSQL笔记03-函数和索引

6.7.3-解密函数 DECODE(crypt_str,pswd_str)

pgSQL笔记03-函数和索引

select decode('736563726574','hex');

pgSQL笔记03-函数和索引

 

《七、改变数据类型的函数CAST》

CAST(x AS type)

pgSQL笔记03-函数和索引

select cast(100 as char(2));

pgSQL笔记03-函数和索引

 

【PostgreSQL索引】

1. 索引简介

pgSQL笔记03-函数和索引

分类:B-tree(常用)、Hash(性能较弱,不建议使用)、GiST、GIN

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

pgSQL笔记03-函数和索引

2.创建索引 CREATE INDEX

pgSQL笔记03-函数和索引

create table book(

bookid int not null,

bookname varchar(255) not null,

authors varchar(255) not null,

info varchar(255) null,

comment varchar(255) null,

year_publication date not null

);

 

(1)创建普通索引 create index

pgSQL笔记03-函数和索引

/*创建普通索引*/

CREATE INDEX bknameidx ON book(bookname);

pgSQL笔记03-函数和索引

(2)创建唯一索引 create unique index

pgSQL笔记03-函数和索引

/*创建唯一索引*/

CREATE UNIQUE INDEX uniqididx ON book (bookid);

(3)创建单列索引

pgSQL笔记03-函数和索引

/*创建单列索引*/

CREATE INDEX bkcmtidx ON book (comment);

(4)创建组合索引

pgSQL笔记03-函数和索引

/*创建组合索引*/

CREATE INDEX bkauandinfoidx ON book (authors,info);

 

2.重命名索引 ALTER INDEX ... RENAME TO ...

/*重命名索引*/

ALTER INDEX bkauandinfoidx RENAME TO abcd;

 

3.删除索引 DROP INDEX

/*删除索引*/

DROP INDEX abcd;

pgSQL笔记03-函数和索引