数据库软件access与oracle区别

如题所述

1.函数名称不同。

2.      SQL语句实现的差别

1)Oracle支持连续的Left Join,但是Access不支持。

       Access实现Oracle的连续两个Left Join的方法:

       Select * From TblA Left Join

(Select * From TblB Left Join TblC )。

2)Access给字段起别名是必须用AS,但是Oracle不用AS也可以,建议起别名全部都用AS。

3)Oracle可以使用 Select Count( Distinct ColumnName ) From…..的语法,但是Access中不可以。Access中要实现这样的功能,要使用嵌套查询:

       Select Count(*) From

( Select Distinct ColumnName From Tbl….)

4)Oracle中,如果TblA Left Join TblB,那么结果集是TblA中数据的数量。但是在Access中,TblA Left Join TblB,结果集的数量是TblA* TblB的数量。

 在Oracle中,用一条SQL向一个递增的字段插入数据可以使用如下SQL:

       Insert Into TblA ( N_ID ) Values ( ( Select ( Nvl( Max(N_ID), 0 )+1 ) from TblA ) );

但是由于函数的不同,在Access中需要使用下面的SQL:

Insert Into TblA( N_ID ) Values ( IIF( IsNull(DLookUp( ‘Max(N_ID)+1’, ‘TblA’, ‘’ )  ), 1, DLookUp( ‘Max(N_ID)+1’, ‘TblA’, ‘’ ) ) );

DLookUp是Access的一个内置的函数,使用方法为:

DLookup("字段名称" , "表或查询名称" , "条件")

返回的结果为:从根据“条件”,从“表或查询名称”中查出“字段名称”的值。

3.      使用Delphi时遇到的一些问题的解决办法

1)不正常地定义参数对象。提供了不一致或不完整的信息

       这个错误经常出现在操作Access数据库的日期字段时发生。原因为,Delphi默认将:X认为是一个参数,而Access中的时间可以表示为#2007-01-01 10:11:12#,这样,Delphi在解析这个字符串时会出问题。

       解决方法有两个:

       一、 在给TADOQuery对象的SQL属性赋值前,先调用qry.ParamCheck := True;然后再执行后续操作。在操作完成后,执行qry.ParamCheck := False,恢复默认设置。

 

      二、 SQL语句中,将日期类型的字段全部作为参数来操作,例如:

       sSql := ‘Insert Into TblA ( D_Date ) values (:D_Date)’;

       qry.SQL.Text := sSql;

       qry.ParamByName(‘D_Date’).Value := DateValue;

 

2)类似于“不可更新的查询”的错误。

       Access数据库是只读的,更改使其为可写即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-07
access只是小型数据库。数据结构也很简单,没有什么cache概念。通常适用于数据记录不超过10W的小型应用程序。比如,电话本,个人博客,小型网站等等等。 oracle属于目前最大数据库之一。数据结构和SQL执行算法还有各种丰富索引很受欢迎。主要使用在大型数据存放业务流程。比如:中国电信客户数据,中国移动话费记录清单......等。 access是1-2岁的小毛孩 oracle是100岁的老人家。本回答被提问者采纳
相似回答