access與SQL的區別和聯絡

2021-06-08 08:00:49 字數 4378 閱讀 2677

access是一種桌面資料庫,只適合資料量少的應用,在處理少量資料和單機訪問的資料庫時是很好的,效率也很高。但是它的同時訪問客戶端不能多於4個。access資料庫有一定的極限,如果資料達到100m左右,很容易造成伺服器iis假死,或者消耗掉伺服器的記憶體導致伺服器崩潰。

sql server是基於伺服器端的中型的資料庫,可以適合大容量資料的應用,在功能上管理上也要比access要強得多。在處理海量資料的效率,後台開發的靈活性,可擴充套件性等方面強大。因為現在資料庫都使用標準的sql語言對資料庫進行管理,所以如果是標準sql語言,兩者基本上都可以通用的。sql server還有更多的擴充套件,可以用儲存過程,資料庫大小無極限限制

access與語句sqlserver的語句語法區別

1、 inser into …..select …from 語句:

在access中以下語句

insert into

pubsubjectacccopys(copy_id,acc_id,acc_pid,acc_name,acc_short,acc_comment,acc_pro,acc_type,sub_id_flag,acc_index) (select 200201,acc_id,acc_pid,acc_name,acc_short,acc_comment,acc_pro,acc_type,sub_id_flag,acc_index from pubsubjectacc where pubsubjectacc.co_type='03')

中後面"(select 200201******.co_type='03')"中的小括號("(",")")必須去掉才能執行,如下:

insert into

pubsubjectacccopys(copy_id,acc_id,acc_pid,acc_name,acc_short,acc_comment,acc_pro,acc_type,sub_id_flag,acc_index) select 200201,acc_id,acc_pid,acc_name,acc_short,acc_comment,acc_pro,acc_type,sub_id_flag,acc_index from pubsubjectacc where pubsubjectacc.co_type='03'

在sql server 中都可以

2、 inner join 語句1

strsql:='select a.user_id,a.user_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=c.copy_id) on a.user_id=c.user_id where

a.user_opcode=''' +edtuseropcode.text+''' and copy_name='''+tmpcopyname +'''';

應該改為

strsql:='select a.user_id,a.user_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=d.copy_id) on a.user_id=c.user_id where

a.user_opcode=''' +edtuseropcode.text+''' and copy_name='''+tmpcopyname +'''';

該行**的檢索條件錯誤:應該把c.copy_id=c.copy_id 改為c.copy_id=d.copy_id

注:兩種寫法都能在sql-server中執行,但c.copy_id=c.copy_id在access中不能執行

3、 inner join 語句2

strsql:='select copy_year,copy_name,a.copy_id from syscopys a inner join syscopysuser b on a.curcopy_flag=1

and a.copy_id=b.copy_id where b.user_id=' + '''' +tmppubuserid+ '''';

改為 strsql:='select copy_year,copy_name,a.copy_id from syscopys a inner join syscopysuser b on a.copy_id=b.copy_id wherea.curcopy_

flag=''1'' and b.user_id=' + '''' +tmppubuserid+ '''';

注:兩種寫法都能在sql-server中執行,但第一種在access中不能執行

4、 inner join語句3

sql server 中可以執行以下語句

'select distinct sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort from sysoption inner join sysroleoption on sysoption.opti_id=sysroleoption.opti_idand sysroleoption.role_id=:roleid'

但access中不能,只能

'select distinct sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort from sysoption inner join sysroleoption on sysoption.opti_id=sysroleoption.opti_idwhere sysroleoption.role_id=:roleid'

5、 update語句

sql server 中能執行但access 中不能

'update sysuserrole set sysuserrole.role_sort = (select sysrole.role_sort from sysrole where sysuserrole.role_id = sysrole.role_id and sysuserrole.user_id='01')'

6、 日期比較

sql server 中用

strsql:='select copy_year,start_month,cur_month,start_flag,start_date,end_date '

+'from syscopys '

+'where copy_id='''+logincopyid+''' '

+'and start_date<='''+datetostr(logindate)+''' '

+'and end_date>='''+datetostr(logindate)+'''';

access中用

strsql:='select copy_year,start_month,cur_month,start_flag,start_date,end_date '

+'from syscopys ' 

+'where copy_id='''+logincopyid+''' '

+'and start_date<=#'+datetostr(logindate)+'# '

+'and end_date>=#'+datetostr(logindate)+'#'

參考以上的第10個函式「getdatestr」

7、 最大數值獲取語句

strsql:='insert into sysroleoption '

+'select '''+fidroleid+''' as role_id,opti_id,'

+'convert(numeric,opti_id)-(convert(numeric,opti_parentid)*100)+'+ maxoptisort

+' as opti_sort from sysoption where opti_parentid='''

+pcotypeid(self.trvroles.selected.data)^.strcotypeid

+''' and opti_bottom=''1'+'''';

改為 strsql:='insert into sysroleoption '

+'select '''+fidroleid+''' as role_id,opti_id,'

+'opti_id-opti_parentid*100+'+ maxoptisort

+' as opti_sort from sysoption where opti_parentid='''

+pcotypeid(self.trvroles.selected.data)^.strcotypeid

+''' and opti_bottom=''1'+''''

注:兩種寫法都能在sql-server中執行,但第一種在access中不能執行

TCP IP, HTTP,SOCKET的區別與聯絡

網路由下向上可分為 物理層,資料鏈路層,網路層,傳輸層,會話層,表示層和應用層。通過初步的了解,我知道ip協議對應網路層,tcp協議對應傳輸層,而http協議對應於應用層。三者從本質上來說沒有可比性。socket從程式設計師層面上就是對tcp ip協議的封裝和使用。也可以說tcp ip協議是傳輸層協...

mtine,ctime,atime的區別與聯絡

access time.modify time.change time分別代表什麼意義 linux系統中有三個主要的時間屬性,分別是ctime change time atime access time mtime modify time 他們具體有何意義?他們之間有何聯絡與區別呢?下面我來介紹一下...

MOLAP ROLAP HOLAP的區別和聯絡

在olap的世界裡,主要有兩種不同的型別 多維聯機分析處理 molap 和關係型聯機分析處理 rolap 混合聯機分析處理指的是molap和rolap技術的結合。這是olap分析的傳統方式。在molap中,資料儲存在乙個多維資料集 cube 中,儲存並不是在傳統的關係型資料庫中,而是自定義的格式。卓...