职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 4022|回复: 11

教你在Access数据库中如何使用SQL

[复制链接]
cayean 发表于 2006-12-26 22:11 | 显示全部楼层 |阅读模式
来源:中国站长资讯网

一般在Oracle中使用Sql,在Access中使用很少,不过与Oracle的Sql还是有很多相似之处的。

以下SQL语句在ACCESS XP的查询中测试通过

建表:


Create Table Tab1 (
    ID Counter primary key,
    Name string(20),
    Age integer,
    [Date] DateTime);

技巧:

自动增加字段用 Counter 声明.

字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行.

建立主键:primary key

建立索引:

下面的语句在Tab1的Date列上建立可重复索引


Create Index iDate ON Tab1 ([Date]);

完成后ACCESS中字段Date索引属性显示为 - 有(有重复).

下面的语句在Tab1的Name列上建立不可重复索引


Create Unique Index iName ON Tab1 (Name);

完成后ACCESS中字段Name索引属性显示为 - 有(无重复).

下面的语句删除刚才建立的两个索引


Drop Index iDate ON Tab1;
Drop Index iName ON Tab1;

ACCESS与SQLSERVER中的UPDATE语句对比:

SQLSERVER中更新多表的UPDATE语句:


UPDATE Tab1
SET a.Name = b.Name
FROM Tab1 a,Tab2 b
WHERE a.ID = b.ID;

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


UPDATE Tab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;

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

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


UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET a.Name = b.Name
WHERE a.ID = b.ID;

访问多个不同的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为关联的所有记录.

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

在ACCESS中访问其它ODBC数据源

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


SELECT * FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL Server;UID=saWD=;Server=127.0.0.1;DataBase=Demo;]

外部数据源连接属性的完整参数是:


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

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


HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI

中找到

ACCESS支持子查询

ACCESS支持外连接,但不包括完整外部联接,如支持LEFT JOIN 或 RIGHT JOIN,但不支持FULL OUTER JOIN 或 FULL JOIN。

ACCESS中的日期查询

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


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

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

建议用单引号作为字符串分隔符.
我同意 发表于 2007-7-8 11:56 | 显示全部楼层
顶!!!!!!!!!!!!!!!!!!!!!!!!!
我同意 发表于 2007-7-8 14:55 | 显示全部楼层
顶......叹为观止.....
懒散的猫 发表于 2007-7-8 14:55 | 显示全部楼层
真是令人钦佩
木之叶 发表于 2007-7-11 15:47 | 显示全部楼层
谢谢楼主,好久没看到这么好的贴了
yoyo 发表于 2007-7-11 18:28 | 显示全部楼层
真幸运
模范丈夫 发表于 2007-7-11 18:28 | 显示全部楼层
_     _
自得其乐 发表于 2007-7-12 00:58 | 显示全部楼层
超級精彩,我非常喜歡
俺是一只狼 发表于 2007-7-12 02:53 | 显示全部楼层
谢谢楼主,好久没看到这么好的贴了
只学java 发表于 2007-7-13 00:58 | 显示全部楼层
我呆了
小龙女 发表于 2007-7-15 11:19 | 显示全部楼层
谢 谢
★不色的狼★ 发表于 2007-7-15 12:34 | 显示全部楼层
oh!magat!!!
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-14 18:25 , Processed in 0.143554 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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