![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
postgresql笔记
一路狂飚飚
前进中.....
展开
-
重点英文单词—postgresql中重点单词
陌生单词常见单词check 检查check可以用在约束条件原创 2020-06-03 21:03:35 · 207 阅读 · 0 评论 -
postgre函数007—to_char使用
postgresql中to_char函数使用方法获得当前时间的日期--current_date 当前的日期,现在的日期;--获得当前时间的日期SELECT to_char(CURRENT_DATE,'yyyy-MM-dd hh24:MI:ss');select to_char(current_date,'yyyy-MM-dd');--获得当前的具体时间精确到分钟SELECT to_char(CURRENT_DATE,'yyyy-MM-dd hh:MM:ss')...原创 2020-05-16 23:13:13 · 11753 阅读 · 0 评论 -
postgre函数004—列转行函数regexp_split_to_table
postgre函数004—列转行函数regexp_split_to_tableselect regexp_split_to_table('aaa,bbb,cccc',',') rowtocolumn原创 2020-05-11 16:59:14 · 1077 阅读 · 0 评论 -
postgresql函数-012存储过程-postgresql练习001
存储过程-练习001语法结构:create or replace function function_name ( arguments)returns return_datatype as $variable_name$ declare declaration; [...] begin < function_body> [...] return {variable_name | value } end;language plpgsql;案例:求一个stu原创 2020-06-24 17:23:45 · 283 阅读 · 0 评论 -
postgre函数001—row_number()
row_number(): 组内排序,不间断,如1,2,3,4,5,6操作表DROP TABLE IF EXISTS "test"."empsalary";CREATE TABLE "test"."empsalary" ( "depname" varchar(255) COLLATE "pg_catalog"."default", "empno" int4, "salary" int4, "enroll_date" date);INSERT INTO "test"."emps原创 2020-05-11 15:23:01 · 1807 阅读 · 0 评论 -
postgre函数012—获得今天是一年中的第多少天以及根据一年的天数来求日期
通过sql来获得今天是一年中的第多少天案例一:SELECT extract(doy from timestamp '2020-02-05 10:48:20');查询结果:案例二:select extract(doy from now()) as 第一年的多少天, now() as today_time;返回结果为:获得今天是2020年的第153天。拓展:现在反过来,知道今天是第多少天 查今天的日期select current_date as 当前日期,'2020-01-01'::原创 2020-06-01 17:26:59 · 1350 阅读 · 0 评论 -
postgre函数008—常用的数学函数
abs( ) 求一个数的绝对值在pg中,abs()括号中既可以跟数值,也可以跟字符串类型的数值select abs('-888');-- 返回的结果为888,是正值cbrt(double) 求一个数的立方根select cbrt(8)-- 返回结果为 2ceil(double/numeric) 返回结果为:不小于参数的最小的整数select ceil(-43.5)-- 返回结果为 -43select ceil(43.5)-- 返回结果为44mod(y, x) 取余数原创 2020-05-18 22:30:42 · 1069 阅读 · 0 评论 -
postgre函数002—聚合函数通过开窗函数over()来获取分组后的结果
聚合函数关联开窗函数:count() over(partition by col_name) 返回每一个分组中的记录条数max() over(partition by col_name) 返回每一个分组中的最大值min(*) over(partition by col_name) 返回一个分组中的最小值原创 2020-05-11 16:03:59 · 1588 阅读 · 0 评论 -
postgre函数006—日期函数用法举例
postgresql 中常用的日期函数用法举例--取当前时间select now();select current_timestamp;--取当前时间的日期select current_date;--取当前具体时间 (除去日期) select current_time;--表示三天后 select now() + interval '3 day';--表示三天前select now() - interval '3 day';--表示1小时后 select now() +原创 2020-05-13 20:18:59 · 456 阅读 · 0 评论 -
postgre函数009—常用的字符串函数和操作符
pg中常用的字符串函数和操作符string || string text 字串连接select 'sss'||'aaa'-- 字符串拼接,返回结果为 sssaaachar_length(string) int 字串中的字符个数select char_length('12345678')-- 返回结果为8lower(string) text 把字串转化为小写select lower('STT')--结果为sttoctet_length(string) int 字串中的字节数sel原创 2020-05-18 23:14:04 · 288 阅读 · 0 评论 -
postgre函数-postgresql实现对表结构的查询
查询表结构信息selectcol.table_schema,col.table_name,col.ordinal_position,col.column_name,col.data_type,col.character_maximum_length,col.numeric_precision,col.numeric_scale,col.is_nullable,col.column_default,des.descriptionfrominformation_schema.colu原创 2021-02-03 09:30:30 · 355 阅读 · 0 评论 -
postgre函数011—输出 JSON 结果操作和方法
postgresql中输出 JSON 结果操作和方法将表eat作为操作表select * from test.eat;row_to_json()函数,针对的是一条记录,将每一条数据转换成json类型的数据,最后结果返回json对象。案例如下:select row_to_json(eat) from test.eat;将每一条数据返回一个json串在只查询指定的列时,可以使用row()结构函数案例:select row_to_json(row(kind)) from test.eat原创 2020-06-01 15:17:39 · 923 阅读 · 1 评论 -
postgre函数003—distinct的用法
distinct的用法去重;关键字distinct去重功能 在其他数据库(oracle,mysql)是存在;当然postgresq也有这个功能跟on一起用; 使用DISTINCT ON实现用窗口函数实现的取第一名的功能这个功能oracle,mysql是没有的;当然它们有其他的分析函数可以替换;顶替;例如row_number, fisrt_values等等distinct on的用法实现从每个分组中取最XXX的一条数据语法:select distinct on (分组列名) 列名[, 列名…]原创 2020-05-11 17:10:10 · 452 阅读 · 0 评论 -
postgre函数005—日期函数 extract的用法
日期函数 extract的用法extract 英文是提取的意思extract 属于 SQL 的 DML(即数据库管理语言)函数,主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据,因此,它支持其关健字 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、WEEKDAY、YEARDAY。extract 的使用语法为:extract(关健字 FROM 日期或时间型字段)例如:从一个入库表(rk)的"入库时间(intime)"(此入库时间为 timestamp 型)字段内提原创 2020-05-13 19:29:09 · 3060 阅读 · 0 评论 -
postgre函数010-string_agg和array_agg函数的使用方法
array_agg函数array_agg函数 将结果集返回的类型为数组,其中数组数据类型同输入数据类型一致,并以delimiter分隔符分隔,expression 表示要处理的字符类型数据。array_agg(expression) --输入参数为任何非数组类型string_agg 函数语法格式如下:string_agg(expression,delimiter)string_agg 函数能将结果集某个字段的所有行连接成字符串,并以delimiter分隔符分隔,expression 表示原创 2020-05-29 17:37:17 · 2022 阅读 · 0 评论 -
postgresql笔记019—详解分区
分区分区概述分区的意思是把逻辑上的一个大表分割成物理上的几块。分使用分区的好处:使用分区时,可以对某些类型的查询性能得到极大的提升。特别是表中访问率比较高的行,位于一个单独分区或少数一个分区上的情况下。分区可以减少索引体积,从而可以将高使用率部分的索引存放在在内存中。如果索引不能全部存放在内存中,那么在索引上的读和写都会产生更多的磁盘访问。2.当查询或更新一个分区的大部分记录时,连续扫描那个分区而不是使用索引离散的访问整个表,可以获得巨大的性能提升。3.如果需要大量加载或删除的记录位于单独的原创 2020-06-12 00:28:30 · 380 阅读 · 0 评论 -
postgresql笔记018-初识pg继承
继承继承案例:create table test.cities( name text, population float, altitude int);create table capitals( state char(2)) inherits (cities);其中capitals 表继承它的父表cities中的所有属性。在postgresql里,一个表可以从另个...原创 2020-06-10 23:26:16 · 273 阅读 · 0 评论 -
postgresql笔记017-模式schema
模式一个postgresql数据库集群包含一个或多个已命名数据库。用户和用户组在整个集群返回内是共享的,但是其它数据库并不共享。任何与服务器连接的客户都只能访问那个在连接请求里声明的数据库。注意:在集群中的用户并不一定要有访问集群内所有数据库的权限。共享用户名的意思是不能有重名用户。假定同一个集群里有两个数据库和一个stt用户,系统可以配置成只允许stt 访问其中的一个数据库。一个数据库包含一个或多个已命名的模式,模式又包含表。模式还可以包含其他对象,包含数据类型,函数,操作符等。同一个对象名可以在原创 2020-06-03 23:36:03 · 366 阅读 · 0 评论 -
postgresql笔记016—权限管理
权限管理当创建一个数据库对象时,他就被赋予了所有者。这个所有者通常是执行创建语句的角色。对大多数类型的对象,初始状态只有其所有者(或超级管理员)可以对它做任何事情。要允许其它角色使用它,必须要经过权限授予。在数据库中有很多种不同的权限:权限类别Valueselect$1600insert$12update$1delete删除truncate清空表中的数据references创建外键triggercreate创建表co原创 2020-06-03 11:59:48 · 187 阅读 · 0 评论 -
postgresql笔记015—修改表结构的八种类别和方法
修改表在创建一个表后,需求发生了变化,这个时候就需要我们来修改表,当然也可以删除重建,但是在有数据的情况下,修改表是更好的选择。修改表的方式有如下八种:1.增加字段2.删除字段3.增加约束4.删除约束5.修改缺省值6.修改字段数据类型7.重命名字段8.重命名表所有的这些动作都是用alter table 命令执行的,它的参考页面包含超出这里给出的详细信息。增加字段alter table products add column description text;新增的的字段对于表中原创 2020-06-03 00:17:19 · 540 阅读 · 0 评论 -
postgresql笔记014—约束
约束数据类型会限制我们在表中存储的数据类型。不过对于许多应用来说,这种限制实在是太粗糙了。比如一个包含产品价格的字段你应该只接受正数。但是没有那种标准数据类型只接受正数。另外一个问题是我们可能需要根据其它字段或者其它行的数据来约束字段数据。比如,在一个包含产品信息的表中,每个产品编号都应该只有一行。面对这些问题,sql允许我们在字段和表上定义约束。约束允许我们对数据施加任意控制。如果用户企图在字段里面存储违反约束的数据,那么就会抛出一个错误。这种情况同时也使用与数据来自省缺值的情况。检查约束检查约原创 2020-06-02 10:21:17 · 453 阅读 · 0 评论 -
postgresql笔记013—省缺值
数据定义中的省缺值一个字段可以赋予省缺值。如果新创建了一个数据行,而又写字段的数值没有声明,那么这些字段将被填充为他们各自的省缺值。一条数据修改命令也可以明确地要求把一个字段设置为它的省缺值,而不需要事先知道这个省缺值是什么。如果没有明确声明省缺值,那么省缺值是NULL。这么做通常是合理的,因为NULL表是未知。在一个表定义里,省缺值是在字段数据类型后面列出的。案例:create table products( product_no integer, name text, price nu原创 2020-06-02 00:30:35 · 624 阅读 · 0 评论 -
postgresql笔记012—数据定义以及表的基本概念
数据定义在关系型数据库中,裸数据是存储在表中的。表中存储的数据有什么特性。表如何组织层模式?如何给表赋予权限。影响数据存储的其他因素,有继承,视图,函数,触发器。这些都需要我们去理解。表的基本概念关系型数据库中的表类似我们的Excel,他是由行和列组成的。字段的树木和顺序是固定的,每个字段都有一个名字。行的数组是变化的。sql对表中行的顺序没有任何承诺。当读取一个表时,行将会以一个未指定的顺序出现,除非你明确的要求排序。另外,sql并不给行赋予唯一的标识,因此我们很可能在一个表中有好几个完全原创 2020-06-01 23:57:33 · 220 阅读 · 0 评论 -
postgresql笔记011—pgsql中调用函数使用及方法
调用函数postgresql允许函数有命名参数,可以被位置或者名称表示法调用。名称表示法对有大量参数的函数特别有用,因为他更加明确和可靠的标记了形参和参数之间的联系。在位置标示法里,一个函数调用的参数值要用与函数声明相同的顺序来写出。在名称标示法里,参数是通过名称来与函数参数相匹配的,可以以任意顺序写出。不管用那种表示法,在函数声明时给出的有默认值的参数在调用时不必写出。但是这在名称表示法中是特别有用的,因此参数的任意组合都是可以省略的。而在位置表示法中,参数只能从右到左省略。postgresql 也原创 2020-06-01 18:46:29 · 4498 阅读 · 0 评论 -
postgresql笔记010-值表达式
值表达式值表达式用在各种语法环境中,比如在select命令的目标列表中,在insert, update 中用作新的列值,或者在许多命令的搜索条件中使用。我们有时候把值表达式的结果叫做标量,以便于一个表达式的结果相区分。因此值表达式也叫作标量表达式。表达式语法允许对来自基础部分的数值进行算术,逻辑,集合和其他运算。值表达式具体实现如下:一个常量或者字面值一个字段引用一个位置参数引用(在函数声明体中或预编写的语句中)一个下标表达式一个字段选择表达式一个操作符调用一个函数调用一个聚合表达式原创 2020-06-01 16:00:57 · 400 阅读 · 1 评论 -
postgresql笔记008-词法结构:$符(美元符)的使用
词法结构:$符(美元符)的使用postgresql 允许称作美元符的引用 的字符串常量书写办法。一个通过美元符引用生命的字符串常量由一个美元符号$,零个或者多个字符组成的标签,另一个美元符号,组成字符串常量的任意字符序列,一个美元符号与前面相同的标签,一个美元符号组成的。案例: 两个不同的用美元符引用的方法声明"Dianne’s horse"的例子。select $$Dianne's horse$$;另一种实现方法select $SomeTag$Dianne’s horse$SomeTag$原创 2020-05-29 14:29:33 · 923 阅读 · 0 评论 -
postgresql笔记007—SQL语句-词法结构—3操作符
操作符一个操作符是最多 NAMEDATALEN -1 个(缺省63个)下列字符的序列:/ < > = ~ ! @ # % ^ & | ‘ ?不过,有几个限制:• – 和 / * 不能出现在操作符中的任何地方, 因为它们会被当做注释开始对待。• 多字符操作符不能以 + 或 - 结束,除非其中至少还包含下列操作符之一:~ ! @ # % ^ & | ‘ ?比如, @- 是允许的操作符,但 * - 不是。 这个限制允许PostgreSQL在不要求记号之间有空白原创 2020-05-29 00:08:57 · 123 阅读 · 0 评论 -
postgresql笔记007—SQL语句-词法结构—2常量
词法结构—002常量pgsql里面有三种隐含类型的常量:字符串,位串,数值。常量也可以声明为明确的类型,这样可以使用更加准确地表现形式,以及可以被系统更加有效的处理。一、字符串常量授权量里的一个文本常量是用单引号 ’ 包围的任意字符序列,比如 ‘This is a string’ 在这种类型的字符串创两里面嵌入单引号的标准兼容的做法是敲两个连续的单引号。...原创 2020-05-28 23:54:14 · 652 阅读 · 0 评论 -
postgresql笔记006—SQL语句—词法结构
SQL语句中的词法结构原创 2020-05-28 00:40:11 · 155 阅读 · 0 评论 -
postgresql笔记005—初识继承
初识继承继承是面向对象的数据库的概念。它开启了数据库设计的有趣新的特性。案例:drop table all_cities;create table all_cities ( name text, population real, altitude int);create table all_capitals( state char(2)) inherits (all_cities);创建两个表 all_cities 和表all_capitals表,其中all_cities表为父表原创 2020-05-27 23:57:21 · 138 阅读 · 0 评论 -
postgresql笔记004—窗口函数
窗口函数窗口函数的调用总是包含一个over子句,周免直接跟着窗口函数的名称和参数。这是窗口函数在语法上区别于普通函数或者聚合函数功能的地方。over子句决定如何将查询的行进行拆分,以便给窗口函数处理。over子句内的partition by列表指定将行划分成组或分区,组或分区共享相同的partition by 表达式的值。对于每一行,窗口函数在和当前行落在同一个分区的所有行上进行计算。建表:drop table if exits empsalary;create table empsalary(原创 2020-05-27 00:38:57 · 199 阅读 · 0 评论 -
postgresql笔记003—初识事务
初识事务事务是所有数据库系统的一个基本概念,一次事务的要点就是把多个步骤捆绑成一个单一的,不成功便成仁的操作。其他并发的事务是看不到在这些步骤之间的中间的状态的,并且如果发生了一些问题,导致该事物无法完成,那么所有这些步骤都完全不会影响数据库。...原创 2020-05-26 22:02:58 · 171 阅读 · 0 评论 -
postgresql笔记002—初步了解视图
初步了解视图当想对select的结果进行多次调用(使用好多次),但是又不想为select的结果创建一个新的表,那我们这个时候就可以使用视图来保存select到的结果,下次在使用该select的结果的时候就可以通过查询这个保存select的视图名就可以快速的获得获得想要的结果。通过引用视图来实现和select相同的结果。我们甚至可以直接将这个视图看做一个表来进行查询。案例:如下生成了一个一个名为myview 的视图;select view myview as select city,temp_原创 2020-05-23 21:11:45 · 137 阅读 · 0 评论 -
postgresql笔记001—sql语句中where和having之间的区别
postgresql笔记0010011 where后面不能跟聚合函数 where 后面不能跟集合函数或者说聚合函数不能用于where子句中。因为where子句决定哪些行可以进入聚合阶段,而且,where后面的子句必须在聚合函数前面进行计算。 例如: ... where temp_lo = max(temp_lo); 在where后面的子句中直接使用max聚合函数将会报错。 但是如果改写成 ... where temp_lo = (select max(temp_lo) from tab1);原创 2020-05-22 22:36:50 · 398 阅读 · 0 评论