Access一些常用的SQL语句

时间:2022-09-03 12:59:28

您可以将 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语句大全完整版--详解&plus;实例 &lpar;存&rpar;

    常用经典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语句大全完整版--详解&plus;实例 《来自网络,很全没整理,寄存与此》

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

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

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

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

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

  7. oracle常用的SQL语句

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

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

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

  9. MySQL的一些常用的SQL语句整理

    安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦.所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版.这样就会省去很多麻烦,在这里我就不再详细的介绍具体 ...

随机推荐

  1. 记录一写Android常用API

    Location.getLatitude() 纬度 Location.getLongitude() 经度 获取 运行 应用包名 顶层交互 TOP包名 主Activity //获取当前系统中 正在运行的 ...

  2. PHP mcrypt加密扩展使用总结

    在开发中,很多时候我们在前后端交互中需要对一些敏感数据进行一定的加密.PHP中有提供了mcrypt的这样一个加密扩展实现对数据的加密解密. 一.mcrypt扩展的安装 在低版本的PHP中需要在配置文件 ...

  3. always pick the choice that scares you a little

    “One of my philosophies is to always pick the choice that scares you a little. The status quo, the p ...

  4. 【C&num;学习笔记】调用C&plus;&plus;生成的DLL

    首先用vs2010建立win32项目,选择dll和空项目. 头文件add.h extern "C" __declspec(dllexport) int add(int a,int ...

  5. U-boot新手入门

    U-boot新手入门 一.编译U-boot 二.U-boot命令详解 1.帮助命令 # help autoscr -run script from memory base -print or set ...

  6. C&num; 队列和栈 线程安全

    队列是其元素以先进先出(FIFO)的方式来处理集合,先入队的元素会先读取. 栈是和队列非常类似的另一个容器,栈和队列最大的区别是后进先出(LIFO),也可以说成先进后出. 队列在现实生活中的例子数不胜 ...

  7. 配置consul为windows服务

    安装consul并配置为系统服务下载地址https://www.consul.io/downloads.html 配置系统服务1.拷贝consul.exe的目录 如:E:\Consul\consule ...

  8. MATLAB中常用的排列、组合、阶乘函数

    1.求n的阶乘,方法如下:a.factorial(n)b.gamma(n+1)c.v='n!'; vpa(v) 2.求组合(数),方法如下:a.combntns(x,m)    列举出从n个元素中取出 ...

  9. &lbrack;教程&rsqb; macOS打开原生的NTFS读写功能

    Mac本身实际上是支持原生的NTFS读写的,只不过这一功能被隐藏了,但是可以手动打开,这比第三方的的工具要安全得多,有时第三方工具可能会发生整个NTFS分区数据丢失的情况,下面是打开MAC原生NTFS ...

  10. jenkins没安装git报错

    Jenkins新建项目中源码管理使用Git时遇到如下问题: 在安装jenkins服务器上查看一下git版本,可能没有安装git  也可能是git版本太低 [root@localhost nnnnn]# ...