access可以單獨的上傳下載,操作它,本機不需要安裝access,而,sql的話,跟mysql相似,妳必須在本機安裝sql才能在本機上操作數據庫,當然也可以通過連接操作網絡上的sql數據庫,操作他們必須用項對應的驅動……
其實還有很多區別的,這裏壹時也說不清楚,還是自己體會來得深刻!
處了在處理更多數據時速度快外,另外還有有很多功能,在表上,數據上等,sql還有詳細的表單來記錄訪問情況等,雙機備份,等等,我也說不完
1、視圖:
SQL Server有視圖功能,這樣就不要壹個勁的寫很多SQL語句將多表串聯起來了。
2、存儲過程:
可以說目前絕大多數的數據庫應用程序用這個功能就可以完成對數據庫的操作了,提高了安全性,尤其是類似於組件功能,最關鍵壹點,速度,畢竟和系統是結合在壹起的。
3、觸發器:
有了觸發器,很多希望只有通過寫代碼才能完成的工作就不要做了。
access有極限,sql可以完全修復這些問題~壹旦access上了100mb,很容易造成服務器iis假死,或者吃光妳機子的內存~而且相對而言sql的數據備份比較方便,功能強大很多啊~,要看想用它來做什麽了壹個小型壹個大型!
動易程序Access和SQL Server數據庫的區別
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 where a.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_id AND 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_id Where 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中不能運行
參考資料: