PostgreSQL和Oracle用法上的一些区别
(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 ou
相关文档:
在执行启动关闭命令之前需要正确设置下列环境变量:
ORACLE_BASE
ORACLE_HOME 安装过程中显示的oracle home 目录
ORACLE_SID
PATH=$PAHT:$ORACLE_HOME/bin
以 oracle 账号登陆 Linux,或者从 root 下输入 su - or ......
在Oracle数据库中,undo主要有三大作用:提供一致性读(Consistent Read)、回滚事务(Rollback Transaction)以及实例恢复(Instance Recovery)。 一致性读是相对于脏读(Dirty Read)而言的。假设某个表T中有10000条记录,获取所有记录需要15分钟时间。 ......
在前面学习Oracle数据库基础架构时,已经了解了Oracle的存储结构,逻辑上,Oracle的数据存放在tablespaces中,物理上存放在datafiles中。一个tablespace只能属于一个数据库(一个数据库可包括多个tablespace),包括了1个或多个数据文件。Tablespace可进一步分为segments、extents和blocks。一个datafile只属于一个数据库的一 ......
emp员工表
(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)
------1.选择部门30中的所有员工.
select ename
from emp
where deptno = 30;
------2.列出所有办事员(CLERK)的姓名,编号和部门编号.
select ename,empno,deptno
from emp
where job='CLERK';
--- ......
将查询的结果生成到文件中:
set echo on --是否显示执行的命令内容
set feedback off --是否显示 * rows selected
set heading off --是否显示字段的名称
set verify off --是否显示替代变量被替代前后的语句。fil
set trimspool off --去字段空格
set pagesize 1000 ......