Acess与SQL的区别
以下總結了自己在項目中所遇到的有關Acess與SQL差異的一些地方:
1,对于日期字段字段
access表示为:#1981-28-12#
SQLSERVER2000表示为:''1981-02-12''
2,SQL语句区别,_select,_update在对单表操作时都差不多,
但多表操作时update语句的区别ACCESS与SQLSERVER中的UPDATE语句对比:
SQLSERVER中更新多表的UPDATE语句:
_updateTab1
SET a.Name = b.Name
from Tab1 a,Tab2 b
WHERE a.ID = b.ID;
同样功能的SQL语句在ACCESS中应该是
_updateTab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有from子句,所有引用的表都列在UPDATE关键字后.
更新单表时:都为:
_updatetable1 set ab='12',cd=444 where ....
3,delete语句
access中删除时用:_delete* from table1 where a>2 即只要把_select语句里的_select换成delete就可以了。
sqlserve 中则为: _deletefrom table1 where a>2 即没有*号
4,as 后面的计算字段区别
access中可以这样:_selecta,sum(num) as kc_num,kc_num*num as all_kc_num 即可以把AS后的字段当作一个数据库字段参与计算。
sqlserver 中则为:_selecta,sum(num) as kc_num,sum(num)*num as all_kc_num 即不可以把AS后的字段当作一个数据库字段参与计算。
5,[.]与[!]的区别
access中多表联合查询时:_selecttab1!a as tab1a,tab2!b tab2b from tab1,tab2 ,中间的AS可以不要。
sqlserve 中则:_selecttab1.a as tab1a,tab2.b tab2b from tab1,tab2 ,中间的AS可以不要。
6,联合查询时,
access中多表联合查询:'_selecta,b from(
_selecta,b from tab1 where a>3 union _selectc,d from tab2 ) group by a,b
sqlserve 中则'_selecta,b from(
_selecta,b from tab1 where a>3 union _selectc,d from tab2 ) tmptable group by a,b即要加一个虚的表tmptable,表名任意。---
7,access升级到sqlserver时,
可以用sqlserver的数据导入工具导入数据,但要做必要的处理。
access中的自动编号,不会自动转换SQL中的自动编号,只能转换为int型,要把它手工改成标识字段,种子为1,把所有导入被sqlserver转化成的以n开头的字段类型的n去掉,如nvarchar->varchar.