您可以将 Microsoft Office Access 2013 用作创建、修改数据库以及处理数据的工具,还可将 Office Access 2013 用作服务器数据库管理系统(如 Microsoft SQL Server)的前端(界面)。通常,使用 Office Access 2013 作为前端应用程序时,需要链接到服务器数据库管理系统中的表,然后就像这些链接的表位于 Access 数据库中那样使用它们。结构化查询语言 (SQL) 的处理由 Access 在您的本地计算机上执行。

不过,在某些情况下,您可能希望由服务器计算机执行 SQL 处理。例如,您的台式机速度较慢,而数据库服务器计算机功能强大,此时在服务器计算机上处理查询可提高性能。或者,您可能要运行位于服务器计算机上的存储过程 (存储过程:由 SQL 语句和可选流控制语句组成的预编译集合,按一个名称存储,并作为一个单元处理。此集合存储在 SQL 数据库中,可以通过某应用程序的一个调用运行。),而在本地计算机上 Access 正在处理 SQL,那么将无法执行此操作。要想在数据库服务器计算机上处理 SQL,请使用传递查询 (传递查询:SQL 特定查询,可以用于直接向 ODBC 数据库服务器发送命令。通过使用传递查询,可以直接使用服务器上的表,而不用让 Microsoft Jet 数据库引擎处理数据。)。

连接到服务器数据库管理系统

要连接到服务器数据库管理系统,您可将服务器数据库管理系统配置为 ODBC 数据源 (ODBC 数据源:位于支持开放式数据库连接性 (ODBC) 协议的程序或数据库中,需要进行访问的数据和信息。)。

 注释   只有本地计算机的 Administrators 组的成员才可以配置 ODBC 数据源。

在 Windows Vista 中配置数据源

  1. 单击“开始”按钮,单击“控制面板”,然后执行下列操作之一:
  • 在分类视图中,单击“系统和维护”,然后单击“管理工具”。
  • 在经典视图中,单击“管理工具”。
  1. 双击“数据源(ODBC)”。

将出现“用户帐户控制”确认对话框。

  1. 单击“继续”。
  2. 单击“系统 DSN”选项卡。
  3. 请执行下列操作之一:
  • 要为已安装的驱动程序定义新数据源,请单击“添加”。
  • 要修改现有数据源的定义,请单击数据源的名称,然后单击“配置”。
  1. 根据需要更改对话框中的信息。

有关不同选项的详细信息,请单击每个对话框中的“帮助”按钮。

在 Microsoft Windows XP 中配置 ODBC 数据源

  1. 单击“开始”按钮,单击“控制面板”,然后执行下列操作之一:
  • 在分类视图中,单击“性能和维护”,然后单击“管理工具”。
  • 在经典视图中,单击“管理工具”。
  1. 双击“数据源(ODBC)”。

将出现“ODBC 数据源管理器”对话框。

  1. 单击“系统 DSN”选项卡。
  2. 请执行下列操作之一:
  • 要为已安装的驱动程序定义新数据源,请单击“添加”。
  • 要修改现有数据源的定义,请单击数据源的名称,然后单击“配置”。
  1. 根据需要更改对话框中的信息。

有关不同选项的详细信息,请单击每个对话框中的“帮助”按钮。

创建传递查询

  1. 在“创建”选项卡上的“其他”组中,单击“查询设计”。
  2. 关闭“显示表”对话框。
  3. 在“设计”选项卡上的“查询类型”组中,单击“传递”。

Access 将隐藏查询设计网格并显示“SQL 视图”对象选项卡。

  1. 如果尚未显示属性表,请按 F4 来显示它。
  2. 在属性表中,单击“ODBC 连接字符串”属性框,然后单击“构建”。

将出现“选择数据源”对话框。

  1. 单击“计算机数据源”选项卡。
  2. 在“数据源名称”下,单击在前面的过程中配置的服务器计算机的名称,然后单击“确定”。

 注释   如果尚未配置 ODBC 数据源,请单击“新建”,然后执行创建新数据源向导中的步骤。

  1. 如果提示您登录,请输入用户名和密码。
  2. 如果提示您在连接字符串中保存密码,请不要保存您的密码。

不保存密码有助于提高您的服务器数据库系统的安全性。

10. 在“SQL 视图”对象选项卡中键入查询。

 注释   请记住要使用适于您的数据库管理系统的 SQL 语法,此语法可能与 Access SQL 语法不同。

11. 在键入查询之后,请在“设计”选项卡上的“结果”组中,单击“运行”。

您的查询将发送到数据库服务器计算机进行处理。

  注释  

某些传递查询不会返回数据。例如,您可能要运行一个不向 Access 返回任何数据的存储过程,例如将数据库权限授予组或用户的脚本。如果传递查询不向 Access 返回数据,应该将查询的属性表中的“返回记录”属性值更改为“否”。

某些传递查询可能将服务器处理消息返回给 Access。如果要将这些消息收集在一个表中以供以后查看,请将查询的属性表中的“日志消息”属性值更改为“是”。存储这些消息的表的名称格式为用户名连接一个连字符以及一个以 00 开始的连续数字。

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

建表:

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

技巧:

自增字段用 Counter 声明.

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

建立索引:

下面的语句在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=SQLServer;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]

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

[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=pass(word);]

其中的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#;

在DELPHI中我这样用

SQL.Add(Format(
'Select * From Tab1 Where [Date]>#%s#;',
[DateToStr(Date)]));

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

建议用单引号作为字符串分隔符.

查询时生成序号

SELECT (SELECT Count([xlh].[aa]) AS AutoNum FROM xlh WHERE  (((xlh.aa)<=xlh_Alias.aa));) AS 序号, xlh.aa
FROM xlh AS xlh_Alias INNER JOIN xlh ON xlh_Alias.aa=xlh.aa
ORDER BY xlh.aa;

多表sql查询

SELECT test.aa AS 第一个字段, test1.bb AS 第二个字段, test1.cc
FROM test, test1
WHERE test.aa=test1.aa;

多表sql查询1

SELECT a.aa, b.bb, b.cc, b.cc*100 AS 合计
FROM test AS a, test1 AS b
WHERE a.aa=b.aa;

多表sql查询排序

SELECT a.aa, b.bb, b.cc AS 第三个字段
FROM test AS a, test1 AS b
WHERE a.aa=b.aa
ORDER BY b.cc;

查询例子

SELECT a.dhhm
FROM xl11a AS a, xl919 AS b
WHERE a.dhhm=b.dhhm and aa<>"1";

日期时间分隔符是#而不是引号

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

两个表关联修改多个字段

UPDATE chhl AS a, jbsj AS b SET a.fzr = b.fzr, a.gh = b.gh
WHERE a.dhhm=b.dhhm; update chhl set (fzr,gh)=
(SELECT b.fzr, b.gh
FROM chhl AS a, jbsj AS b
WHERE a.dhhm=b.dhhm);

如果Tab2可以不是一个表,而是一个查询

UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET a.Name = b.Name
WHERE a.ID = b.ID; UPDATE Tab1 a,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;

将一个表的某个字段置空

UPDATE chhl AS a SET a.fzr = null, a.gh = null;

删除两个表中字段一样的记录

delete from xl11 where dhhm in(SELECT a.dhhm
FROM xl11 AS a, xl919 AS b
WHERE a.dhhm=b.dhhm;);

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

Create Unique Index iName ON Tab1 (Name);

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

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

Access一些常用的SQL语句的更多相关文章

  1. 经典SQL语句大全以及50个常用的sql语句

    经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...

  2. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  3. 经典SQL语句大全、50个常用的sql语句

    50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...

  4. 常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》

    常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML ...

  5. 渗透测试之常用的sql语句

    学习路漫漫,常用的sql语句给我们平常所运用的sql语句相差不多,用句土话讲:百变不离其中 注:网络安全时刻警醒,需要打靶的还需要建立自己的靶场,关注博主在以往博客中分享有多种创建靶场可参考 1.判断 ...

  6. MySQL 常用的sql语句小结(待续)

    mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...

  7. SQL Server中常用的SQL语句(转):

    SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...

  8. oracle常用的SQL语句

    一些常用的SQL语句: --建表 create table adolph (id number(10,0),              name varchar2(20),              ...

  9. SQL之50个常用的SQL语句

    50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...

随机推荐

  1. 安装Windows2008操作系统 - 初学者系列 - 学习者系列文章

    Windows2008这款服务器操作系统不知道有多少服务器在使用,毕竟前面有经典的2003系统,后续有2012操作系统.具体就不讨论这些了.下面就对Windows2008服务器操作系统的安装进行介绍. ...

  2. java这些东西发展(4)-------无穷time of error

    今天,有些郁闷的心情啊.空指针下午折磨.到现在为止仍然没有得到解决,专家的招募结果没拿到,我们必须继续自己的,进而改变一点点一点点地找到它,但现在我不想搞,准备回家,这浪费了一个多小时,之前记录的下一 ...

  3. 实例学习SSIS(五)--理论介绍SSIS

    原文:实例学习SSIS(五)--理论介绍SSIS 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS( ...

  4. Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter

    上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...

  5. 将Model实体类对象作为WebService接口参数(转)

    转自:http://www.cnblogs.com/fengyishou/archive/2009/02/27/1399281.html 关于web服务的有关基础知识,看了基本书,但是不敢在这里乱说, ...

  6. DDD实践(一)

    DDD实践切入点(一) 前两篇:大型系统的支撑,应用系统开发思想的变迁 之前大致说了使用DDD的前期准备,现在可以真正开始实践了,以我刚刚结束的一个简单的经典DDD方式的项目为例子,当然由于比较简单, ...

  7. 编写Windows Service 备忘

    项目需求要做一个定时扫表,将按条件查询到的数据插入或者更新到另一个数据表的需求,老大要求让用window service来做 因为以前没有做过,把这次的经历写出来.作为备忘. 1.什么是windows ...

  8. Memcached快递上手之C#

    Memcached快递上手之C# Memcached是开源高性能分布式缓存组件,目前已经广泛应用各类互联网领域. 具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Rub ...

  9. 工作日志(DJ)

    ajax传参:  $.post("MAIN_JSHandler.ashx",                               { "retInfoCode&q ...

  10. linux终端下文件不同颜色的含义

    偶然注意到在终端下花花绿绿的目录显示效果,开始以为只是些特效,后来研究了一下,原来其中有些规律性的东西,总结如下: 蓝色表示目录: