Oracle与DB2常用语法对比

SQL四种语句类型:

1.数据定义语言 (DDL)
定义数据对象的属性。
例如. CREATE, ALTER, DROP, TRANSFER OWNERSHIP。
2.数据管理语言 (DML)
用来返回,添加,编辑和删除数据。
例如. SELECT, INSERT, UPDATE, DELETE。
3.数据控制语言 (DCL)
控制数据库和数据对象的访问。
例如. GRANT, REVOKE。

4.事务控制语言 (TCL)
将一组DML语句组合到事务中来集中地应用到一个数据库或者因为错误而处于未完成的状态。
例如. COMMIT, ROLLBACK, SAVEPOINT。

DB2与ORACLE语法对比

1.取前N条记录
Oracle:select * from tablename where rownum <= N;
DB2:select * from tablename fetch first N rows only;
2.取得系统时间
Oracle:Select sysdate from dual;
DB2:Select current timestamp from sysibm.sysdummy1;
Select current timestamp from sysibm.dual;
3.空值转换
Oracle:Select loginname, nvl(cur_rate,'0') from TableName;
DB2:Select loginname, nvl(nullif(cur_rate,’ ’),’0’) from TableName; (DB2v9.5以后已经支持)
4.隐性转换
Oracle: select 'abc' from dual where '1'=1 ;
DB2: select ‘abc’ from sysibm.dual where ‘1’=1;(DB2客户机9.5以前的不支持隐性转换)

5.数据类型转换函数

转换形式 ORACLE DB2 DB2兼容写法
整型转字符型 to_char(1) char(1) cast(1 as char)
字符串转整型 to_number('1') int(‘1’)、dec('1') cast('1' as int)
字符串转浮点型 to_number('1.1') Double(‘1.1’)
浮点型转字符串 to_char(1.1) char(1.1)

字符串转日期
oracle: to_date('2007-04-26','yyyy-mm-dd')
db2: date(‘2007-04-26’)、to_date('2007-04-26','yyyy-mm-dd')

日期转字符串
oracle: to_char(to_date(‘2007-04-29’,‘yyyy-mm-dd’),‘yyyy-mm-dd’),系统时间:sysdate
db2:char(date('2007-04-29'));
char(to_date(‘2007-04-26’,‘yyyy-mm-dd’))他会产生时分;to_char(to_date(‘2007-04-26’,‘yyyy-mm-dd’),‘yyyy-mm-dd’);
系统时间:current timestamp带有时分秒;current date


字符串转时间戳
oracle: to_date('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS’)
db2:to_date('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS')


6.取日期类型函数
Oracle:取年、月、日用:to_char(sysdate,’YYYY’),to_char(sysdate,’MM’) ,to_char(sysdate,’DD’)取得;只取年月日trunc(sysdate);取时分秒to_char(sysdate,’HH24:MI:SS’)。
DB2:取年、月、日用:year(current timestamp),month(current timestamp),day(current timestamp),hour(current timestamp),minute(current timestamp),second(current timestamp),microsecond(current timestamp);只取年月日date(current timestamp),取时分秒time(current timestamp)。字符串转换为时间timestamp(‘2012-10-20 12:00:00’),date(‘2012-10-20’),date(‘10/20/2002’),time(‘12:00:00’)。
7.快速清空大表
Oracle:truncate table tableName;
DB2:alter table tableName activate not logged initially with empty table;
8.创建类似的表
Oracle:create table a as select * from tableName;
DB2: create table a like tableName 或create table a as(select * from hh_app.a) definition only in tbs_hh;
9.插入数据(insert)
DB2:insert into a values(1,’tt’),(2,’bb’);
10.更新数据(update)
Oracle:update a set a=100,b=200;
DB2:update a set (a,b)=(100,200); update a set a=100,b=200


DB2常用视图
1.查询当前用户有N张表
select count(*) from sysibm.SYSTABLES where creator='APP_D'
2.查询当前DB2的版本
select * from sysibm.sysvERSIONS
3.查询TABLESPACE的状况
select * from sysibm.SYSTABLESPACES
4.查询DB2的数据类型
select * from sysibm.SYSDATATYPES
5.查询BUFFERPOOLS状况
select * from sysibm.SYSBUFFERPOOLS
6.查看表的约束
select * from SYSCAT.CHECKS WHERE TABNAME=‘AAA'
7.查询DB2分区
select * from syscat.DATAPARTITIONS
8.查看数据库的存储过程
select * from SYSCAT.PROCEDURES
9.查询SEQUENCE的状况
select * from sysibm.SYSSEQUENCES
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值