许多兄弟想用SQL2000数据库的编程办法,可是却又苦于自个是学ACCESS的,对SQL仅仅一点点的了解罢了,这儿我给咱们供给以下参阅---将ACCESS转化成SQL2000的办法和注意事项
首先,我说的是在ACCESS2000,SQL2000之间变换,别的的我也还没有尝试过,希望咱们多多实验,肯定是有办法的。
变换的办法
1、翻开“控制面板”下“管理东西”中的“数据库源”。
2、按”增加“增加一个新的数据源,在挑选栏里选“Driver do microsoft Access (*.mdb)”,完成后将呈现一个框,在“数据库源”里边输入你想写的称号,我取名叫“ABC”,阐明不需求填,接着,按下面的挑选,寻觅你的数据库地址和选中(注意,请先备份自个的ACCESS数据库),然后断定。数据源在这儿建好了,剩下变换了。
3、翻开SQL2000公司管理器,进入数据库,新建一个空的数据库“ABC”。
4、挑选新树立的数据库,按鼠标右键,挑选“一切使命”下“导入数据”,按“下一步”持续。
5、在数据库源下拉但中挑选”Driver do microsoft Access(*.mdb)“,在”用户/体系DSN“中,选种你方才增加的”ABC“,按 ”下一步“。
6、“意图”不需求修正,挑选服务器(通常下为自个的本机local,也能够挑选服务器地址或许局域网地址,断定你的权限是否能够操作,),运用WINDOWS 身份验证指用自个的体系管理员身份操作,运用SQL身份操作验证能够用于网站的操作,引荐用后者。
7、选上运用SQL身份操作验证后,填写你的用户名和暗码,我自个挑选的是体系默认号码sa,****,数据库挑选刚新建的ABC,按下一步。
8、这一步的两个单项挑选,从数据源复制表和视图与用一条查询指令指定要传输的数据,挑选前者,按下一步持续。
9、这儿将呈现你自个ACCESS数据库的表,按全选后,下一步。
10、DTS导入/导出导游,看立即运转被选中按下一步。
11、按完成持续。
12、这个过程你将看到你的数据被导入SQL2000里边,当呈现已经成功把XXX个表导入到数据库的字样,而且一切的表前面都有绿色的勾,就表明成功导入一切数据,假如半途呈现问题或许表前面有赤色的叉的话,阐明该表没有成功导入,这时就要回去检查自个的操作是否准确了。
数据修正
1、由于SQL2000里边没有主动编号,所以你的以主动编号设置的字段都会变成非空的字段,这就有必要手艺修正这些字段,并把他的标明挑选是,种子为1,增量为1。
2、别的,ACCESS2000变换成SQL2000后,本来特点为是/否的字段将被变换成非空的bit,这时候你有必要修正成自个想要的特点了。
3、别的,咱们要注意对时间函数的把握.ACCESS与SQL是有许多不一样的。
ACCESS转MS SQL数据库的几点经历
1.ACCESS的数据库中的主动编号类型在转化时,sql server并没有将它设为主动编号型,咱们需在SQL创立句子中加上identity,表明主动编号!
2.转化时,跟日期有关的字段,SQL SERVER默以为smalldatetime型,咱们最佳将它变为datetime型,由于datetime型的规模比smalldatetime型大。我遇见这种状况,用smalldatetime型时,转化失利,而用datetime型时,转化成功。
3.对此两种数据库进行操作的sql句子不全相同,例如:在对ACCESS数据库进行删去纪录时用:delete * from user where id=10,而对SQL SERVER数据库进行删去是用:delete user where id=10.
4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
5.在对ACCESS数据库处理中,sql句子中直接能够用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。
ACCESS转SQL SERVER的经历
1. ACCESS的数据库中的主动编号类型在转化时,sql server并没有将它设为主动编号型,咱们需在SQL创立句子中加上identity,表明主动编号!
2. 转化时,跟日期有关的字段,SQL SERVER默以为smalldatetime型,咱们最佳将它变为datetime型,由于datetime型的规模比smalldatetime型大。
3. ACCESS删去记载时用: delete * from user where id=10
SQL SERVER删去是用: delete user where id=10
4. ACCESS处理中,可用date()、time()等函数,
SQL SERVER处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
5. ACCESS数据库处理中,sql句子中直接能够用一些VB的函数,像cstr()函数,
SQL SERVER数据库处理中,却不能用。
1,关于日期字段字段
access表明为:#1981-28-12#
SQLSERVER表明为:‘‘1981-02-12‘‘
2, 多表操作时update句子的差异ACCESS与SQLSERVER中的UPDATE句子比照:
SQLSERVER中更新多表的UPDATE句子:
UPDATE Tab1
SET a.Name = b.Name
FROM Tab1 a,Tab2 b
WHERE a.ID = b.ID;
ACCESS中应该是
UPDATE Tab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;
即:ACCESS中的UPDATE句子没有FROM子句,一切引证的表都列在UPDATE要害字后.别的差不多
3,delete句子
access中删去时用:delete * from table1 where a>2 即只要把select 句子里的select 换成delete就能够了。
Sql server 中则为: delete from table1 where a>2 即没有*号
4,as 后边的核算字段差异
access中能够这么:select a,sum(num) as kc_num,kc_num*num as all_kc_num 即能够把AS后的字段当作一个数据库字段参加核算。
sqlserver 中则为:select a,sum(num) as kc_num,sum(num)*num as all_kc_num 即不能够把AS后的字段当作一个数据库字段参加核算。
5,[.]与[!]的差异
access中多表联合查询时:select tab1!a as tab1a,tab2!b tab2b from tab1,tab2 ,中心的AS能够不要。
sqlserver 中则:select tab1.a as tab1a,tab2.b tab2b from tab1,tab2 ,中心的AS能够不要。
6,联合查询时,
access中多表联合查询:‘select a,b from(
select a,b from tab1 where a>3 union select c,d from tab2 ) group by a,b
sqlserve 中则‘select a,b from(
select a,b from tab1 where a>3 union select c,d from tab2 ) tmptable group by a,b即要加一个虚的表tmptable,表名恣意。
7,access升级到sqlserver时,
能够用sqlserver的数据导入东西导入数据,但要做必要的处理。
access中的主动编号,不会主动变换SQL中的主动编号,只能变换为int型,要把它手艺改成标识字段,种子为1,
把一切导入被sqlserver转化成的以n最初的字段类型的n去掉,如nvarchar->varchar.(不建議运用此修正,雖然節約空間,因為多語言系統時會出問題。)把需求有秒类型的日期字段改成datatime类型(SQL会把一切的日期开转化成smalldatetime型)
8,true与1=1
access用where true表明条件为真,
sqlserver用where 1=1表明条件为真
9,判别字段值为空的差异
一般空:
Access和sql server一样 where code is null 或 where code is nol null
条件空:
Access:iif([num] is null,0,[num]) 或 iif([num] is null,[num1],[num])
SQLServer: isnull([num],0) 或 isnull([num],[num1])
10,SQL句子取子串的差异
access:MID(字段,n1,[n2]),LEFT(字段,n),RIGHT(字段,n)
如:select left(cs1,4)+‘-‘+cs2 as cs3
SQLServer: SUBSTRING(expression, start, length)
如:select substring(cs1, 1, 2) + substring(cs1, 4, 2) + ‘-‘ + cs2 as cs3
弥补:
ACCESS与SQL2000的SQL句子有差异的
比方now()在SQL2000中有必要改为getdate()
还有要害词有必要加[] ,像ACCESS中字段名用name SQL20000有必要加[name] 否则犯错
数据库衔接字重新配置
1. access 转sql 数据库后需求树立各表要害字以及递增量设置有些数据类型需求重新界说
2. now() 函数是可接受的,但在日期对比过程中需求用 getdate()
3. 保留字需求加 []
4. 单双引号需求改变
5. 遵从规范sql界说(最要害的一条)