教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

access与sql查询语句转换注意事项

来源:网络收集 时间:2026-07-29
导读: access与sql查询语句转换注意事项 1、--例 等待1 小时2 分零3 秒后才执行SELECT 语句 waitfor delay 01:02:03 select * from employee 2、--例 等到晚上11 点零8 分后才执行SELECT 语句 waitfor time 23:08:00 select * from employee 3、UPDATE语句对比: SQ

access与sql查询语句转换注意事项

1、--例 等待1 小时2 分零3 秒后才执行SELECT 语句

waitfor delay 01:02:03

select * from employee

2、--例 等到晚上11 点零8 分后才执行SELECT 语句

waitfor time 23:08:00

select * from employee

3、UPDATE语句对比:

SQLSERVER中更新多表的UPDATE语句:

UPDATE Tab1 SET =

FROM Tab1 a,Tab2 b

WHERE a.ID = b.ID;

同样功能的SQL语句在ACCESS中应该是

UPDATE Tab1 a,Tab2 b SET =

WHERE a.ID = b.ID;

即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.

上例中如果Tab2可以不是一个表,而是一个查询,例:

UPDATE Tab1 a,(Select ID,Name From Tab2) b

SET =

WHERE a.ID = b.ID;

4、访问多个不同的ACCESS数据库-在SQL中使用In子句:

Select a.*,b.* From Tab1 a,Tab2 b In @#db2.mdb@# Where a.ID=b.ID;

上面的SQL语句查询出当前数据库中Tab1和db2.mdb(当前文件夹中)中Tab2以ID为关联的所有记录.

缺点-外部数据库不能带密码.

5、在ACCESS中访问其它ODBC数据源

下例在ACCESS中查询SQLSERVER中的数据

SELECT * FROM Tab1 IN [ODBC]

[ODBC;Driver=SQL

Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;] 外部数据源连接属性的完整参数是:

[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]

其中的DRIVER=driver可以在注册表中的

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\

access与sql查询语句转换注意事项

中找到

6、ACCESS支持子查询

ACCESS支持外连接,但不包括完整外部联接,如支持

LEFT JOIN 或 RIGHT JOIN

但不支持

FULL OUTER JOIN 或 FULL JOIN

7、ACCESS中的日期查询

注意:ACCESS中的日期时间分隔符是#而不是引号

Select * From Tab1 Where [Date]>#2002-1-1#;

在DELPHI中我这样用

SQL.Add(Format(

@#Select * From Tab1 Where [Date]>#%s#;@#,

[DateToStr(Date)]));

8、ACCESS中的字符串可以用双引号分隔,但SQLSERVER不认,所以为了迁移方便和兼容,建议用单引号作为字符串分隔符.

9、Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃

10、Inser Into …..Select …From 语句:

在ACCESS中以下语句

INSERT INTO PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,

Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index)

(SELECT 00201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment, Acc_Pro,acc_type,Sub_id_flag,acc_index

FROM PubSubJectAcc WHERE PubSubJectAcc.co_type='03')

中后面"(select 200201******.co_Type='03')"中的小括号("(",")")必须去掉才能执行,如下:

INSERT INTO PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,

Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index)

SELECT 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment, Acc_Pro,acc_type,Sub_id_flag,acc_index

FROM PubSubJectAcc WHERE PubSubJectAcc.co_type='03'

access与sql查询语句转换注意事项

在SQL SERVER 中都可以

11、Inner Join 语句1

StrSql:='select er_id,er_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=c.copy_id) on er_id=er_id

Where er_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';

应该改为

StrSql:='select er_id,er_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=d.copy_id) on er_id=er_id

where er_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';

该行代码的检索条件错误:应该把C.copy_id=C.Copy_id 改为c.copy_id=d.copy_id

注:两种写法都能在SQL-SERVER中运行,但c.copy_id=C.copy_id在ACCESS中不能运行

12、 Inner Join 语句2

StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.curcopy_flag=1 and a.copy_id=b.copy_id where er_id=' + '''' +TmpPubUserID+ '''';

该为

StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.copy_id=b.copy_id where a.curcopy_flag=''1'' and er_id=' + '''' +TmpPubUserID+ '''';

注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行

access与sql查询语句转换注意事项

13、 Inner Join语句3

SQl server 中可以执行以下语句

'SELECT distinct sysoption.opti_id,sysoption.opti_name,

sysoption.opti_code,sysroleoption.opti_sort

From sysoption inner join sysroleoption

ON sysoption.opti_id=sysroleoption.opti_id

AND sysroleoption.role_id=:roleid'

但ACCESS中不能,只能

'SELECT distinct sysoption.opti_id,sysoption.opti_name,

sysoption.opti_code,sysroleoption.opti_sort

From sysoption inner join sysroleoption

ON sysoption.opti_id=sysroleoption.opti_id

Where sysroleoption.role_id=:roleid'

查询第X页,每页Y条记录

最基本的处理方法(原理):

如果表中有主键(记录不重复的字段也可以),可以用类似下面的方法,当然y,(x-1)*y要换成具体的数字,不能用变量:

select top y * from 表 where 主键 not in(select top (x-1)*y 主键 from 表)

正点,就是这句话,立刻用上。

打印一下sql语句:SELECT TOP 20 * FROM tb_news WHERE nid NOT IN(SELECT TOP 0 nid FROM tb_news)

再打印结果数组, 返回结果为空,晕死。要是mysql就可以用phpmyadmin测试一下,但现在是access,找什么测试呀,算了,还是到群里问问,问了白问,不是不理我,就是说语句有问题。真是大哥来的,语句怎么会有问题的呢!!!汗一个

无耐之下,继续GG,无意之下,居然给我发现这么一个信息:

关于定义access分页的问题

如果为第一页

a=0

第二页 a=10

但是为何a=0不能辨认出来。而sqlserver可以。大家有其他方式来实现吗? 啊,原来真凶在这里,当第一页的时候,是不能出现结果的, …… 此处隐藏:4174字,全部文档内容请下载后查看。喜欢就下载吧 ……

access与sql查询语句转换注意事项.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/106013.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)