您可以将 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. cocos2d-x3.0 经常使用绘图方法

    HelloWorldScene.h 例如,下面的代码被添加: protected: void onDraw(const kmMat4 &transform, bool transformUpd ...

  2. Hudson安装配置、部署应用及分析

    一.部署环境 机器:一台linux虚机,内存1G,操作系统CentOS release 5.6,硬盘100G. 实验应用:乐学方舟后台部署(非正式环境) 应用环境:apache-tomcat-7.0. ...

  3. linux sendmail 邮件服务器架设(fedora 8)

    linux sendmail 邮件服务器架设(fedora 8) 2009-01-22 17:27 3316人阅读 评论(2) 收藏 举报 邮件服务器linuxprotocolscaching测试lo ...

  4. C++ Builder中splitter控件的使用方法简介

    C++ Builder提供了一个Splitter控件来实现对用户窗口的分割,只需拖动该控件到窗体上,就可以实现窗口的任意分割.把面板控件(Panel)拖动到窗体上,设置其对齐方式,然后把Splitte ...

  5. Socket一些常用的方法封装

    public class SocketHelper { /// <summary> /// 功能描述:得到一个实例对象 /// </summary> /// <retur ...

  6. Linux脚本学习随记

    把文件件的归属转移到其他用户上chown [-R] 账号名称:用户组名称 文件或目录 在进行hadoop分布式部署的时候,需要生成密钥对具体的操作如下先在master的hadoop目录下创建.sshm ...

  7. C语言实现进制转换——超图面试题

    递归:递归的原理,就是自己调用自己本身.存在一个顺序的问题,如果在递归前的是顺序执行,递归后的是逆序执行,如下: void gogogo() { //递归之前 gogogo(); //递归之后 } 递 ...

  8. python学习之路二(字符串,字典,序列和元组)

    # -*- coding: utf-8 -* ''' Created on 2013-7-26 @author: lixingle ''' #!/usr/bin/python import math# ...

  9. MongoDB学习(翻译6)

    接上篇.... 字段或属性层次的序列化选项 有许多种让你控制序列化的方式,上一节通过约定方法来控制序列化,你也可以通过代码配置或者成员映射或者使用特性来控制你的序列化,下面说道的序列化的各个方面,我们 ...

  10. jQuery获取checkbox选中项等操作及注意事项

    jQuery获取checkbox选中项等操作及注意事项 今天在做一个项目功能时需要显示checkbox选项来让用户进行选择,由于前端不是很熟练,所以做了一个简单的Demo,其中遇到一些小问题,特记录下 ...