pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)

与oracle的区别

1、数据类型区别

Oracle

PostgresQL

注释

VARCHAR2

VARCHAR(character

varying)

Long、

CLOB

TEXT

DATE

DATE/TIME/TIMESTAMP

DATE仅包含日期、TIME仅包含时间、TIMESTAMP均包含,通常使用DATE

NUMBER

SMALLINT/INTEGER/BIGINT/NUMERIC/REAL/DOUBLE

PRECISION

通常可用NUMERIC

BLOB

BYTEA

sysdate

now()、O_TIMESTAMP(CURRENT_TIMESTAMP,'YYYY-MM-DD

HH24:MI:SS')、CURRENT_TIMESTAMP

取系统当前时间

--PostgresQL中字段名称区分大小写,为保证兼容性,强烈建议脚本中的字符均用小写,这样在SQL语句中将忽略大小写--PostgresQL中字段类型的括号中只能出现数字

2、语句与方法的区别

Function

Returns

Description

Example

to_char(timestamp,

text)

text

convert time stamp to

string

to_char(timestamp

'now','HH12:MI:SS')

to_char(interval,

text)

text

convert interval to

string

to_char(interval '15h

2m 12s','HH24:MI:SS')

to_char(int,

text)

text

convert integer to

string

to_char(125,

'999')

to_char(double

precision, text)

text

convert real/double

precision to string

to_char(125.8,

'999D9')

to_char(numeric,

text)

text

convert numeric to

string

to_char(numeric

'-125.8', '999D99S')

to_date(text,

text)

date

convert string to

date

to_date('05 Dec 2000',

'DD Mon YYYY')

to_timestamp(text,

text)

timestamp

convert string to time

stamp

to_timestamp('05 Dec

2000', 'DD Mon YYYY')

to_number(text,

text)

numeric

convert string to

numeric

to_number('12,454.8-',

'99G999D9S')

(1)注意增加约束时的写法,和ORACLE略有不同

Oracle:

ALTER TABLE SCHEMA.PREFIX_INFO ADD (

CONSTRAINT

PK_PREFIX_INFO PRIMARY KEY (INFO_ID));

PostgresQL:

alter table schema.prefix_info add

constraint prefix_info_pkey primary key(info_id);

(2)系统默认的最大值与ORACLE不同

Oracle:

CREATE SEQUENCE

PREFIX_INFO_SEQUENCE

INCREMENT BY 1

START WITH 582

MINVALUE 1

MAXVALUE 9999999999999999999999999999

NOCYCLE

CACHE 20

NOORDER;

PostgresQL:

CREATE SEQUENCE

schema.prefix_info_sequence

increment 1

minvalue 1

maxvalue

9223372036854775807

start 582

cache 20;

(3)PostgresQL中的

||用法与其他数据库不同:select a||b from

table1;当a或b其中一个为null时,该查询返回null,

(4)PostgresQL中没有concat函数,且由于||用法的问题,无法使用||替换,解决方法为在public

schema中创建函数concat

create or replace function

concat(text, text)

returns text as

$body$select coalesce($1,'') ||

coalesce($2,'')$body$

language 'sql' volatile;

alter function concat(text,

text) owner to postgres;

--无需特殊授权即可在其他schema中使用

(4)PostgresQL中没有dual虚拟表,为保证程序兼容性,可创建伪视图(view)替代:

CREATE OR REPLACE VIEW dual AS

SELECT NULL::"unknown"

WHERE 1 = 1;

ALTER TABLE dual

OWNER TO postgres;

GRANT ALL ON TABLE dual TO postgres;

GRANT SELECT ON

TABLE dual TO public;

必须授权public以select权限

(5)关联查询用法区别

ORACLE:

简单外连接:

SELECT

COUNT(DISTINCT(A.COL1)) AS RCOUNT FROM

SCHEMA.PREFIX_TABLE1

A,SCHEMA.PREFIX_TABLE2 B

WHERE 1 = 1

AND A.COL2 = B.COL2(+)

AND A.COL3

> 0

AND A.COL4 = '1'

超级变态外连接:

SELECT

COUNT(DISTINCT(A.COL1)) AS RCOUNT FROM

SCHEMA.PREFIX_TABLE1

A,SCHEMA.PREFIX_TABLE2 B,SCHEMA.PREFIX_TABLE3 C,SCHEMA.PREFIX_TABLE4 D

WHERE

1 = 1

AND A.COL2 = B.COL2

AND A.COL3 = C.COL3(+)

AND A.COL4 =

D.COL4(+)

AND A.COL5 > 0

AND A.COL6 = '1'

POSTGRESQL:

简单外连接:

select

count(distinct(a.col1)) as rcount from

schema.prefix_table1 a left outer

join schema.prefix_table2 b on (a.col2 = b.col2)

where 1 = 1

and a.col3

> 0

and a.col4 = '1'

超级变态外连接:

select

count(distinct(a.col1)) as rcount from

schema.prefix_table1 a inner join

schema.prefix_table2 b on (a.col2 = b.col2)

left outer join

schema.prefix_table3 c on (a.col3 = c.col3)

left outer join

schema.prefix_table4 d on (a.col4 = d.col4)

where 1 = 1

and a.col5 >

0

and a.col6 = '1'

(6)PostgresQL中子查询较为规范,子查询结果集必须拥有alias

ORACLE:

SELECT * FROM (

SELECT

* FROM (

SELECT * FROM SCHEMA.PREFIX_TABLE ORDER BY COL1

) WHERE X=1 ORDER

BY COL2

) WHERE Y=2 ORDER BY COL3

POSTGRESQL:

SELECT * FROM (

SELECT * FROM

(

SELECT * FROM SCHEMA.PREFIX_TABLE ORDER BY COL1 ALIAS1

) WHERE X=1 ORDER

BY COL2 ALIAS2

) WHERE Y=2 ORDER BY COL3

(7)

PostgresQL中没有rownum,无法使用where rownum < =

X的方法进行分页,取而代之的是limit X,offset

Y方法,而ORACLE中不允许使用LIMIT

X的方法

ORACLE:

SELECT * FROM ( SELECT * FROM (SELECT

* FROM SCHEMA.PREFIX_TABLE1 ORDER BY COL1 DESC,COL2 ASC) where ROWNUM <= 50

ORDER BY COL3 ASC,COL4 DESC)

WHERE ROWNUM <= 20 ORDER BY COL5 DESC,COL6

ASC;

POSTGRES:

select * from ( select * from (SELECT

* FROM SCHEMA.PREFIX_TABLE1 ORDER BY COL1 DESC,COL2 ASC) selb order by col3

asc,col4 desc limit 50 ) sela

order by col5 desc,col6 asc limit

20;

--注意!!limit必须用于order by之后

--例:取1到50条数据

select * from

VOIP_FEE_RATE temp offset 0 limit 50

(8)序列使用的区别

ORACLE:SELECT SCHEMA.PREFIX_TABLE1_SEQUENCE.NEXTVAL AS nCode

FROM DUAL

POSTGRES:SELECT

NEXTVAL('SCHEMA.PREFIX_TABLE1_SEQUENCE') AS nCode FROM DUAL

--注意,此方法前提是dual视图已建立,如没有,可省略FROM

DUAL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 数据分析排名_2018年上半年热门编程语言排行榜

2018上半年热门编程语言有哪些&#xff1f;新手怎么选择合适的编程语言&#xff0c;以及我们这些老鸟们&#xff0c;怎么规划自身的职业发展&#xff0c;拓展编程技能&#xff0c;接下来为大家提供参考建议&#xff01;1PythonPython的历史可以追溯到1989年&#xff0c;因其高度…

oracle 双引号替换,oracle - Oracle SQL-Loader在值中有效地处理内部双引号 - SO中文参考 - www.soinside.com...

如果您在封闭的字段中没有管道&#xff0c;则可以从控制文件中执行此操作。如果你可以在一个字段中同时拥有管道和双引号&#xff0c;那么我认为你别无选择&#xff0c;只能对这些文件进行预处理。你的解决方案[1]&#xff0c;取代双引号with an SQL operator&#xff0c;发生得…

切片器可以设置日期格式?_Power BI 中的切片器

何时使用切片器在要完成以下操作时&#xff0c;切片器非常有用&#xff1a;在报表画布上显示常用或重要的筛选器&#xff0c;用以简化访问。更轻松地查看当前筛选的状态&#xff0c;而无需打开下拉列表。按数据表中不需要的和隐藏的列进行筛选。通过将切片器放置在重要的视觉对…

linux打印jvm内存堆栈_5款强大的JVM 性能调优监控工具

原文链接&#xff1a;www.iteye.com/blog/josh-persistence-2161848现实企业级Java应用开发、维护中&#xff0c;有时候我们会碰到下面这些问题&#xff1a;OutOfMemoryError&#xff0c;内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高......这些问题在日…

oracle命令行查看编码,Oracle数据库查看编码和修改编码

首先查看oracle数据库的编码SQL> select * from nls_database_parameters where parameter NLS_CHARACTERSET;PARAMETER--------------------VALUE--------------------NLS_CHARACTERSETAL32UTF8这其来源于props$&#xff0c;这是表示数据库的字符集。oracle客户端编码SQL&g…

eclipse的tomcat如何运行自动弹网页_4个国外网页设计网站案例欣赏

原标题&#xff1a;4个国外网页设计网站案例欣赏要想把自己的网站制作得更加美观、吸引人&#xff0c;你需要多参考一些高质量的网站设计案例。今天就给大家看几个比较好的国外网页设计网站&#xff0c;你可以从中学习这些国外网页设计的思路。1.礼盒电商网站如何让自己的网站更…

参数调优为什么要采样_3年Java外包,内推阿里过关斩将,最后却倒在调优经验上! - Java架构师追风...

前言在当下的时代&#xff0c;懂高并发性能调优&#xff0c;一定是你在技术进阶赛道变得牛逼的加分项。不论&#xff0c;你是开发&#xff0c;架构还是管理岗&#xff0c;亦或者是其他互联网相关岗位。 因为毫不夸张的说&#xff0c;在现在动辄过千万级的并发流量环境下&#x…

ai算子是什么_隐私AI框架中的数据流动与工程实现

在上一篇文章中&#xff0c;我们介绍了&#xff0c;对于安全技术开发者&#xff0c;如何快速的基于 Rosetta 等隐私 AI 框架所提供的一系列接口&#xff0c;将自己的安全协议集成落地到上层的 AI 应用中来。在这一篇文章中&#xff0c;我们将介绍为了保护用户的隐私数据&#x…

oracle存储过程 ppt,oracle_存储过程培训(动画版本)详解.ppt

存储过程 ORACLE 和informix 存储过程区别 10.赋值 Oracle: v_1 : 100; Informix: let v_1 100; 2009/07/09 尚洋信德 存储过程 练习 创建一个存储过程, 使用游标从dept表中取BID为’010’开头的记录信息, 把它往表t01_psn中插入一条记录,并且循环打印插入的数据记录. 2009/07…

从零开始学电脑_带你从零开始学装机 打造自己的专属电脑之固态和机械硬盘搭配篇...

前几天我们分别讲了自己装配一台电脑&#xff0c;如何选择CPU、主板、内存和显卡。电脑的硬盘是安装操作系统和存储数据的地方&#xff0c;就好像我们现实中的仓库。一般电脑磁盘常见的组合方式有以下三种&#xff1a;1.纯机械硬盘(一般是1T或者2T)2.双硬盘(固态机械&#xff0…

java程序里繁体字显示为方块_网页 俄罗斯方块

游戏地址&#xff1a;俄罗斯方块 | Tetris​zhangxiaoleiwk.gitee.io看着眼熟&#xff1f;没错&#xff0c;UI 模仿了tetr.js&#xff0c;但代码是自己写的。只支持电脑端&#xff0c;不知道键位可以点击设置查看。游戏用纯 JavaScript、HTML、CSS 实现&#xff0c;图形用 canv…

oracle 日期6,EF 6与Oracle - 如何加入日期字段?

我正在使用EF 6与Oracle&#xff0c;我正在尝试使用员工编号和日期字段进行多列连接。我无法让LEFT OUTER JOIN正常工作&#xff0c;我很确定这是因为日期。我知道Oracle中的日期可能会非常棘手&#xff0c;我通常必须使用“TO_DATE”函数去掉HH&#xff1a;mm&#xff1a;ss&a…

windows分辨率修改工具_Windows 字体优化,这几个办法能帮你解决

如何改善 Windows 的字体渲染是一个亘古不变的话题&#xff0c;长期以来大家都有这样的一个印象&#xff1a;Windows 上面的字体渲染相比 macOS 没有那么细腻清晰。实际上&#xff0c;也确实是这个样子&#xff0c;由于 Windows 世界中参差不齐的硬件和向前兼容的「历史包袱」&…

fc安卓模拟器_RA替代计划(上)—3DS的全能模拟器太难用?推荐几个替代品给你...

玩模拟器的各位同好几乎没有没听过“全能模拟器”(中文译名&#xff0c;英文叫做Retroarch&#xff0c;简称RA&#xff0c;官网www.retroarch.com)的大名的&#xff0c;它的优点可以用一个字来概括&#xff0c;就是“全”。全能模拟器就是“全”第一&#xff0c;全模拟器支持。…

linux 命令 记忆方法,linux 记忆命令心得

新开始学linux&#xff0c;要记住很多的命令&#xff0c;毕竟这是linux的根本&#xff0c;没有这些命令&#xff0c;连操作都没办法进行。所以我写这个的目的是我自己记忆&#xff0c;也是想帮助一下一同学习linux的同学们&#xff0c;提供自己记忆这些的方法&#xff0c;抛砖引…

.net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法

在我们的工作和学习中&#xff0c;我们有时候需要将图片转换为PDF格式的文件。因为PDF格式的文件查看起来很不容易&#xff0c;所以它可以确保图片文件中的信息不被泄露。那么图片转PDF怎么转呢&#xff1f;大家可以参考下面这两种方法&#xff0c;一起来看看到底是怎么转换的吧…

vue axios 发送get请求传递参数给后端失败_Java之Vue插件之Axios

Java之Vue插件之Axios&#xff0c;环境安装&#xff1a;npm install --save axios vue-axios //安装axiosNpm install //安装依赖在main.js中注册import axios from axiosimport VueAxios from vue-axiosVue.use(VueAxios, axios)在对应组件的方法中&#xff0c;发送axios请求&…

linux c 服务程序,Linux C 后台服务程序单进程控制

介绍通常后台服务器程序都必须有且只有一个进程&#xff0c;那么如何单进程呢&#xff1f;本例子是通过flock函数对/var/run/myserver.pid记录pid文件的进行加锁若加锁不正常&#xff0c;说明后台服务进程已经在运行了&#xff0c;这时则直接报错退出若加锁成功&#xff0c;说明…

索尼录音笔怎么导出录音内容_录音笔十大品牌名单出炉!录音笔十大品牌排名榜单揭晓!...

录音笔给我们高速发展的生活带来了很大的便利&#xff0c;市场上录音笔品牌繁多&#xff0c;很多数码视听品牌都推出了自己的录音笔产品&#xff0c;那么我们在选购的录音笔的时候如何选择好品牌的录音笔呢&#xff1f;下面一起来看看十款好用的品牌录音笔排行&#xff0c;希望…

快速列出所有字段_快速掌握目标课题的研究现状 | 应用实例

Graphical Abstract摘要本文旨在利用文献分析工具“Bibliometrix”及其交互界面“Biblioshiny”&#xff0c;基于文献数据库的检索结果&#xff0c;快速获取目标课题的关键信息。相较于传统人为反复阅读的方法&#xff0c;该方法可高效实现以下重要功能&#xff1a;拓展和获取更…