当前位置: 移动技术网 > IT编程>数据库>MSSQL > PostgreSQL特性和与ORACLE的区别

PostgreSQL特性和与ORACLE的区别

2020年07月14日  | 移动技术网IT编程  | 我要评论

PostgreSQL特性和与ORACLE的区别

角色Role:管理数据库访问权限。根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。角色可以拥有数据库对象(比如表)以及可 以把这些对象上的权限赋予其它角色,以控制谁拥有访问哪些对象的权限。
用户User:其实用户和角色都是角色,只是用户是具有登录权限的角色。
模式Schema:一个数据库包含一个或多个命名模式,模式中包含着表。模式还包含其他类型的命名对象,包括数据类型、函数和操作符。相同的对象名称可以被用于不同的模式中而不会出现冲突。
PG重要变量search_path:系统将沿着一条搜索路径来决定该名称指的是哪个表,搜索路径是一个进行查看的模式列表。 搜索路径中第一个匹配的表将被认为是所需要的。如果在搜索路径中没有任何匹配,即使在数据库的其他模式中存在匹配的表名也将会报告一个错误。
搜索路径中的第一个模式被称为当前模式。除了是第一个被搜索的模式外,如果CREATE TABLE命令没有指定模式名,它将是新创建表所在的模式。
要显示当前搜索路径,使用下面的命令: show search_path。
PG数据类型-数字型:
数据类型
类型选择:若对精度要求高,对性能优先级低,建议是用numeric或者其他合适类型,比如money
多零问题解决办法:格式化: rtrim(to_char(小数,‘FM99999990.99’),’.’)

字符型在这里插入图片描述
通常情况下使用:text或者character varting
日期可以接受任何合理格式,不需要像oracle加上date

查询语句语法差异:
别名:子查询必须使用别名,case不能作为别名,name可做表别名,作为字段别名需要加关键词as
差集: except(oracle使用minus )
去重: distinct(不能使用oracle的uniq )
offset:偏移,从0开始
limit:条数限制
序列查询:select nextval(‘sequenceName’)/currval('sequenceName’)
ctid:表示数据记录的物理行当信息
日期表示:current_date、now()/current_timestamp、sysdate()
类型强转符号(双冒号) ::
空串:空串与null不等同,空串长度为零的字符串,已修改内核跟oracle保持一致
delete,update语句:
delete from:不能缺少from
update table_name t set column=values:更新字段不能带别名
for循环写法:

DECLARE
	--PG中for循环接受的变量需预定义
    i record;
BEGIN
FOR i IN (select * from t_cursor1)
 loop
   --在PG中增加这条语句将无法执行
   --exit when not found;
   raise notice '%',i.name; 
 end loop;
 end;

特色函数:
wm_contant 结果text类型,无需to_char
string_agg:返回的类型是text ,可以无限长。 可以达到1g 的长度。
lengthb :select lengthb(‘中国’) ,结果:6
ratio_to_report(pg没有)
ratio_to_report(bal)over() bal/nullif(sum(bal) over(),0)

本文地址:https://blog.csdn.net/Super__Bill/article/details/106144517

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网