论文部分内容阅读
摘要:在软件开发过程中,少不了要使用数据库。Access 2000与SQL Server 2000是目前用得比较多的。由于Access 2000使用简单方便,但安全性差,而SQL Server 2000安全可靠,所以在使用数据库开发或升级软件时必须注意到他们存在的区别。
关键词:Access 2000;SQL Server 2000;区别;升级
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31355-02
A Study on the Difference Using Access 2000 And SQL Server 2000
LUOXing-rong
(Department of Computer and Information Engineering of ETC Enshi Hubei,Enshi 445000,China)
Abstract:In the process of developing the software, data- base is often used. AccessS 2000 and SQL Server 2000 are widely used at present. As AccessS 200 is easy and convenient, And SQLServer 2000 is safety in operation, therefore, we must pay attention to their difference when we use the data-base to develop or go up to the software.
Key words:AccessS 2000; SQL Server 2000; difference; go up to
在软件开发过程中,少不了要使用数据库。人们习惯使用Access 2000数据库,因为Access 2000数据库是OFFICE 2000套件,使用简单方便。但Access 2000数据库访问速度比较慢,删除数据记录后会留下空档,文件越来越大(也可用压缩修复的方式减小文件大小,但太麻烦),访问速度越来越慢,甚至会导致数据库损坏,损坏得比较轻的可以用其他工具来修复,更严重时会导致数据库无法修复,或修复后数据记录不能使用。而SQL Server 2000数据库访问速度比较快,删除记录后会自动调整,不会留下空档,数据冗余少, SQL Server 2000安全可靠,不易被损坏。所以在软件开发过程中最好使用SQL Server 2000数据库。
笔者结合平时教学和软件开发的经验,谈谈在使用Access2000与使用SQL Server 2000数据库开发软件时的一些区别以及Access2000升级到SQL Server 2000的方法,仅供软件编程人员开发软件时或软件升级时参考。
1 使用Access2000与SQL Server 2000开发或升级软件时的八点区别
1.1 日期型常量表示的区别
在Access2000中,作用日期型常量时,必须用#号作定界符,如:#2007-08-12#。而在SQLServer 2000中使用日期型常量时,只能用单引号作定界符,如:’2007-08-12’。
1.2 UPDATE语句的区别
UPDATE 在对单表操作时都差不多,但对多表操作时,UPDATE语句是有区别的:
SQLServer 2000中更新多表的UPDATE语句的一般使用格式为:
UPDATETable1
SET Table1.列名1= Table2.列名1 [,…]
FROM Table1, Table1
WHERE Table1.ID= Table2.ID
同样功能的SQL语句在Access2000中的一般使用格式为:
UPDATE Table1,Table2
SET Table1!列名1= Table2!列名1
WHERE Table1!ID= Table2!ID
可以看出,Access2000中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字的后面。
更新单表时没有区别其使用格式都为:
UPDATE Table1 SET 列名1=表达式1[,…][WHERE 条件表达式]
1.3 DELETE语句的区别
Access2000中删除记录时的一般格式为:
DELETE * FROM Table1 [WHERE 条件表达式]
其格式与SELECT语句相似,只要把SELECT 语句里的SELECT 换成DELETE就可以了。
SQL Server 2000 中则删除记录时的一般格式为:
DELETE FROM Table1 [WHERE 条件表达式]
在DELETE与 FROM之间不能有*号,FROM可以省略。
1.4 SELECT语句中AS 后面的计算字段的区别
Access2000中的SELECT语句为:
SELECT 列名1,SUM(数值型列名) AS汇总列名,汇总列名*数值型列名 AS 总汇总列名
可以把AS后的汇总列名当作一个字段来参与计算。
SQL Server 2000中的SELECT语句则为:
SELECT列名1,SUM(数值型列名) AS汇总列名, SUM(数值型列名)*数值型列名 AS 总汇总列名
不可以把AS后的汇总列名当作一个字段来参与计算。
1.5 感叹号[!]与点[.]的区别
在多表查询时,不同表中的列名的引用是不同的,在Access2000中表名与列名之间用“!”或“.”分隔,而在SQL Server 2000中只能用“.”分隔。
Access2000中多表查询时:
SELECT Table1!AAS Table1A,Table2!BAS Table2BFROM Table1,Table2 WHERE 连接条件表达式
其中间的AS可以省略,连接条件表达式中的列名引用也要用“!”分隔。“!”也可用“.”代替,但不能混用。如果不用AS短语,显示列名为:Table1!ATable2!B。
SQL SERVE 2000中则为:
SELECT Table1.AAS Table1A,Table2.BAS Table2BFROM Table1,Table2 WHERE 连接条件表达式
其中间的AS也可以省略,连接条件表达式中的列名引用也要用“.”分隔。“.”不能用“!”代替,更不能混用。如果不用AS短语,显示列名为: AB。
1.6 逻辑常量“真”表示的区别
在查询时,有时需要逻辑条件永远为真的情况,在使用逻辑常量真时是有区别的。
Access2000中用WHERE True表示逻辑条件为真。
SQL Server 2000用WHERE 1=1表示逻辑条件为真。
1.7 判断字段值为空的区别
普通空值的判断,Access2000和SQL Server 2000一样,都用以下格式:
WHERE 字段名 IS NULL 或 WHERE 字段名 IS NOT NULL
条件空值的判断:
Access2000用IIF函数来判断,即:
IIF(表达式 is null,0,表达式) 或 IIF(表达式 is null,表达式1,表达式)
如果表达式的值为空,函数值为0或为表达式1的值,否则为表达式的值。
SQLServer 2000用ISNULL函数来判断,即:
ISNULL(表达式,0) 或 ISNULL(表达式,表达式1)
如果表达式的值为空,函数值为0或为表达式1的值,否则为表达式的值。
1.8 取任意子串函数的区别
Access2000中使用MID函数取任意子串:
MID(字段名,n1,n2),如:SELECT MID(学号,5,1)
SQLServer 2000中使用SUBSTRING函数取任意子串:
SUBSTRING(字符表达式, n1,n2),如:SELECT SUBSTRING(学号, 8, 2)
2 Access2000升级到SQLServer 2000的方法
软件升级时,要把Access2000数据库升级到SQL Server 2000数据库。首先在SQL Server 2000中新建一个与Access2000同名的数据库,然后用SQL Server 2000的数据转换服务(DTS导入/导出向导)导入数据,即把Access2000数据库中的表导入到SQL Server 2000的同名数据库中。最后作如下处理:
2.1 把自动编号改成标识字段
Access中的自动编号,不会自动转换成SQL SERVER中的自动编号,只能转换为int型,要把它手工改成标识字段,从1开始。
2.2 修改数据类型
把所有导入被SQL Server 2000转化成的以n开头的字段类型的n去掉,如把nvarchar改成varchar即可。
关键词:Access 2000;SQL Server 2000;区别;升级
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)17-31355-02
A Study on the Difference Using Access 2000 And SQL Server 2000
LUOXing-rong
(Department of Computer and Information Engineering of ETC Enshi Hubei,Enshi 445000,China)
Abstract:In the process of developing the software, data- base is often used. AccessS 2000 and SQL Server 2000 are widely used at present. As AccessS 200 is easy and convenient, And SQLServer 2000 is safety in operation, therefore, we must pay attention to their difference when we use the data-base to develop or go up to the software.
Key words:AccessS 2000; SQL Server 2000; difference; go up to
在软件开发过程中,少不了要使用数据库。人们习惯使用Access 2000数据库,因为Access 2000数据库是OFFICE 2000套件,使用简单方便。但Access 2000数据库访问速度比较慢,删除数据记录后会留下空档,文件越来越大(也可用压缩修复的方式减小文件大小,但太麻烦),访问速度越来越慢,甚至会导致数据库损坏,损坏得比较轻的可以用其他工具来修复,更严重时会导致数据库无法修复,或修复后数据记录不能使用。而SQL Server 2000数据库访问速度比较快,删除记录后会自动调整,不会留下空档,数据冗余少, SQL Server 2000安全可靠,不易被损坏。所以在软件开发过程中最好使用SQL Server 2000数据库。
笔者结合平时教学和软件开发的经验,谈谈在使用Access2000与使用SQL Server 2000数据库开发软件时的一些区别以及Access2000升级到SQL Server 2000的方法,仅供软件编程人员开发软件时或软件升级时参考。
1 使用Access2000与SQL Server 2000开发或升级软件时的八点区别
1.1 日期型常量表示的区别
在Access2000中,作用日期型常量时,必须用#号作定界符,如:#2007-08-12#。而在SQLServer 2000中使用日期型常量时,只能用单引号作定界符,如:’2007-08-12’。
1.2 UPDATE语句的区别
UPDATE 在对单表操作时都差不多,但对多表操作时,UPDATE语句是有区别的:
SQLServer 2000中更新多表的UPDATE语句的一般使用格式为:
UPDATETable1
SET Table1.列名1= Table2.列名1 [,…]
FROM Table1, Table1
WHERE Table1.ID= Table2.ID
同样功能的SQL语句在Access2000中的一般使用格式为:
UPDATE Table1,Table2
SET Table1!列名1= Table2!列名1
WHERE Table1!ID= Table2!ID
可以看出,Access2000中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字的后面。
更新单表时没有区别其使用格式都为:
UPDATE Table1 SET 列名1=表达式1[,…][WHERE 条件表达式]
1.3 DELETE语句的区别
Access2000中删除记录时的一般格式为:
DELETE * FROM Table1 [WHERE 条件表达式]
其格式与SELECT语句相似,只要把SELECT 语句里的SELECT 换成DELETE就可以了。
SQL Server 2000 中则删除记录时的一般格式为:
DELETE FROM Table1 [WHERE 条件表达式]
在DELETE与 FROM之间不能有*号,FROM可以省略。
1.4 SELECT语句中AS 后面的计算字段的区别
Access2000中的SELECT语句为:
SELECT 列名1,SUM(数值型列名) AS汇总列名,汇总列名*数值型列名 AS 总汇总列名
可以把AS后的汇总列名当作一个字段来参与计算。
SQL Server 2000中的SELECT语句则为:
SELECT列名1,SUM(数值型列名) AS汇总列名, SUM(数值型列名)*数值型列名 AS 总汇总列名
不可以把AS后的汇总列名当作一个字段来参与计算。
1.5 感叹号[!]与点[.]的区别
在多表查询时,不同表中的列名的引用是不同的,在Access2000中表名与列名之间用“!”或“.”分隔,而在SQL Server 2000中只能用“.”分隔。
Access2000中多表查询时:
SELECT Table1!AAS Table1A,Table2!BAS Table2BFROM Table1,Table2 WHERE 连接条件表达式
其中间的AS可以省略,连接条件表达式中的列名引用也要用“!”分隔。“!”也可用“.”代替,但不能混用。如果不用AS短语,显示列名为:Table1!ATable2!B。
SQL SERVE 2000中则为:
SELECT Table1.AAS Table1A,Table2.BAS Table2BFROM Table1,Table2 WHERE 连接条件表达式
其中间的AS也可以省略,连接条件表达式中的列名引用也要用“.”分隔。“.”不能用“!”代替,更不能混用。如果不用AS短语,显示列名为: AB。
1.6 逻辑常量“真”表示的区别
在查询时,有时需要逻辑条件永远为真的情况,在使用逻辑常量真时是有区别的。
Access2000中用WHERE True表示逻辑条件为真。
SQL Server 2000用WHERE 1=1表示逻辑条件为真。
1.7 判断字段值为空的区别
普通空值的判断,Access2000和SQL Server 2000一样,都用以下格式:
WHERE 字段名 IS NULL 或 WHERE 字段名 IS NOT NULL
条件空值的判断:
Access2000用IIF函数来判断,即:
IIF(表达式 is null,0,表达式) 或 IIF(表达式 is null,表达式1,表达式)
如果表达式的值为空,函数值为0或为表达式1的值,否则为表达式的值。
SQLServer 2000用ISNULL函数来判断,即:
ISNULL(表达式,0) 或 ISNULL(表达式,表达式1)
如果表达式的值为空,函数值为0或为表达式1的值,否则为表达式的值。
1.8 取任意子串函数的区别
Access2000中使用MID函数取任意子串:
MID(字段名,n1,n2),如:SELECT MID(学号,5,1)
SQLServer 2000中使用SUBSTRING函数取任意子串:
SUBSTRING(字符表达式, n1,n2),如:SELECT SUBSTRING(学号, 8, 2)
2 Access2000升级到SQLServer 2000的方法
软件升级时,要把Access2000数据库升级到SQL Server 2000数据库。首先在SQL Server 2000中新建一个与Access2000同名的数据库,然后用SQL Server 2000的数据转换服务(DTS导入/导出向导)导入数据,即把Access2000数据库中的表导入到SQL Server 2000的同名数据库中。最后作如下处理:
2.1 把自动编号改成标识字段
Access中的自动编号,不会自动转换成SQL SERVER中的自动编号,只能转换为int型,要把它手工改成标识字段,从1开始。
2.2 修改数据类型
把所有导入被SQL Server 2000转化成的以n开头的字段类型的n去掉,如把nvarchar改成varchar即可。