使用Access数据库及SQL基础


通过本教程你将学习到如何使用Micorsoft Access 数据库 以及一些基本的SQL知识。
所需软件:Microsoft Access 2000及以上版本
今天,讲讲我们在编写ASP程序时会用到的 数据库 的基础知识。对于小型的ASP程序来说,我们一般都使用Access 数据库 ,因为它操作简便但是功能强大。Access作为一个中小型的 数据库 ,足以应付我们使用中所能达到的数据量。 因为Access中包含的内容较为广泛,所以本教程所讲的内容只涉及到作为ASP的后台 数据库 相关的内容,Access其它方面的内容,大家可以查阅其它相关资料。Access的各个版本中,Access 2000最为大家所熟知,而后来的Access XP,Access 2003默认的文件格式也均为2000。本教程所采用的Access版本为2003,而文件格式则依然是2000(希望大家分清Access的版本和文件格式,文件格式的转换可以通过“工具”>“ 数据库 实用工具”>“转换 数据库 ”来操作)。
**一、新建Access 数据库
** 安装Microsoft Office后,可以从“开始”菜单的“程序”中启动Access。启动Access后,点击“文件”>“新建...”,在任务窗格处会出现新建项目列表(Access2000会略有不同):
按此在新窗口浏览图片
选择“空 数据库 ”建立一个新的 数据库 。在弹出的“保存”对话框中选择 数据库 存放的位置后即可。
按此在新窗口浏览图片
打开现有 数据库 :要打开已经保存的 数据库 可以通过双击 数据库 文件或者从Access的文件菜单下面的“打开”命令,Access 2003可能会弹出“安全警告”对话框,不用理会,直接打开就行了。
按此在新窗口浏览图片
**二、设计 数据库
** 在开始设计 数据库 前,需要先向大家讲明,一个Access 数据库 可以包含多个数据表,而数据表就是我们存放数据的地方。我们说的往 数据库 中输入数据,其实是在往每一个数据表中输入数据。而关于数据表也要明确几个概念:字段、记录和值。在 数据库 中,对表的行和列都有特殊的叫法,每一列叫做一个“字段”。每个字段包含某一专题的信息。就像下面的“留言”数据表中,“留言人”、“留言内容”这些都是表中所有行共有的属性,所以把这些列称为“留言人”字段和“留言内容”字段。 我们把表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息,就像在“留言”数据表中每一条留言的全部信息,但记录在 数据库 中并没有专门的记录名,常常用它所在的行数表示这是第几个记录。 在 数据库 中存放在表行列交叉处的数据叫做“值”,它是 数据库 中最基本的存储单元,它的位置要由这个表中的记录和字段来定义。在“留言”的表中就可以看到第一个记录与“留言人”字段交叉处的值就是“张人中”。“王跃”所在的记录和“房客号”的这个字段交叉位置上的“值”就是“12450”。
按此在新窗口浏览图片
在建立一个新 数据库 的时候,也要想一想这个 数据库 是用来干什么的,它要存储哪些数据信息,这些数据之间又有什么关系? 一方面要知道哪些数据是必须的,是绝对不能缺少的,不然建立 数据库 获取信息的目地就没法达到了;另一方面也要知道哪些数据是不必要,放在 数据库 当中只会增加 数据库 的容量,却并不起任何作用,所以要将这些冗余的数据剔除。这样建立起来的 数据库 才既能满足我们检索数据的需要,又能节省数据的存储空间。所以我们事先要规划好我们要建立的表和字段。
在新建完一个 数据库 后,Access会打开 数据库 。
按此在新窗口浏览图片
我们双击“使用设计器创建表”,打开数据表设计器。其中“字段名称”就是指我们数据表的列的名称,比如上面表中的“留言人”等。数据类型就是数据存放在 数据库 中的类型,可以在下拉框中选择。说明是你对该字段的说明。

比如上图我设计了一个公告发布的数据 按此在新窗口浏览图片 表,不同的字段名和相应的数据类型都进行了设置。在设计每一项字段的时候,不同的数据类型在下面的“常规”选项卡会有不同的内容,不过这些内容都比较简单,而且都可以通过右边空白部分的蓝色提示来进行操作,大家可以自己多看多试,这里就不赘述了。
这里要提醒的一点是大家在设计 数据库 的时候要注意字段的命名,虽然字段名可以是自己随便定义的一些名称,但是希望在给字段命名的时候还是要注意简单明了,而且尽量不要使用如“user”、“time”这样的保留名称。比如我上面设计的数据表,在字段加了“n_”这样的前缀,就容易区分一些了。我一向命名的方法是比如是“guestbook”数据表,我就会在字段中加个“g_”这样的前缀,使用起来不会有关键字的问题,在程序中也容易识别。ASP程序中,Access 数据库 表在给字段命名时可以使用中文,而且在中文 Windows 的 服务器 下运行正常,其它语言的windows下没有试过。
设计完成后按“Ctrl+S”进行保存,第一次保存需要输入表名。如果此时数据表没有定义主键,Access会弹出定义主键对话框。主键就是该数据表在与其它表相关联时的一个唯一的标识键,一般都是自动编号类型或数字型字段。如果不在Access中定义“关系”,可以不设置主键。
按此在新窗口浏览图片
按此在新窗口浏览图片
**三、录入数据:
** 尽管我们一般都是在ASP程序中进行数据录入的操作,但我们也可以直接在Access中进行数据的录入工作。
按此在新窗口浏览图片
直接双击已经建立的数据表,此时会打开该表,我们直接在表格中输入数据就行了,不过要注意设计表时定义的字段类型和条件,如果输入的内容不符合定义的条件则会出错。
按此在新窗口浏览图片

因为Access 数据库 是以文件的形式存放在 服务器 上,所以理论上存在着被下载的可能。如果 数据库 中存放着一些重要数据,甚至包括用户名、密码或者客户资料等等,那么我们就必须考虑到 数据库 的安全性,防止别人直接从网上下载我们的 数据库 。到底如何防止Access 数据库 被恶意下载呢? 首选的方法当然是把 数据库 放在Web目录之外。也就是说,不把 数据库 放在可以直接被访问的Web目录之内,在ASP程序连接 数据库 时使用 数据库 在 服务器 上的绝对路径。这可以说是最保险的方法。

如果没有条件达到上述要求,必须把 数据库 放在Web目录中呢,又如何有效的防止 数据库 被下载? 第一要做的就是给 数据库 取一个长而且复杂的文件名,放在一个名称复杂的的文件夹下,这虽然只是简单的一个操作,却可以避免你的 数据库 地址被轻易的获得。当然这是仅仅不够的,我们不能保证别人不能用某种的手段或方法获得你的 数据库 地址。所以我们还要用一些其它的方法。
有不少人认为只要把 数据库 的.mdb扩展名改为.asp或.asa就可以防止被下载(如 flash 8data.asp),其实这是错误的!
这样只能做到无法从IE地址栏直接下载,而用诸如FlashGet这类下载软件则可以顺利的下载!如果要改为.asp的话,还必须在 数据库 中添加一个“OLE对象”的字段,再在这个字段中添加一个内容为<%的长二进制数据,这样也可以避免被下载。
也有不少人认为只要在 数据库 的文件名中加入“#”号就可以防止被下载(如 flash 8#data.asp),其实这也是错误的!
这样做的原理是IE会把“#”当成网页的锚记而显示“无法显示网页”,但是其实同样可以用FlashGet下载。
** 这里给大家介绍一个防止 数据库 被下载的简单有效的方法,就是在 数据库 的文件名中加入“%”号。
比如:^data&base^% flash 8=!=data%.mdb
** 这是利用url字符编码的原理,在访问Internet中的数据时,不论是IE还是其它下载软件,都会把符号或双字节字符转换为"%"(其中为16进制数据)这样的编码,同样在遇到"%**"这样的字符会进行反编码,所以在上述文件名中,会试图把“%fl”转换为相应的字符,文件名就发生了改变,所以就达到了不被下载的目的。其实这里的FL不是16进制的值,所以下载时 服务器 会直接报错,如果是16进制的值比如24,则会反编码为“$”号,如%24data.mdb会被转换为$data.mdb, 服务器 则会显示找不到文件。如果你再狠一点,可以在相同的目录下再放置一个$data.mdb的伪 数据库 ,呵呵,下载的人还会以为捡到了宝,实际上他“辛辛苦苦”下载到的是一个毫无价值只是用来欺骗他的文件。

SQL是我们检索 数据库 中的数据所要必须用到的。我们查询 数据库 中的数据时实际上就是向 数据库 发送SQL指令并返回相应的结果。所以这里给大家一份SQL语法手册,其中详细的介绍了SQL的四大类型:Select、Insert、Delete、UPdate以及一些相关的知识。既然是手册,内容肯定比较全面,大家以后遇到SQL的问题时也可以翻阅该手册,应该可以得到一些提示。文件不大,只有10K,是个hta文件。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus