之前做了一些开发工作,本来使用SQL Server 2005 但是,突然系统有些问题用不了了,很郁闷,想到万一以后又出现这样的问题可怎么办,于是改用Access 2003。现在觉得还是SQL Server 2005方便些,不过Access也还不错,能满足程序的需要就行。Access有三个主要的问题:1、不能执行Creat语句,也就是不能动态的创建一个新表;2、容量受限制,单个MDB的大小为2G,由于可以使用链接表以及 UNION ALL 查询,理论上记录没有上限;3、JET DB 本身不直接操作二进制的 MDB 文件,而是由 WINDOWS 来实现对文件的操作,文件过大 WINDOWS 操作会减慢,因此会影响到其他表和查询的执行效率,但相对来说影响较小。但单表记录不宜超过20万,否则速度会有下降的。如果能够满足开发的需要,Access还是一个不错的选择。
--------------------------------------------------------------------------------
众所周知,访问数据库都是使用SQL语句或者称SQl指令,但是对于每种数据库软件来说,其指令并不严格的支持标准SQL语句。Access也是如此,在开发过程中我也遇到很大的困难,看了很多书,但效果并不好,书上只给出了最简单的例子,而在实际中所遇到的问题往往让我束手无策。网上也有很多线索但是始终找不到一个较细致的解释。其实这里所谓的困难只是一些语法上的细节,稍加注意就能够很方便的使用数据库了。下面介绍一下Access数据库基本操作的语法中一些不标准的地方。
--------------------------------------------------------------------------------
1、条件子句 where
条件子句非常有用,几乎所有有用的操作都需要一个where语句,在Access中你会发现当你使用一个条件表达式时,例如:where x=5 这时候执行没有问题,但是如果有两个以上的条件例如 where x=5 AND y=3 此时Access会报告语法错误,这是非常郁闷的事。其实,在 Access中where后面需要带括号,where( x=5 AND y=3 )这样就可以了。同样的语法也适用于value等语句
2、变量类型的区别
这里的问题主要是区别对待数字类型和字符类型,例如你可以执行SET x=5这样的语句,但是你执行SET name=darklurker就会出错,同样是语法错误,由于调试器不能提供更多的信息,所以你会觉得不知所措,这里只是在Access中字符类型需要使用' ',正确的语法是SET name='darklurker'
3、名称
对于一张表,一个数据项都需要一个名字,在Access中有一些系统保留的关键字,当你的表项名称恰好就是保留的关键字时,执行仍然得到语法错误的提示,例如项名为group,不能执行UPDATE tablename SET group='darklurker' ,由于所有提示同样只是语法错误这四个字,所以是非常郁闷的。所以在取名字的时候不能贪图安逸,当然关键字也不是不能用,语法是在两边加[],例如UPDATE tablename SET [group]='darklurker' ,当然如果你不嫌麻烦大可把所有项目名加上[],多加了是不会出错的
4、SET的语法
对于上面的UPDATE即使使用了[]也不能执行,同样是语法错误四个字,这个语法与标准SQL差别最大,在使用SET时引用列项需要从表名开始相当于命名空间一样,正确的语法是:UPDATE tablename SET tablename.group='darklurker' .你会发现这时候并不需要使用[],项目名不再是group而是tablename.group了
5、关于郁闷的空格
由于错误信息一般只有语法错误这一种,所以在一开始的时候,往往会觉得是命令中的空格多少和位置不合适,其实空格的作用就是把各个字段分隔开,和多少无关,例如where(group='darklurker')和where ( group='darklurker' )是一样的,所以不必再为了空格而郁闷了。
6、CREAT table
在项目开始之前要认真分析设计数据库,在Access中你只能通过Access来创建表格,所以不要在creat语句上费功夫了,不支持!
0 评论:
发表评论