Access一些常用的SQL语句

汝可以将 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. 单击“开始”按钮,单击“控制面板”,然后实施下列操作有:

  2. 于分拣视图中,单击“系统跟保安”,然后单击“管理工具”。

  3. 每当藏视图中,单击“管理工具”。

  4. 双击“数据源(ODBC)”。

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

  1. 单击“继续”。
  2. 单击“系统 DSN”选项卡。
  3. 伸手执行下列操作有:

  4. 万一也都装之驱动程序定义新数据源,请单击“添加”。

  5. 要修改现有数据源的概念,请单击数据源的名目,然后单击“配置”。

  6. 根据需要转移对话框中之音讯。

至于不同选择之详细信息,请单击每个对话框中之“帮助”按钮。

在 Microsoft Windows XP 中配置 ODBC 数据源

  1. 单击“开始”按钮,单击“控制面板”,然后实施下列操作有:

  2. 当分拣视图中,单击“性能及保护”,然后单击“管理工具”。

  3. 于藏视图中,单击“管理工具”。

  4. 双击“数据源(ODBC)”。

拿面世“ODBC 数据源管理器”对话框。

  1. 单击“系统 DSN”选项卡。
  2. 请求执行下列操作有:

  3. 万一吧就装的驱动程序定义新数据源,请单击“添加”。

  4. 设改现有数据源的定义,请单击数据源的名目,然后单击“配置”。

  5. 基于需要变更对话框中的信。

至于不同选择的详细信息,请单击每个对话框中之“帮助”按钮。

 

创办传递查询

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

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

  1. 如无亮属性表,请按 F4 来展示她。
  2. 当性表中,单击“ODBC 连接字符串”属性框,然后单击“构建”。

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

  1. 单击“计算机数据源”选项卡。
  2. 每当“数据源名称”下,单击于前方的进程遭到布置的服务器计算机的名称,然后单击“确定”。

 注释   如果没安排 ODBC
数据源,请单击“新建”,然后实施创建新数据源向导中的步骤。

  1. 要是提示而登录,请输入用户称及密码。
  2. 比方提示您于连年字符串中保留密码,请不要保存您的密码。

勿保留密码有助于提高而的服务器数据库系统的安全性。

  1. 每当“SQL 视图”对象选择项卡中键入查询。

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

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

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

  注释  

  某些传递查询不会见回到数据。例如,您或许要运行一个休向 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;

 

相关文章