仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 909|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:ACCESS转SQL必要注重的成绩

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:33:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
到2009年,甲骨文的数据库Oracle已经诞生了30周年,而MySQL却连它的一半时间都没有。微软的SQLServer仅仅比MySQL大两年,但是SQLServer的发布是建立在Sybase的基础上。access|成绩良多伴侣想用SQL2000数据库的编程办法,可是却又苦于本人是学ACCESS的,对SQL只是一点点的懂得罢了,这里我给人人供应以下参考---将ACCESS转化成SQL2000的办法和注重事项
一,起首,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有实验过,但愿人人多多实验,一定是有举措的;
二,转换的办法
1,翻开”把持面板“下”办理工具“中的”数据库源“;
2,按”增加“增加一个新的数据源,在选择栏里选”DriverdomicrosoftAccess
(*.mdb)”,完成后将呈现一个框,

在”数据库源“内里输出你想写的称号,我取名叫“ABC”,申明不必要填,接着,按上面的选择,寻觅你的数据库地点和选中(注重,请先备份本人的ACCESS数据库),然后断定。
数据源在这里建好了,剩下转换了。

3,翻开SQL2000企业办理器,进进数据库,新建一个空的数据库“ABC”;
4,选择新创建的数据库,按鼠标右键,选择“一切义务”下“导进数据”,按“下一步”持续;
5,在数据库源下拉但当选择”DriverdomicrosoftAccess(*.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是有良多分歧的.


4、相干的字段成绩
1.ACCESS的数据库中的主动编号范例在转化时,sqlserver并未将它设为主动编号型,我们需在SQL创立语句中加上identity,暗示主动编号!
2.转化时,跟日期有关的字段,SQLSERVER默许为smalldatetime型,我们最好将它变成datetime型,由于datetime型的局限比smalldatetime型年夜。我碰见这类情形,用smalldatetime型时,转化失利,而用datetime型时,转化乐成。
3.对此两种数据库举行操纵的sql语句不全不异,比方:在对ACCESS数据库举行删除记录时用:"delete*fromuserwhereid=10",而对SQLSERVER数据库举行删除是用:"deleteuserwhereid=10".
4.日期函数不不异,在对ACCESS数据库处置中,可用date()、time()等函数,但对SQLSERVER数据库处置中,只能用datediff,dateadd等函数,而不克不及用date()、time()等函数。
5.在对ACCESS数据库处置中,sql语句中间接能够用一些VB的函数,像cstr()函数,而对SQLSERVER数据库处置中,却不克不及用。
5、相干语句成绩
主动增添字段必要重写。在access中常常利用的主动编号字段,导进到mssql后,他并非自增型的int,必要手工设置,把导进后的主动编号字段的标识的“否”改成“是”,“种子”和“递增量”都为“1”,才干成为主动编号

一切的默许值都丧失了。次要是数字范例和日期范例

一切now(),time(),date()要改成getdate()

一切datediff(d,time1,time2)要改成datediff(day,time1,time2)

一切datediff(ww,time1,time2)要改成datediff(week,time1,time2)

一切datediff(d,time1,time2)要改成datediff(day,time1,time2)

在mssqlserver中,有很多保存字,在access中是没有的,当你把数据导进到mssql的时分,成绩就出来了。mssql在导进的时分,会主动给这些字段(包含数据库中的表名)加上“[字段名]”,因而,你必需修正你的剧本,把响应的字段名字(大概表名字)加上中括号,或改动字段名字为不是mssql的保存字

在用access关于工夫的利用,人人喜好利用“select*fromaaaawhiletime="&now()”如许的sql语句,但是,在mssql中没有“now()”这个函数,而是利用“getdate()”,以是,一切的sql语句中的“now()”必需换成“getdate()”。

日期函数不不异,在对ACCESS数据库处置中,可用date()、time()等函数,但对
SQLSERVER数据库处置中,只能用datediff,dateadd等函数,而不克不及用date()、time()等函数。

转化时,跟日期有关的字段,SQLSERVER默许为smalldatetime型,我们最好将它变成datetime型,由于datetime型的局限比smalldatetime型年夜。偶然用smalldatetime型时,转化失利,而用datetime型时,转化乐成

isnull(rowname)要改成rowname=null

CursorType要改成1,也就是翻开数据库时要给出第一个数字参数为1,不然纪录大概
显现不完全

备注范例要经由过程cast(columnasvarchar)来利用

true/false范例不克不及利用,要变成1/0

对此两种数据库举行操纵的sql语句不全不异,比方:在对ACCESS数据库举行删除记录时用:"delete*fromuserwhereid=10",而对SQLSERVER数据库举行删除是用:"deleteuserwhereid=10".

在对ACCESS数据库处置中,sql语句中间接能够用一些VB的函数,像cstr()函数,而对SQLSERVER数据库处置中,却不克不及用

在access的sql语句中的工夫利用变量查询的时分,人人一样平常利用"select*fromaaaawhiletime=#"&变量名&"#",在mssql中是不可的,他的语法是“select*fromaaaawhiletime="&变量名&""”。(意义是让你把日期工夫变量当做字符串来利用,呵呵~~~)

本来ASP里的“DELETE*FROM……”要改成“DELETEFROM……”

有大概rs.update失利,修正成update表名set字段=‘值’如许经由过程(碰到的情形,提醒为:
MicrosoftOLEDBProviderforSQLServer毛病80040e38
悲观并发反省失利。已在此游标以外修正了该行。
/Admin_ClassOrder.asp,行164)

access内里除法可使用""大概"/",MSSQL内里只能利用"/"

当然,或许这并不是我们拒绝MySQL的一个有说服力的MySQL学习教程,但是对于一些比较守旧的IT经理来说,在为一些关键业务选择平台的时候,平台的成熟性却是必须要考虑的一个因素,在这一点上,MySQL无疑毫无优势。
老尸 该用户已被删除
沙发
发表于 2015-1-19 16:26:19 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
若天明 该用户已被删除
板凳
发表于 2015-1-24 14:18:36 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
不帅 该用户已被删除
地板
发表于 2015-2-1 16:44:46 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-7 09:49:29 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
兰色精灵 该用户已被删除
6#
发表于 2015-2-21 13:15:57 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
莫相离 该用户已被删除
7#
发表于 2015-3-6 20:19:38 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
海妖 该用户已被删除
8#
发表于 2015-3-13 08:09:28 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-20 17:16:56 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表