2021
01-29
01-29
postgresql 实现replace into功能的代码
PostgreSQL9.5-使用函数或with实现createtabletest(idintprimarykey,infotext,crt_timetimestamp);withupsertas(updatetestsetinfo='test',crt_time=now()whereid=1returning*)insertintotestselect1,'test',now()wherenotexists(select1fromupsertwhereid=1);PostgreSQL9.5+PostgreSQL9.5引入了一项新功能,UPSERT(insertonconflictdo),当插入遇到约束错误时,直接返回,或者改为执行U...
继续阅读 >
postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。打开安装目录下的data文件,我一般安装在D盘,我安装的postgre是64位,所以,安装目录为D:\ProgramFiles\PostgreSQL\9.5\data。我们要更改的文件有两个,分别为pg_hba.conf和postgresql.conf,一般需要进行三步,但也可能是四步。1.用记事本打开pg_hba.conf,在最后加上以下两句话#TYPEDATABASEUSERCIDR-ADDRESSMETHODhostall...
测试数据:city表:createtablecity(idint,nametext);insertintocityvalues(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈尔滨'),(5,'西藏')person表:createtableperson(idint,lastnamechar(20));insertintopersonvalues(0,'Tom'),(2,'Lily'),(3,'Mary'),(5,'Coco');select*fromcity;select*fromperson;一:内连接:1.innerjoininnerjoin(等值连接)只返回两个表中联结字段相等的行sql语句:select*...
工具:postgreSQLNavicatPremium又一次在看代码的时候,发现了不懂的东西!这次就是casewhenthenSQLCASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句。CASEWHENconditionTHENresult[WHEN...][ELSEresult]END解释:condition是一个返回boolean的表达式。如果为真,那么CASE表达式的结果就是符合条件的result。如果结果为假,那么以相同方式搜寻随后的WHEN子句。如果没有WHENcondition为真,那么...
1.日期格式转化(参考)selectbeg_time,end_time,extract(epochfromto_timestamp(end_time,'yyyy-mm-dd-HH24-MI-SS-US'))-extract(epochfromto_timestamp(beg_time,'yyyy-mm-dd-HH24-MI-SS-US'))fromcdb_all_iu_datawherebeg_time>'2017-09-21'注:beg_time,end_time以TEXT形式存储,求时间差时转化为时间戳再相减得到结果(s)2.select*from(中间结果)tselectcount(*)from(selectchkid,count(*)froma...
主从复制1.基于文件的日志传送创建一个高可用性(HA)集群配置可采用连续归档,集群中主服务器工作在连续归档模式下,备服务器工作在连续恢复模式下(1台或多台可随时接管主服务器),备持续从主服务器读取WAL文件。连续归档不需要对数据库表做任何改动,可有效降低管理开销,对主服务器的性能影响也相对较低。直接从一个数据库服务器移动WAL记录到另一台服务器被称为日志传送,PostgreSQL通过一次一文件(WAL段)的WAL记录传输实...
最近发现PostgreSQL(createorreplace)修改视图有很多的限制,不像SQLServer和Oracle那样可以随意修改。错误提示修改视图原有字段ERROR:cannotchangenameofviewcolumn"user_id"to"?column?"删除视图原有字段ERROR:cannotdropcolumnsfromview找到如下原因,内容原文究其原因,是PostgreSQL虽然支持CREATEORREPLACEVIEW语义,却有着容易让人忽略的重要限制(Oracle没有该限制),其官方文档这样描述:即...
项目最早是基于Oracle的,移植到PostgreSQL后,本着尽量少修改的原则,创建/更新视图的脚本也沿用了Oracle风格的CREATEORREPLACEVIEW形式。但是每当要更新视图定义时,常常报"cannotchangenameofviewcolumnxxxtoyyy"的错误,通常是在视图修改某字段名、中间增加字段、删除字段时发生。究其原因,是PostgreSQL虽然支持CREATEORREPLACEVIEW语义,却有着容易让人忽略的重要限制(Oracle没有该限制),其官方文档这样描述...
我就废话不多说了,大家还是直接看代码吧~selectcount(s.*)from(select*,row_number()over(partitionbyfee_dateorderbyfee_date)asgrfromnew_orderwherenews_id='novel'andorder_status='2')swheres.gr=1SELECTcount(DISTINCTfee_date)asdisfromnew_orderwherenews_id='novel'andorder_status='2'这两个SQL执行所得到的数据是一样的!工具:postgreSQL1.我们要清楚,sql的执行顺序:from语...