各种数据库使用差别[2004年4月17日 21:52]

以下存属个人意见,有问题请在下面提出:(*表示须考证,Oracle用8.1.6)

1.选定前20条记录

ORACLE:select * from tablename where rownum<20;

SQL SERVER:select top 20 * from tablename;

2.连接别的数据库

ORACLE:

Create Database Link DB_LINK_OHAHU Connect On User Name Identified By Password Using 'Connection String'; //创建数据连接

'Connection String'可以用NET8 EASY CONFIG或者直接用TNSNAMES.ORA里定义的服务名称

Select * from TableName@DB_LINK_OHAHU; //使用DB_LINK_OHAHU上的表TableName;

SQL SERVER: insert into
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
   'e:/db/aa.mdb';'admin';'', t1)
select * from t1;

ACCESS:SELECT * Into [;database=e:/db/aa.mdb;PWD=密码].t1 FROM t1;

3.关于Select Into;

ORACLE:

nCnt integer

select count(fieldname) into nCnt from tablename;//把Count(*)存放到变量nCnt;

SQL SERVER:

Select * into TableName2 From TableName1;//把TableName1的数据存到TableName2,包括数据库结构

4.日期字段的问题

ORACLE :Select * from TableName Where FieldName > To_date('1981-02-23', 'YYYY-mm-dd');

上面只是说Oracle只能用'作为分割符,实际上对于日期型字段,Oracle的显示很奇特比如1981-8-20,select出来的格式是'20-8月 -81'所以查找的时候还是要>'20-8月 -81'才能用。另外好像DateDiff在Oracle中也不支持

Access:

Select * from TableName Where FieldName>'1981-2-23';

Select * from TableName Where FieldName>#1981-2-23#;

都可以,高级一点参考DateDiff的用法

5.字段自增

ORACLE 要用到生成序列,触发器:

CREATE SEQUENCE SEQname
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
/
CREATE TRIGGER TRGname
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.FIELDname
FROM DUAL;
End;
/

ACCESS:Create Table TableName(LID AutoIncrement(1,1),......

SQL SERVER:Create Table TableName ( LID Int Identity(1,1),..........

Identity(种子,增长速度) ,AutoIncrement(种子,增长速度) 

6.默认登陆方法

ORACLE:用控制台程序SQLPLUS或者DBA。连接外服务须在tnsnames.ora上添加服务。SQLPLUS使用方法:命令行下面输入>sqlplus 用户名/密码[@服务名]

用户名:     密码:

SYSTEM      MANAGER               //可以管理大部分的工作:表空间、用户、授权、数据文件等

sys                 change_on_install        //比system的权限更高,经常用来设置系统的参数,或者特殊系统视图

internal           oracle                          //经常用在通过svrmgrl来启动关闭数据库,因为缺省是os认证,所以不需要密码

SQL SERVER:用企业管理器或者查询分析器

用户名:sa  密码:sa   //可用系统认证方式登陆

7.用ADO操作的问题*

ORACLE:当数据集为空的时候不能m_pRs->MoveFirst();

ACCESS,SQL SERVER:可以

8.关于Order By语句

select * from (select a,b from tablename order by a) tmp;

这样的句子在Oracle不会有问题,可是SQL SERVER中却会提示错误。

错误原因是Order By 作为子句的时候必须用Top关键字,解决的方法:

select * from (select top 100 percent a,b from tablename order by a) tmp;

top 100 percent表示选出百分百的纪录

另外还有需要注意的地方,无论是Oracle还是Sql Server。

使用Group By关键字的时候Order By的字段名称和Select的字段名称,都必须能在Select的字段名称找到,比如下面有两个错误:

select a from tablename group by b order by c

下面网页可提供参考:

数据库总结(一)---各种数据库使用差别
http://community.csdn.net/Expert/topic/3108/3108440.xml?temp=.6947443

Oracle 和 mysql 的一些简单命令对比参照
http://202.101.18.235/club/bbs/showEssence.asp?id=22161&page=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值