转:DB2中实现Oracle的功能



转自:http://blog.sina.com.cn/s/blog_54022ef1010002ga.html



1.如何实现分页显示的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>select rownum,* from BSEMPMS where rownum >=5 and rownum <=100;
  DB2 可以这样实现﹕
  select * from (select ROW_NUMBER() over() as a, db2admin.bsempms.* from
  db2admin.bsempms) as temp where a>=5 and a<=100 ;
2.利用别的表创建表的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>create table a as select * from b ;
  DB2 可以这样实现﹕
  create table a like b ;
3.如何更改用户密码的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>alter user user123 identified by password_new;
  DB2 可以这样实现﹕
  connect to dbname user db2admin using oldpassw new newpassw confirm newpassw ;
4.如何增加用户的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>create user user123 identified by password_new;
  DB2 可以这样实现﹕
  添加用户:
 “开始/设置/控制面板/用户”添加一个用户名(例:db2admin)
  分配权限:
  grant dbadm on database to user 用户名
5.两个结果集互减的函数的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW;
  DB2 可以这样实现﹕
  SELECT * FROM BSEMPMS_OLD EXCEPT SELECT * FROM BSEMPMS_NEW;
  SELECT * FROM BSEMPMS_OLD EXCEPT ALL SELECT * FROM BSEMPMS_NEW;
6.两个结果集互加的函数的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW;
  SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW;
  SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW;
  DB2 可以这样实现﹕
  SELECT * FROM  DB2ADMIN.BSEMPMS
  UNION
  SELECT * FROM  DB2ADMIN.BSEMPMS ;
  SELECT * FROM  DB2ADMIN.BSEMPMS
  UNION  ALL
  SELECT * FROM  DB2ADMIN.BSEMPMS ;
7.如何找数据库表的主键字段的名称的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and   table_name='TABLE_NAME';
  DB2 可以这样实现﹕
  select colnames from syscat.indexes where tabname='TABLE_NAME' ;


1.如何查有多少个数据库实例的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>SELECT * FROM V$INSTANCE;
  DB2 可以这样实现﹕
  在命令窗口执行 db2ilist
2.如何查询数据库有多少表的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>select * from all_tables;
  DB2 可以这样实现﹕
  在命令中心执行
  select   from syscat.tables;
3.如何知道表锁的情况的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0,  'None', 1, 'Null', 2, 'Row-S   (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(LMODE))   MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4,   'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(REQUEST)) MODE_REQUESTED,   O.OWNER||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')', S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1,   L.ID2 LOCK_ID2 FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S WHERE L.SID = S.SID AND   L.ID1 = O.OBJECT_ID
  DB2 可以这样实现﹕
  在你执行你的存储过程之前,执行命令打开锁的监视开光
  db2 update monisor switches using lock on ;
  然后执行你的存储过程,在执行存储过程期间的时候使用命令
  db2 get snapshot for locks on yourdatdabasename ;
  就可以看见了你锁情况了
4.如何对锁住的表进行解锁的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>alter system kill session 'sid,service#';
  DB2 可以这样实现﹕
  db2 force application all ;
  db2 terminate ;
5.测试SQL语句执行所用的时间的Oracle和DB2的写法
  Oracle 可以这样实现﹕
  SQL>set timing on ;
  SQL>select * from tablename;
  DB2 可以这样实现﹕
  db2batch -d 库名 -f 含有SQL语句的文件名 ;


1.如何查看数据库的版本的Oracle和DB2的写法
 Oracle可以这样实现﹕
 SQL>connectsystem/manager124@test;
 已联机.
 SQL>select*fromv$version;

 BANNER
 ----------------------------------------------------------------
 Oracle9iEnterpriseEditionRelease9.2.0.1.0-Production
 PL/SQLRelease9.2.0.1.0-Production
 CORE   9.2.0.1.0      Production
 TNSfor32-bitWindows:Version9.2.0.1.0-Production
 NLSRTLVersion9.2.0.1.0-Production

 DB2可以这样实现﹕
 在命令窗口执行db2level
 D:\SQLLIB\BIN>db2level
 DB210851Instance"DB2"usesDB2coderelease"SQL07020"withlevelidentifier
 "03010105"andinformationaltokens"DB2v7.1.0.40","n010415"and"WR21254".
2.如何快速清空一个大表的Oracle和DB2的写法
 Oracle可以这样实现﹕
 SQL>truncatetabletable_name;
 DB2可以这样实现﹕
 altertabletable_nameactivenotloggedinitiallywithemptytable;
3.如何查看表空间的使用状况的Oracle和DB2的写法
 Oracle可以这样实现﹕
 SELECTtablespace_name,max_m,count_blocksfree_blk_cnt,      sum_free_m,to_char(100*sum_free_m/sum_m,'99.99')||'%'AS

pct_free
 FROM(SELECTtablespace_name,sum(bytes)/1024/1024ASsum_mFROMdba_data_filesGROUPBY  tablespace_name),
 (SELECTtablespace_nameASfs_ts_name,max(bytes)/1024/1024ASmax_m,count(blocks)AS   count_blocks,

sum(bytes/1024/1024)ASsum_free_mFROMdba_free_spaceGROUPBY      tablespace_name)
 WHEREtablespace_name=fs_ts_name
 DB2可以这样实现﹕
 listtablespacecontainersfor你的表空间号showdetail;
4.如何从一时间点取出日期的各部分的常用的Oracle和DB2的写法
 Oracle可以这样实现﹕
 1>.取时间点的年份的写法:
    SELECTTO_CHAR(SYSDATE,'YYYY')FROMDUAL;
 2>.取时间点的月份的写法:
    SELECTTO_CHAR(SYSDATE,'MM')FROMDUAL;
 3>.取时间点的日的写法:
    SELECTTO_CHAR(SYSDATE,'DD')FROMDUAL;
 4>.取时间点的时的写法:
    SELECTTO_CHAR(SYSDATE,'HH24')FROMDUAL;
 5>.取时间点的分的写法:
    SELECTTO_CHAR(SYSDATE,'MI')FROMDUAL;
 6>.取时间点的秒的写法:
    SELECTTO_CHAR(SYSDATE,'SS')FROMDUAL;
 7>.取时间点的毫秒的写法:(9I以上)
    selectSUBSTR(systimestamp,20,6)fromdual;
 8>.取时间点的日期的写法:
    SELECTTRUNC(SYSDATE)FROMDUAL;
 9>.取时间点的时间的写法:
    SELECTTO_CHAR(SYSDATE,'HH24:MI:SS')FROMDUAL;
 10>.日期,时间形态变为字符形态
    SELECTTO_CHAR(SYSDATE)FROMDUAL;
 11>.将字符串转换成日期或时间形态:
    SELECTTO_DATE('2003/08/01')FROMDUAL;
 12>.返回参数的星期几的写法:
    SELECTTO_CHAR(SYSDATE,'D')FROMDUAL;
 13>.返回参数一年中的第几天的写法:
    SELECTTO_CHAR(SYSDATE,'DDD')FROMDUAL;
 14>.返回午夜和参数中指定的时间值之间的秒数的写法:
    SELECTTO_CHAR(SYSDATE,'SSSSS')FROMDUAL;
 15>.返回参数中一年的第几周的写法:
    SELECTTO_CHAR(SYSDATE,'WW')FROMDUAL;
 
 DB2可以这样实现﹕
 1>.取时间点的年份的写法:
    SELECTYEAR(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 2>.取时间点的月份的写法:
    SELECTMONTH(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 3>.取时间点的日的写法:
    SELECTDAY(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 4>.取时间点的时的写法:
    SELECTHOUR(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 5>.取时间点的分的写法:
    SELECTMINUTE(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 6>.取时间点的秒的写法:
    SELECTSECOND(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 7>.取时间点的毫秒的写法:
    SELECTMICROSECOND(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 8>.取时间点的日期的写法:
    SELECTDATE(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 9>.取时间点的时间的写法:
    SELECTTIME(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 10>.日期,时间形态变为字符形态:
    SELECTchar(currentdate)FROMSYSIBM.SYSDUMMY1;
    SELECTchar(currenttime)FROMSYSIBM.SYSDUMMY1;
    SELECTchar(currentdate+12hours)FROMSYSIBM.SYSDUMMY1;
 11>.将字符串转换成日期或时间形态:
    SELECTTIMESTAMP('2002-10-20-12.00.00.000000')FROMSYSIBM.SYSDUMMY1;
    SELECTTIMESTAMP('2002-10-2012:00:00')FROMSYSIBM.SYSDUMMY1;
    SELECTDATE('2002-10-20')FROMSYSIBM.SYSDUMMY1;
    SELECTDATE('10/20/2002')FROMSYSIBM.SYSDUMMY1;
    SELECTTIME('12:00:00')FROMSYSIBM.SYSDUMMY1;
    SELECTTIME('12.00.00')FROMSYSIBM.SYSDUMMY1;
 12>.返回参数的星期几的写法:
    SELECTDAYNAME(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
    SELECTDAYOFWEEK(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
    SELECTDAYOFWEEK_ISO(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 13>.返回参数一年中的第几天的写法:
    SELECTDAYOFYEAR(currenttimestamp) FROMSYSIBM.SYSDUMMY1;
 14>.返回午夜和参数中指定的时间值之间的秒数的写法:
    SELECTMIDNIGHT_SECONDS(currenttimestamp)FORMSYSIBM.SYSDUMMY1;
 15>.返回参数中一年的第几周的写法:
    SELECTWEEK(currenttimestamp)FORMSYSIBM.SYSDUMMY1;

在DB2中如何实现Oracle的相关功能
 
在现实的应用中大家可能经常会遇到在DB2中如何实现Oracle的某些功能﹐在此我简单地总结一下﹐实现某一功能可能会有很多种方法﹐在此就没有全部列出﹐欢迎大家继续﹐以便和大家共享﹐共同探讨﹐共同近步﹗(以下主要以Oracle8I和DB2 7.X为例)。

1.如何取一表前n笔记录的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select * from user.bsempms where rownum<=n;
DB2 可以这样实现﹕
Select * from db2admin.bsempms fetch first n rows only;
另外也可以用 row_number() over() 去实现的;

2.如何取得当前日期的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select sysdate from dual;
DB2 可以这样实现﹕
Select current timestamp from sysibm.sysdummy1;

3.如何连接字段的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select emp_no||emp_nam from bsempms;
Select concat(emp_no,emp_nam) from bsempms;
DB2 可以这样实现﹕
Select emp_no||emp_nam from db2admin.bsempms;
select emp_no concat emp_nam from db2admin.bsempms;

4.如何查询表的结构的Oracle和DB2的写法
Oracle 可以这样实现﹕
Select sysdate from dual;
DB2 可以这样实现﹕
Select current timestamp from sysibm.sysdummy1;

5.内连接INNER JOIN的Oracle和DB2的写法
Oracle可以这样实现﹕
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;
DB2 可以这样实现﹕
Select * from db2admin.bsempms inner join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;

6.外连接的Oracle和DB2的写法(右外连接,左外连接,完全外连接,组合外连接)
Oracle可以这样实现﹕
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
DB2 可以这样实现﹕
Select * from db2admin.bsempms right outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
Select * from db2admin.bsempms left outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;
Select * from db2admin.bsempms full outer join db2admin.bsdptms
on db2admin.bsempms.dpt_no=db2admin.bsdptms.dpt_no;

7.如何执行脚本SQL文件的Oracle和DB2的写法
Oracle 可以这样实现﹕
SQL>@$PATH/filename.sql;
DB2 可以这样实现﹕
db2 -tvf $PATH/filename.sql 文件中每行以 ; 结尾

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像的目标属于哪个类别。 定位问题:确定目标在图像的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值